Hadoop 2.7版本 集群环境搭建实例

本文提供了一步一步的指导,详细介绍了如何在Linux环境下搭建Hadoop 2.7版本的集群,涵盖了从知识准备、环境配置到启动集群、运行MapReduce任务的全过程。主要内容包括Hadoop的组成部分、YARN框架、集群规划以及相关配置文件的修改。通过本文,读者可以了解集群搭建的基础知识,并亲手实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.知识准备

 1.1  Hadoop 简介

            Hadoop 是开源的、可扩展的、高可用的分布式计算框架。在多数场景下,它是处理大数据问题的利器。

它包括几个部分:① Hadoop common:支持hadoop的公共工具。

                             ② HDFS:支持高吞吐量的分布式文件系统。

                             ③ YARN:作业调度,集群资源管理的框架。

                             ④ Hadoop MapReduce:基于YARN的,大规模数据并行处理的核心框架。

1.2 Hadoop 2.7.2 简介

       与上一代hadoop相比,新一代的hadoop有了新的框架 ---- YARN,它取代了以前 JobTracker,TaskTracker。

引入了ResourceManager等概念。具体简介可参考:Hadoop YARN 简介

            本次集群搭建针对的是 2.7.2 的版本。

1.3 基础概念简介

     HDFS运行时相关的守护进程是:NameNode、SecondaryNameNode、DataNode。

      NameNode:维护着文件系统树,以及文件系统树中所有的文件、文件夹的元信息。

      SecondaryNameNode:对NameNode记录的元信息根据具体配置进行一个备份。

      DataNode:根据NameNode的调度来存储、检索所存储的块(block)的信息,并定期与NameNode通信维护

                          相应的元信息。


       YARN运行时相关的守护进程是:ResourceManager、NodeManager、WebAppProxy。

       

       MapReduce 任务使用的话,可以启动 MapReduce Job History Server的进程,可供web界面查看。

     注意,不能为了搭建集群而搭建集群,先搞清楚每个部分的作用,合理规划,才能真正搭建一个有用的集群。


     此部分是一个简介,你可以通过google或访问hadoop官网了解具体的概念后,再进行集群搭建的操作。


2.环境准备


     本次集群搭建所使用的linux系统版本是:CentOS release 6.5 (Final)。


     采用三台机器(当然,你可以使用虚拟机),ip分别为 172.18.1.127,172.18.1.158,172.18.1.49


 2.1 必备环境与准备工作

     ① JDK版本: oracle 1.6.0_20 以上,本次使用的是 1.7.0_79。


      ② Hadoop 软件包下载:Hadoop软件包下载


      ③ 查看每台机器的hostname。如需修改,请参考:linux hostname的配置方法


          ④ 三台机器相互之间需要配置 SSH 互信关系,


          配置方法,请参考: linux ssh互信配置 - 服务器间免密码登陆


         ⑤ 修改/etc/hosts 文件,保证三台机器DNS互通,配置应该如下:

         

         请保证三台机器的/etc/hosts 里有相互机器的映射关系(三台机器都应该有以上的配置信息)。


         注意,实际生产配置的时候,建议使用DNS服务,此文不做讲解。


        ⑥ 请在三台机器上建立相同的目录,建立目录的用户与建立SSH互信关系时用的用户一致:

          

         其中/opt/he/test-hadoop/hadoop-2.7.2 就是 HADOOP_HOME(以下会用到)。


2.2 集群规划

       172.18.1.127:NameNode、SecondaryNameNode、ResourceManager  (主节点)

       172.18.1.158:DataNode、NodeManager  (从节点)

       172.18.1.49:    DataNode、NodeManager   (从节点)

            在实际生产中,建议把NameNode 与 SecondaryNameNode 放到两台机器上去,也不建议把

       NameNode 与 ResourceManager 放到一台机器上,本次只是做一个实例演示而已。


3.配置过程

      登陆主节点机器(172.18.1.127),进入${HADOOP_HOME}/etc/hadoop 目录下,所有需要修改的配置文件

都在这儿了,本次集群搭建几乎按照最少配置原则(大部分采用其默认配置),如需深入配置、优化,请参见:

