你好哈哈哈 發表於 2023-5-30 00:00:00

在CentOS中搭建Hadoop的详细步骤

<p>
        搭建说明:第一次搭建 hadoop 的小伙伴,请严格按照文章中的软件环境和步骤搭建,不一样的版本都可能会导致问题。</p>
<p>
        <span><strong>软件环境:</strong></span></p>
<p>
        虚拟机:vmware pro14</p>
<p>
        linux:centos-6.4(下载dvd版本即可)</p>
<p>
        jdk:openjdk1.8.0 (强力建议不要使用 oracle 公司的 linux 版本的 jdk)</p>
<p>
        hadoop:2.6.5(下载地址)</p>
<p>
        虚拟机的安装和linux系统的安装这里就省略了,可以参照网上的教程安装,一般没什么大问题,需要注意的是记住这里你输入的用户密码,下面还要用,如下图所示。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/23a0dbce1588532b7bf7e483b0c33708.jpg"></p>
<p>
        设置用户密码.jpg</p>
<p>
        <span><strong>用户选择</strong></span></p>
<p>
        使用虚拟机安装好系统后,可以看到登录界面,如下图所示。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/3192e2b332784d298cf356d38cf69429.jpg"></p>
<p>
        选择 <strong>other</strong> ,在 <strong>username</strong> 输入框中输入 <strong>root</strong> ,回车,再在 <strong>password</strong> 输入框中输入你创建用户时密码。root 用户是安装 centos 自动创建的超级用户,但密码和你安装系统时创建的普通用户密码是一样的。</p>
<p>
        平时在使用 centos 时,并不推荐使用 root 用户,因为该用户具有整个系统的最高权限,使用该用户可能会导致严重的后果,但前提是你对 linux 很熟,才会误操作。搭建 hadoop 的大数据平台,使用普通用户,很多命令需要 sudo 命令来获取 root 用户的权限,比较麻烦,所以索性直接使用 root 用户。</p>
<p>
        <span><strong>安装ssh</strong></span></p>
<p>
        集群、单节点模式都需要用到 ssh 登陆(类似于远程登陆,你可以登录某台 linux 主机,并且在上面运行命令)。</p>
<p>
        首先确保你的 centos 系统可以正常的上网,你可以查看桌面右上角的网络图标,若显示红叉则表明未联网,可点击选择可用网络,也可以使用桌面左上角的火狐浏览器输入网址验证是否网络连接正常。如果还是无法上网,检查虚拟机的设置,选用 nat 模式,或者上网百度解决。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/ce6a0a3abc3f7db78a9d35676a3ec20e.jpg"></p>
<p>
        检查网络状况.jpg</p>
<p>
        确定网络连接正常后,打开 centos 的终端,可在 centos 的桌面点击鼠标右键,选择 <strong>open in terminal</strong> ,如下图所示。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/51bb3bb735769f176a0c994c93a3fa43.jpg"></p>
<p>
        打开终端.jpg</p>
<p>
        一般情况下,centos 默认已安装了 ssh client、ssh server,可打开终端执行如下命令进行检验:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_608222">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">rpm -qa | </code><code class="bash functions">grep</code> <code class="bash functions">ssh</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        如果返回的结果如下图所示,包含了 ssh client 跟 ssh server,则不需要再安装。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/13512a4db2c60c9a8876bc276bcc497b.jpg"></p>
<p>
        查看ssh是否已安装.jpg</p>
<p>
        如果需要安装,则可以通过 yum 这个包管理器进行安装。(安装过程中会让你输入 ,输入 y 即可)</p>
<p>
        <strong>注意:</strong>命令是单条执行的,不是直接把两条命令粘贴过去。</p>
<p>
        终端中的粘贴可通过鼠标点击右键选择 <strong>paste</strong> 粘贴,也可通过快捷键 【shift + insert】粘贴。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_746565">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">yum </code><code class="bash functions">install</code> <code class="bash plain">openssh-clients</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">yum </code><code class="bash functions">install</code> <code class="bash plain">openssh-server</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        ssh安装完成后,执行如下命令测试一下 ssh 是否可用(ssh首次登陆提示 yes/no 信息,输入 yes 即可,然后按照提示输入 root 用户的密码,这样就登录到本机了),如下图所示。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/91e9329a7840ed7c46c169185540e45b.jpg"></p>
