关闭

Hadoop集群完全分布式搭建教程-CentOS

标签: hadoop完全分布式模式集群虚拟机
4341人阅读 评论(2) 收藏 举报
分类:

       本篇在前一篇《Hadoop单机模式和伪分布式搭建教程》的基础上完成完全分布式的搭建,所以本篇的前提是已经按照之前的教程完成了伪分布式的安装。注意截图中的slaver应该是slave,哈哈,搭建的时候多打了r,没弄清slaver和slave的区别。

1. 说明

       本教程中电脑为8G内存,故而将使用四个节点作为集群环境,其中一个为master3个为slave(分别是slave1slave2slave3、master节点将仅为namenode存在,而slave节点是datanode),这样也算是比较标准的一个集群了。集群最后启动运行的时候8G内存不够了,崩溃了(原因可能是我设置虚拟机的内存是1.5G,可以考虑改成1G试试),所以建议大家学习弄个1slave或者2个就可以了...视自己的情况而定....

2. 克隆虚拟机

右键虚拟机-->管理-->克隆,打开克隆向导,然后一路next,直至选择克隆类型为完整克隆

 

输入虚拟机的名称为slave1,并且选择一个合适的虚拟机位置,点击完成即可。

 

同理:再克隆一个slave2

 

结果图:

 

 

       通过上面的步骤,每台虚拟机中都已经搭建了一个伪分布式的Hadoop,但是除了master外,其他的节点上的/usr/local/hadoop目录我们在后面会将其删除,然后将/usr/local/hadoop目录拷贝到每台slave节点上。如果是在实体机上面,那么需要给每个机器按照Hadoop单机模式和伪分布式搭建教程CentOS中1所做的准备工作做一遍。

 

Hadoop 集群的安装配置大致为如下流程:

    1. 选定一台机器作为 Master

    2. 在 Master 节点上配置 hadoop 用户、安装 SSH server、安装 Java 环境

    3. 在 Master 节点上安装 Hadoop,并完成配置

    4. 在其他 Slave 节点上配置 hadoop 用户、安装 SSH server、安装 Java 环境

    5. 将 Master 节点上的 /usr/local/hadoop 目录复制到其他 Slave 节点上

    6. 在 Master 节点上开启 Hadoop

 

3. 系统配置调整

        因为我们是复制过来的虚拟机,需要对每个虚拟机的主机名以及Hosts文件进行编辑和修改,然后建立它们之间的互通。

 

1) 首先通过XShell建立与虚拟机之间的联系,通过远程来控制每台虚拟机。

 



2) 然后分别修改它们的主机名和/etc/hosts文件,hosts文件是用来进行域名解析,这里我们只配置主机名和IP地址之间的映射。

 

        对应上面的角色,分别将主机名修改为master,slave1,slave2,slave3。为了可以立刻生效同时永久修改主机名,我们需要执行以下两个步骤:

vim /etc/sysconfig/network #这种方法是永久修改,必须重启才生效
hostname master	 #临时修改,立刻生效

 

 

修改集群中每台机器的/etc/hosts,其中参数是ip地址和主机名,集群有几个Host就几个,我们只有四个节点,故4个,这个配置文件集群中每台机器都一样。

 

 

检查配置,步骤如下:

1、确认主机名

       uname -n

2、确认IP地址

       hostname --ip-address

3、确保集群中的节点互相连通,

       ping master

 

4. 建立集群之间的SSH 无密码登录

这一步呢,切换到Hadoop用户下,删除掉~/.ssh文件夹内的所有内容,然后重新生成dsa密钥。每台机器步骤如下:

 

 

再在~/.ssh目录下执行下面的命令,完了之后通过ssh localhost检验一下:

 

ssh-keygen -t dsa                 # 会有提示,都按回车就可以
cat id_dsa.pub >> authorized_keys   # 加入授权
chmod 600 ./authorized_keys       # 修改文件权限,如果不改,无法通过,原因好像是cent os的权限验证比较严格

当所有机器都重新配置好了之后,下面将建立它们之间的SSH无密码登录:

 

具体步骤(以master无密码登录slaver为例):