http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/core-default.xml

http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

http://hadoop.apache.org/docs/r2.7.2/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/DeprecatedProperties.html


3.1 core-site.xml


可复制版本如下:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://你的主节点的hostname:9000</value>
        </property>

        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
</configuration>


3.2 hdfs-site.xml


可复制的版本如下:

<configuration>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/opt/he/test-hadoop/hadoop-2.7.2/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/opt/he/test-hadoop/hadoop-2.7.2/dfs/data</value>
        </property>
</configuration>


3.3 mapred-site.xml


可复制的版本如下:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>从节点的hostname:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>从节点的hostname:19888</value>
        </property>
</configuration>


3.4 yarn-site.xml


可复制的版本如下:

<pre name="code" class="html"><configuration>

<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.address</name>
                <value>主节点hostname:8032</value>
        </property>
        <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>主节点hostname:8033</value>
        </property>
        <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>主节点hostname:8034</value>
        </property>
        <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>主节点hostname:8035</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>主节点hostname:8036</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>


 

3.5 slaves

     进入slaves这个文件,输入 172.18.1.49、172.18.1.158 两台从节点的 hostname,一行输入一个。

       

3.6 同步机器配置

 scp -r hadoop-2.7.2 he@ip:/opt/he/test-hadoop/
使用scp命令,将配置好的 hadoop-2.7.2 文件夹 复制到 两台从节点 上去。

3.7 修改环境脚本

分别获取每台机器的 JAVA_HOME,修改每台机器 ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh 脚本:



至此,所有环境配置都已经准备就绪。


4.启动集群,打开web ui


以下启动命令都在${HADOOP_HOME}目录下:


① 格式化 HDFS 文件系统:


bin/hadoop namenode -format


② 一键启动hadoop集群:


sbin/start-all.sh


对的,启动集群的基本操作就完成了。检验以下,在各台机器上,输入 jps 命令,我得到的结果如下:


主节点运行jps后显示的内容(进程号  进程名称):


27657 NameNode
28433 Jps
27882 SecondaryNameNode
28090 ResourceManager


从节点运行jps后显示的内容进程号  进程名称)


44866 Jps
43332 NodeManager
43110 DataNode


打开web ui:


http://172.18.1.127:50070/

http://172.18.1.127:8036/


如果还想启动 job history,使用命令(我是在从节点上运行的这个命令):


 sbin/mr-jobhistory-daemon.sh --config /opt/he/test-hadoop/hadoop-2.7.2/etc/hadoop/ start

 historyserver


打开web ui:


http://172.18.1.158:19888/


能看到web ui,能看到进程,基本就证明集群启动成功。


5.运行一个MapReduce任务


     上一节说了,基本可以证明集群启动成功了,但是不运行一个demo,心里会没底。2.7.2这个版本自带了demo

包,所以我们可以运行一下试试,如果能够成功,就证明真的是没有问题的。


 ① 在HDFS上创建一个文件夹,如下:


     bin/hdfs dfs -mkdir /user

     bin/hdfs dfs -mkdir /user/he   (其中,he是我的用户名)


 ② 把本地系统的文件拷到 HDFS 上:


     bin/hdfs dfs -put etc/hadoop input


 ③ 运行demo:


     bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input 

output 'dfs[a-z.]+'


 ④ 查看运行结果:


     bin/hdfs dfs -cat output/*

          如果你一路以来都配置运行正确,结果如下:

      


      至此,集群搭建完毕,过程中有任何问题,欢迎与我沟通,我尽力与各位交流讨论。


      

        本文内容参考如下:

       【1】http://hadoop.apache.org/


        注意:
        如您发现本文档中有明显错误的地方,
        或者您发现本文档中引用了他人的资料而未进行说明时,请联系我进行更正。
        转载或使用本文档时,请作醒目说明。
        必要时请联系作者,否则将追究相应的法律责任。

        note:
        If you find this document with any error ,
        Or if you find any illegal citations , please contact me correct.
        Reprint or use of this document,Please explain for striking. 
        Please contact the author if necessary, or they will pursue the corresponding legal responsibility.

 

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值