<p>
        首次登录ssh.jpg</p>
<p>
        但这样登陆需要每次都输入密码,我们需要配置成ssh无密码登陆比较方便。</p>
<p>
        首先输入 <code>exit</code> 退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_758382">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">exit</code>       <code class="bash comments"># 退出刚才的 ssh localhost</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash functions">cd</code> <code class="bash plain">~/.</code><code class="bash functions">ssh</code><code class="bash plain">/      </code><code class="bash comments"># 若提示没有该目录,请先执行一次ssh localhost</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash functions">ssh</code><code class="bash plain">-keygen -t rsa    </code><code class="bash comments"># 会有提示,都按回车即可</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash functions">cat</code> <code class="bash plain">id_rsa.pub &gt;&gt; authorized_keys </code><code class="bash comments"># 加入授权</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash functions">chmod</code> <code class="bash plain">600 .</code><code class="bash plain">/authorized_keys</code> <code class="bash comments"># 修改文件权限</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        此时再用 <code>ssh localhost</code> 命令,无需输入密码就可以直接登陆了,如下图所示。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/823cfe5cb7ef661a7f1104a8908d6272.jpg"></p>
<p>
        再次登录ssh.jpg</p>
<p>
        <span><strong>安装 java 环境</strong></span></p>
<p>
        java 环境可选择 oracle 的 jdk,或是 openjdk(可看作 jdk 的开源版本),现在一般 linux 系统默认安装的基本是 openjdk,这里安装的是 openjdk1.8.0版本的。</p>
<p>
        有的 centos 6.4 默认安装了 openjdk 1.7,这里我们可以使用命令检查一下,和 windows 下的命令一样,还可以查看 java_home 这个环境变量的值。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_736403">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">java -version     # 查看 java 的版本</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">javac -version    # 查看编译命令 javac 的版本</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">echo $java_home    # 查看 $java_home 这个环境变量的值</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        如果系统没有安装 openjdk,我们可以通过 yum 包管理器来安装。(安装过程中会让输入 ,输入 y 即可)</p>
<p>
         </p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code95573">
        <br>
        yum install java-1.8.0-openjdk  java-1.8.0-openjdk-devel  #安装 openjdk1.8.0</div>
<p>
         </p>
<p>
        通过上述命令安装 openjdk,默认安装位置为 /usr/lib/jvm/java-1.8.0,下面配置 java_home 时就使用这个位置。</p>
<p>
        接着需要配置一下 java_home 环境变量,为了方便,直接在 ~/.bashrc 中进行设置,相当于配置的是 windows 的用户环境变量,只对单个用户生效,当用户登录后,每次打开 shell 终端,.bashrc 文件都会被读取。</p>
<p>
        修改文件,可以直接使用 vim 编辑器打开文件,也可以使用类似于 windows 记事本的 gedit 文本编辑器。</p>
<p>
        下面命令任选其一。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_469715">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">vim ~/.bashrc    # 使用 vim 编辑器在终端中打开 .bashrc 文件</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">gedit ~/.bashrc    # 使用 gedit 文本编辑器打开 .bashrc 文件</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        在文件最后面添加如下单独一行(指向 jdk 的安装位置),并 <strong>保存</strong> 。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/c5519f10410f2da483c31ba88c215ddf.jpg"></p>
<p>
        配置java_home环境变量.jpg</p>
<p>
        接着还需要让该环境变量生效,执行如下命令。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_561977">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">source ~/.bashrc    # 使变量设置生效</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        设置好后我们来检验一下是否设置正确,如下图所示。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_456877">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">echo $java_home  # 检验变量值</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">java -version</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">javac -version</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="plain plain">$java_home/bin/java -version # 与直接执行 java -version 一样</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/1565d3723f3bf368661578a5b177f58e.jpg"></p>
<p>
        检查java_home环境变量是否配置正确.jpg</p>
<p>
        这样,hadoop 所需的 java 运行环境就安装好了。</p>
<p>
        <span><strong>安装 hadoop</strong></span></p>
<p>
        在前面 <strong>软件环境</strong> 已经给出了 hadoop2.6.5 的下载地址,可以直接通过火狐浏览器打开下载,默认下载位置是在用户的 home 中的 downloads 文件夹下,如下图所示。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/c34d9d350024919e2f04191421945cdb.jpg"></p>
<p>
        下载hadoop.jpg</p>