首先将master生成的公匙用scp命令传到所有的slaver上(以下命令是在master上执行

scp ~/.ssh/id_dsa.pub hadoop@slave1:/home/hadoop/.ssh/m_id_dsa.pub
scp ~/.ssh/id_dsa.pub hadoop@slave2:/home/hadoop/.ssh/m_id_dsa.pub
scp ~/.ssh/id_dsa.pub hadoop@slave3:/home/hadoop/.ssh/m_id_dsa.pub

然后再用hadoop登入slave1/2/3,将公匙加入到授权中,此时再从master上访问slvaer1/2/3即可无需密码了。(以下命令是在slave上执行

cat ~/.ssh/m_id_dsa.pub >> ~/.ssh/authorized_keys

 

 

同理,

Ø 对于s1来说,必须可以ssh master,ssh slave2,ssh slave3

scp ~/.ssh/id_dsa.pub hadoop@master:/home/hadoop/.ssh/s1_id_dsa.pub
scp ~/.ssh/id_dsa.pub hadoop@slave2:/home/hadoop/.ssh/s1_id_dsa.pub
scp ~/.ssh/id_dsa.pub hadoop@slave3:/home/hadoop/.ssh/s1_id_dsa.pub
 
cat ~/.ssh/s1_id_dsa.pub >> ~/.ssh/authorized_keys

Ø 对于s2来说,必须可以ssh master,ssh slave1,ssh slave3

scp ~/.ssh/id_dsa.pub hadoop@master:/home/hadoop/.ssh/s2_id_dsa.pub
scp ~/.ssh/id_dsa.pub hadoop@slave1:/home/hadoop/.ssh/s2_id_dsa.pub
scp ~/.ssh/id_dsa.pub hadoop@slave3:/home/hadoop/.ssh/s2_id_dsa.pub
 
cat ~/.ssh/s2_id_dsa.pub >> ~/.ssh/authorized_keys

Ø 对于s3来说,必须可以ssh master,ssh slave1,ssh slave2

scp ~/.ssh/id_dsa.pub hadoop@master:/home/hadoop/.ssh/s3_id_dsa.pub
scp ~/.ssh/id_dsa.pub hadoop@slave2:/home/hadoop/.ssh/s3_id_dsa.pub
scp ~/.ssh/id_dsa.pub hadoop@slave1:/home/hadoop/.ssh/s3_id_dsa.pub
 
cat ~/.ssh/s3_id_dsa.pub >> ~/.ssh/authorized_keys

配置完了之后,检查确保集群中的所有节点都可以互相SSH无密码登录。

 

5. 配置集群/完全分布式环境

        集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项: slavescore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml 

 

1. 文件 slaves,将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅作为 NameNode 使用。

 

本教程让 Master 节点仅作为 NameNode 使用,因此将文件中原来的 localhost ,加入三行内容,分别是slave1,slave2,slave3

 

2. 修改core-site.xml文件

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
    </property>
</configuration>

3. 修改hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

4. 文件 mapred-site.xml (可能需要先重命名,默认文件名为 mapred-site.xml.template),然后配置修改如下:

mv mapred-site.xml.template mapred-site.xml  #修改文件名称

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>
</configuration>

5. 修改yarn-site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>


配置好后,将 Master 上的 /usr/local/Hadoop 文件夹复制到各个节点上(首先要将slave上的/usr/local/hadoop文件夹删除,分别在slave1/2/3上执行rm -rf /usr/local/hadoop)。因为之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。在 Master 节点上执行:

cd /usr/local/hadoop
rm -rf ./tmp/*
rm ./logs/*
cd ..   #返回/usr/local目录下
tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制
cd ~/
scp ./hadoop.master.tar.gz slave1:/home/hadoop  #传输数据


首先在slave1上执行(需要root用户):

tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R hadoop:hadoop /usr/local/hadoop

同理,slave2/3

 

首次启动需要在Master节点执行NameNode格式化:

hdfs namenode -format


在启动集群之前需要关闭centos 的防火墙:

service iptables stop   # 关闭防火墙服务
chkconfig iptables off  # 禁止防火墙开机自启,就不用手动关闭了


接着可以启动 hadoop 了,启动需要在 Master 节点上进行:

start-dfs.sh  #启动HDFS进程

可以看到master上有namenodesecondaryNameNode的进程

 

Slave上有datanode的进程

 

 

start-yarn.sh  #启动计算平台

 

 

mr-jobhistory-daemon.sh start historyserver #启动jobhistoryserver来实现web查看作业的历史运行情况


缺少任一进程都表示出错。另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 ,则说明集群启动成功。例如我这边一共有 3个 Datanodes

 

很不幸......由于8G内存不够,VMWare崩溃了,截图也丢了,但是通过上面的可以看到,集群已经配置成功了,下面我重新设置一下,取消一个datanode,然后再次启动一下集群,hadoop就是有这种特性,那我只启动slave1slave2来看看。可以看到虽然我配置了3datanode,但是此时活动的只有2datanode

 

也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://192.168.25.128:50070/IPmasterIP地址。如果不成功,可以通过启动日志排查原因。

 


 

 

执行以下命令将Hadoop的安装包发送到Hdfs上,查看HDFS的状态:

hadoop fs -mkdir -p /user/hadoop
hadoop fs -put hadoop-2.6.0.tar.gz /user/hadoop

 

 

6. 执行分布式实例

cp /usr/local/hadoop/etc/hadoop/* ./input/
cd ~/
hadoop fs -mkdir -p /user/input
hadoop fs -put ./input/* /user/input
hadoop fs -ls /user/input

 

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /user/input /user/output 'dfs[a-z.]+'

 

显示mapreduce job的进度


 

MR作业的输出结果

 

 

关闭 Hadoop 集群也是在 Master 节点上执行的:

stop-yarn.sh
stop-dfs.sh
mr-jobhistory-daemon.sh stop historyserver


此外,同伪分布式一样,也可以不启动 YARN,但要记得改掉 mapred-site.xml 的文件名。

 

OK,到这里一个完全分布式的Hadoop集群就搭建完成了!!!接下来你就可以在这个上面玩耍了,虚拟机上面需要注意自己的内存,学习一下完全分布式的搭建,根据自己的电脑配置,可以选择在实验的时候运行伪分布式还是完全分布式,伪分布式利于程序的调试,并且对资源消耗小。本教程只是是满足基本运行需求的配置,并没有对集群进任何优化,所以如果对优化比较有兴趣的童鞋,欢迎你们分享,我也想学学。

4
0
查看评论

Hadoop2.7.3完全分布式集群搭建和测试

这几天在学习Hadoop相关的东西,前些时候,搭建了单机和伪分布式的集群。但是在搭建完全分布式集群的时候遇到很多问题,网上找到很多文章,感觉都有些差别,因此,再次汇总一下,把我的详细的搭建过程记录下来。 参考了很多篇文章:http://www.w2bc.com/Article/19645  ...
  • XiaoXIANGZI222
  • XiaoXIANGZI222
  • 2016-10-08 15:38
  • 27847

hadoop学习之hadoop2.8.0完全分布式集群安装

转载自:http://blog.csdn.net/peace1213/article/details/51334508 本文主要讲解Hadoop完全分布式的搭建,使用vm建立三个相同配置的主机进行搭建。本文讲解所有详细步骤希望对大家有用。 全部软件下载百度云链接:失效请评论告诉我密...
  • Happy_wu
  • Happy_wu
  • 2017-04-19 14:28
  • 12551

Hadoop2.7.2之集群搭建(三台)

如果你还没有虚拟机,请参考:http://blog.csdn.net/uq_jin/article/details/51355124 如果你还没有试过单机模式,请参考:http://blog.csdn.net/uq_jin/article/details/51451995集群规划 主机名 ...
  • u010435203
  • u010435203
  • 2016-05-27 12:43
  • 9068

Hadoop单机、伪分布式集群搭建(十分详细)

下面我就一边搭建一边写怎么搭建Hadoop伪分布模式。 1.下载jdk并安装 去官网下就可以了,下完之后把文件移到/opt/Java下 [plain] view plain copy   guo@guo:~/下载$ mv ...
  • XiaoXIANGZI222
  • XiaoXIANGZI222
  • 2016-09-25 16:08
  • 2227

VM+CentOS+hadoop2.7搭建hadoop完全分布式集群

写在前边的话:        最近找了一个云计算开发实习生的工作,本以为来了会直接做一些敲代码,处理数据的活,没想到师父给了我一个课题“基于质量数据的大数据分析”,NameNode问题来了首先要做的就是搭建这样一个平台,毫无疑问,底层采用hadoop集群,在此...
  • Gamer_gyt
  • Gamer_gyt
  • 2016-07-25 15:57
  • 13037

Hadoop生态系统搭建(1)——Ubuntu16.04环境搭建 Hadoop 2.7.0 全分布式环境

1. 系统环境Ubuntu 16.04 vmware hadoop 2.7.0 java 1.8.0_111master:192.168.19.128 slave1:192.168.19.129 slave2:192.168.19.1302. 部署步骤2.1 Basic Requireme...
  • Mark_LQ
  • Mark_LQ
  • 2016-11-28 21:46
  • 5646

hadoop分布式搭建(+zookeeper,6台机器)

前期准备(这里使用的centOS6,hadoop2.2.0【这是64位的hadoop2.2.0的安装包和源码包下载地址:http://download.csdn.net/detail/vinsuan1993/9812599】): 1.修改Linux主机名 2.修改IP 3.修改主机名和IP的映射关系...
  • Vinsuan1993
  • Vinsuan1993
  • 2017-04-13 11:18
  • 428

hadoop学习之hadoop完全分布式集群安装

注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流。转载请注明来自: http://blog.csdn.net/ab198604/article/details/8250461   要想深入的学习hadoop数据分析技术,首要的任务是必须要将hadoop集群环境搭建起...
  • ab198604
  • ab198604
  • 2012-12-03 10:52
  • 113991

hadoop3.0 分布式搭建/安装

最近打算尝试在服务器上安装hadoop3.0,由于服务器上本来搭建好hadoop2.6,并且是用root用户安装。我不打算删除原来的hadoop2.6, 所以准备新建两个用户,hadoop2.6及hadoop3.0;将位于/usr/local/hadoop/目录下的hadoop2.6移到hadoop...
  • u010499619
  • u010499619
  • 2016-10-21 20:30
  • 7848

Hadoop分布式搭建配置(详细)

Hadoop分布式搭建配置(详细) 一、前期准备 1、hadoop-0.20.203.0rc1.tar.gz(官网下载) 2、VMware7 (官网下载) 3、jdk-6u25-linux-i586.bin (官网下载)  4、 Ubuntu 10.04 (ISO) ...
  • matraxa
  • matraxa
  • 2012-01-05 20:24
  • 7406
    个人资料
    • 访问:1406179次
    • 积分:5732
    • 等级:
    • 排名:第5391名
    • 原创:62篇
    • 转载:14篇
    • 译文:0篇
    • 评论:872条
    博客专栏
    最新评论