<p>
        下载完成后,我们将 hadoop 解压到 /usr/local/ 中。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_945008">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">tar -zxf ~/下载/hadoop-2.6.5.tar.gz -c /usr/local # 解压到/usr/local目录中</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">cd /usr/local/       # 切换当前目录为 /usr/local 目录</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">mv ./hadoop-2.6.5/ ./hadoop   # 将文件夹名改为hadoop</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="plain plain">chown -r root:root ./hadoop   # 修改文件权限,root 是当前用户名</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        hadoop 解压后即可使用,输入如下命令来检查 hadoop 是否可用,成功则会显示 hadoop 版本信息。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_109951">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">cd</code> <code class="bash plain">/usr/local/hadoop</code>     <code class="bash comments"># 切换当前目录为 /usr/local/hadoop 目录</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">.</code><code class="bash plain">/bin/hadoop</code> <code class="bash plain">version     </code><code class="bash comments"># 查看 hadoop 的版本信息</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        或者直接输入 <code>hadoop version</code> 命令也可以查看。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_455903">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">hadoop version       # 查看 hadoop 的版本信息</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/5e0d6df49fb224c3c2ca56fc2d3bd0d6.jpg"></p>
<p>
        查看hadoop版本信息.jpg</p>
<p>
        <strong>hadoop 安装方式有三种,分别是单机模式,伪分布式模式,分布式模式。</strong></p>
<p>
        单机模式:hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单 java 进程,方便进行调试。</p>
<p>
        伪分布式模式:hadoop 可以在单节点上以伪分布式的方式运行,hadoop 进程以分离的 java 进程来运行,节点既作为 namenode 也作为 datanode,同时,读取的是 hdfs 中的文件。</p>
<p>
        分布式模式:使用多个节点构成集群环境来运行hadoop,需要多台主机,也可以是虚拟主机。</p>
<p>
        <strong>hadoop 伪分布式配置</strong></p>
<p>
        现在我们就可以来使用 hadoop 运行一些例子,hadoop 附带了很多的例子,可以运行 <code>hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar</code> 看到所有的例子。</p>
<p>
        我们这里来运行一个查询的例子,将 input 文件夹作为输入文件夹,筛选当中符合正则表达式 <code>dfs+</code> 的单词,统计它的次数,将筛选结果输出到 output 文件夹中。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_821168">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">cd /usr/local/hadoop  # 切换当前目录为 /usr/local/hadoop 目录</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">mkdir ./input    # 在当前目录下创建 input 文件夹</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">cp ./etc/hadoop/*.xml ./input # 将 hadoop 的配置文件复制到新建的输入文件夹 input 中</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="plain plain">./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs+' </code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="plain plain">cat ./output/*    # 查看输出结果</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        通过命令 <code>cat ./output/*</code> 查看结果,符合正则的单词 dfsadmin 出现了 1次。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/db126eeb0275b08b2af652bfd9b166b7.jpg"></p>
<p>
        运行测试hadoop例子.jpg</p>
<p>
        若运行出错,如出现如下图提示。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/8daeb0e17da86fac788510a36715ff24.jpg"></p>
<p>
        运行hadoop例子出错.jpg</p>
<p>
        若出现提示 “warn util.nativecodeloader: unable to load native-hadoop library for your platform… using builtin-java classes where applicable”,该 warn 提示可以忽略,不影响 hadoop 正常运行。</p>
<p>
        注意:hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 output 文件夹删除。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_17542">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">rm -rf ./output  # 在 /usr/local/hadoop 目录下执行</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        测试我们的 hadoop 安装没有问题,我们可以开始设置 hadoop 的环境变量,同样在 ~/.bashrc 文件中配置。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_722568">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">gedit ~/.bashrc # 使用 gedit 文本编辑器打开 .bashrc 文件</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        在 .bashrc 文件最后面增加如下内容,注意 hadoop_home 的位置对不对,如果都是按照前面的配置,这部分可照抄。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_925020">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain"># hadoop environment variables</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">export hadoop_home=/usr/local/hadoop</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">export hadoop_install=$hadoop_home</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="plain plain">export hadoop_mapred_home=$hadoop_home</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="plain plain">export hadoop_common_home=$hadoop_home</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="plain plain">export hadoop_hdfs_home=$hadoop_home</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="plain plain">export yarn_home=$hadoop_home</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="plain plain">export hadoop_common_lib_native_dir=$hadoop_home/lib/native</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="plain plain">export path=$path:$hadoop_home/sbin:$hadoop_home/bin</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/2532cc86e1326cb41238c99f08a28824.jpg"></p>
<p>
        hadoop环境变量的配置.jpg</p>
<p>
        保存后记得关掉 gedit 程序,否则会占用终端,无法执行下面的命令,可以按 【ctrl + c】键终止该程序。</p>
<p>
        保存后,不要忘记执行如下命令使配置生效。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_176101">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">source ~/.bashrc</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 下,伪分布式需要修改2个配置文件 <strong>core-site.xml</strong> 和 <strong>hdfs-site.xml</strong> 。hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。</p>
<p>
        修改配置文件 <strong>core-site.xml</strong> (通过 gedit 编辑会比较方便,输入命令, <code>gedit ./etc/hadoop/core-site.xml</code> )。</p>
<p>
        在 <code>&lt;configuration&gt;&lt;/configuration&gt;</code> 中间插入如下的代码。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterxml" id="highlighter_108390">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="xml plain">&lt;</code><code class="xml keyword">configuration</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">name</code><code class="xml plain">&gt;hadoop.tmp.dir&lt;/</code><code class="xml keyword">name</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">value</code><code class="xml plain">&gt;file:/usr/local/hadoop/tmp&lt;/</code><code class="xml keyword">value</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">description</code><code class="xml plain">&gt;abase for other temporary directories.&lt;/</code><code class="xml keyword">description</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;/</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">name</code><code class="xml plain">&gt;fs.defaultfs&lt;/</code><code class="xml keyword">name</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">value</code><code class="xml plain">&gt;hdfs://localhost:9000&lt;/</code><code class="xml keyword">value</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;/</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="xml plain">&lt;/</code><code class="xml keyword">configuration</code><code class="xml plain">&gt;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        同样的,修改配置文件 <strong>hdfs-site.xml</strong> , <code>gedit ./etc/hadoop/hdfs-site.xml</code></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterxml" id="highlighter_301002">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="xml plain">&lt;</code><code class="xml keyword">configuration</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">name</code><code class="xml plain">&gt;dfs.replication&lt;/</code><code class="xml keyword">name</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">value</code><code class="xml plain">&gt;1&lt;/</code><code class="xml keyword">value</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;/</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">name</code><code class="xml plain">&gt;dfs.namenode.name.dir&lt;/</code><code class="xml keyword">name</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">value</code><code class="xml plain">&gt;file:/usr/local/hadoop/tmp/dfs/name&lt;/</code><code class="xml keyword">value</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;/</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">name</code><code class="xml plain">&gt;dfs.datanode.data.dir&lt;/</code><code class="xml keyword">name</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">value</code><code class="xml plain">&gt;file:/usr/local/hadoop/tmp/dfs/data&lt;/</code><code class="xml keyword">value</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;/</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="xml plain">&lt;/</code><code class="xml keyword">configuration</code><code class="xml plain">&gt;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        配置完成后,执行 namenode 的格式化。(hadoop 首次启动需要该命令)</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_207283">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">hdfs namenode -format</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        成功的话,会看到 “successfully formatted” 和 “exitting with status 0” 的提示,若为 “exitting with status 1” 则是出错。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/a833aae4b33d5abcf680d1e98a16bf44.jpg"></p>
<p>
        namenode格式化.jpg</p>
<p>
        接下来启动 hadoop。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_11118">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">start-dfs.sh  # 开启 namenode 和 datanode 进程</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        若出现如下 ssh 的提示 “are you sure you want to continue connecting”,输入 yes 即可。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/be1a63128da3fd39d8bf0123ac4da83b.jpg"></p>
<p>
        启动hadoop注意事项.jpg</p>
<p>
        启动完成后,可以通过命令 <code>jps</code> 来判断是否成功启动,若出现下面 namenode、datanode、secondarynamenode、jps 四个进程,则 hadoop 启动成功。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_341991">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">jps  # 查看进程判断 hadoop 是否启动成功</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/0da77c3b59e9f0acf9cfa8f85b3dc58b.jpg"></p>
<p>
        判断hadoop是否启动成功.jpg</p>
<p>
        成功启动后,也可以访问 web 界面 http://localhost:50070 查看 namenode 和 datanode 信息,还可以在线查看 hdfs 中的文件。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/9a9d62b39d15eb5d2347bcdc33aa8910.jpg"></p>
<p>
        hadoop正常启动web界面.jpg</p>
<p>
        <strong>启动yarn</strong></p>
<p>
        yarn 是从 mapreduce 中分离出来的,负责资源管理与任务调度。yarn 运行于 mapreduce 之上,提供了高可用性、高扩展性。(伪分布式不启动 yarn 也可以,一般不会影响程序执行)</p>
<p>
        上述通过 <code>start-dfs.sh</code> 命令启动 hadoop,仅仅是启动了 mapreduce 环境,我们可以启动 yarn ,让 yarn 来负责资源管理与任务调度。</p>
<p>
        首先修改配置文件 <strong>mapred-site.xml</strong> ,需要先将 mapred-site.xml.template 文件的重命名为 mapred-site.xml。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_990180">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml # 文件重命名</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">gedit ./etc/hadoop/mapred-site.xml         # 用gedit 文本编辑器打开</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterxml" id="highlighter_568647">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="xml plain">&lt;</code><code class="xml keyword">configuration</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">name</code><code class="xml plain">&gt;mapreduce.framework.name&lt;/</code><code class="xml keyword">name</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">value</code><code class="xml plain">&gt;yarn&lt;/</code><code class="xml keyword">value</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;/</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="xml plain">&lt;/</code><code class="xml keyword">configuration</code><code class="xml plain">&gt;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        接着修改配置文件 <strong>yarn-site.xml</strong> 。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterxhtml" id="highlighter_988148">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="xhtml plain">gedit ./etc/hadoop/yarn-site.xml # 用gedit 文本编辑器打开</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterxml" id="highlighter_391873">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="xml plain">&lt;</code><code class="xml keyword">configuration</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">name</code><code class="xml plain">&gt;yarn.nodemanager.aux-services&lt;/</code><code class="xml keyword">name</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;</code><code class="xml keyword">value</code><code class="xml plain">&gt;mapreduce_shuffle&lt;/</code><code class="xml keyword">value</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">&lt;/</code><code class="xml keyword">property</code><code class="xml plain">&gt;</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="xml plain">&lt;/</code><code class="xml keyword">configuration</code><code class="xml plain">&gt;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        然后就可以启动 yarn 了,执行 <code>start-yarn.sh</code> 命令。</p>
<p>
        注意:在启动 yarn 之前,要确保 dfs hadoop 已经启动,也就是执行过 <code>start-dfs.sh</code> 。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_417354">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">start-yarn.sh   # 启动yarn</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">mr-jobhistory-daemon.sh start historyserver # 开启历史服务器,才能在web中查看任务运行情况</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        开启后通过 <code>jps</code> 查看,可以看到多了 nodemanager 和 resourcemanager 两个进程,如下图所示。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/ec8b29b96fbb143ae1cca30448e07d75.jpg"></p>
<p>
        启动yarn.jpg</p>
<p>
        启动 yarn 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。启动 yarn 有个好处是可以通过 web 界面查看任务的运行情况: http://localhost:8088/cluster 如下图所示。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在CentOS中搭建Hadoop的详细步骤" alt="在CentOS中搭建Hadoop的详细步骤" src="https://zhuji.jb51.net/uploads/img/202305/b24d5dc10b8d7e90e2717bf86e016959.jpg"></p>
<p>
        yarn的web界面.jpg</p>
<p>
        yarn 主要是为集群提供更好的资源管理与任务调度,如果不想启动 yarn,务必把配置文件 <strong>mapred-site.xml</strong> 重命名,改成 mapred-site.xml.template,需要用时改回来就行。否则在该配置文件存在,而未开启 yarn 的情况下,运行程序会提示 “retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的错误,这也是为何该配置文件初始文件名为 mapred-site.xml.template。</p>
<p>
        关闭 yarn 的命令如下,开启是 start,关闭是 stop。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_766298">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">stop-yarn.sh</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">mr-jobhistory-daemon.sh stop historyserver</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        在平时的学习中,我们使用伪分布式就足够了。</p>
<p>
        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。</p>
<p>
        原文链接:https://www.jianshu.com/p/2627e2e1774f</p>
頁: [1]
查看完整版本: 在CentOS中搭建Hadoop的详细步骤