前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详解使用hadoop2.6.0搭建5个节点的分布式集群(附代码)

详解使用hadoop2.6.0搭建5个节点的分布式集群(附代码)

原创
作者头像
挖掘大数据
发布2018-01-19 11:35:47
1.1K0
发布2018-01-19 11:35:47
举报
文章被收录于专栏:挖掘大数据挖掘大数据

1、前言

我们使用hadoop2.6.0版本配置Hadoop集群,同时配置NameNode+HA、ResourceManager+HA,并使用zookeeper来管理Hadoop集群

2、规划

  1、主机规划

hadoop1/ 192.168.56.131

hadoop2/ 192.168.56.132

hadoop3/ 192.168.56.133

hadoop4/ 192.168.56.134

hadoop5/ 192.168.56.135

namenode

datanode

resourcemanager

journalnode

zookeeper

Journalnode和ZooKeeper保持奇数个,最少不少于3个节点

2、软件规划

软件

版本

位数

说明

centos

6.5

64

jdk

1.7

64

稳定版本

zookeeper

3.4.6

稳定版本

hadoop

2.6.0

稳定版本

  3、用户规划

节点名称

用户组

用户

密码

hadoop1

hadoop

hadoop

123456

hadoop2

hadoop

hadoop

123456

hadoop3

hadoop

hadoop

123456

hadoop4

hadoop

hadoop

123456

hadoop5

hadoop

hadoop

123456

4、目录规划

名称

路径

所有软件目录

/usr/hadoop/app/

所有数据和日志目录

/usr/hadoop/data/

3、集群安装前的环境检查

  1、修改主机名

将5个节点分别修改为hadoop1、hadoop2、hadoop3、hadoop4、hadoop5

    修改主机名,请参考“修改主机名

  2、hosts文件检查

所有节点(hadoop1、hadoop2、hadoop3、hadoop4、hadoop5)的hosts文件都要配置静态ip与hostname之间的对应关系

    192.168.56.131 hadoop1

    192.168.56.132 hadoop2

    192.168.56.133 hadoop3

    192.168.56.134 hadoop4

    192.168.56.135 hadoop5

    具体请参考,“配置hosts文件

3、禁用防火墙

永久关闭hadoop1、hadoop2、hadoop3、hadoop4、hadoop5这5个节点的防火墙

    具体请参考,“防火墙

4、配置SSH免密码通信

下面对hadoop1节点上的root用户配置ssh

1、输入“ssh-keygen -t rsa”,生成秘钥

clip_image001
clip_image001

2、使用“cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys”命令,把公钥复制到认证文件(authorized_keys)中,如下所示

clip_image003
clip_image003

  3、确保.ssh目录的权限是700(使用chmod 700 .ssh命令修改),确保.ssh目录下所有文件(authorized_key、id_rsa、id_rsa.pub)的权限是600(使用chmod 600 .ssh/*命令修改),如下所示

clip_image004
clip_image004

  4、输入“ssh hadoop1”登录,第一次登录需要输入yes,以后就不需要输入啦

clip_image006
clip_image006

    对hadoop2、hadoop3、hadoop4、hadoop5这4个节点上的root用户也配置ssh,配置过程和上述在hadoop1上为root用户配置ssh的过程是一样

  5、在hadoop2、hadoop3、hadoop4、hadoop5这4个节点上都执行一次“cat ~/.ssh/id_rsa.pub | ssh root@hadoop1 'cat >> ~/.ssh/authorized_keys'”命令,将这4个节点上的共钥id_ras.pub拷贝到hadoop1中的authorized_keys文件中,如下

clip_image008
clip_image008
clip_image010
clip_image010
clip_image012
clip_image012
clip_image014
clip_image014

拷贝完成后,hadoop1中的authorized_keys文件内容如下

clip_image016
clip_image016

  6、将hadoop1中的authorized_keys文件分发到其他节点(hadoop2、hadoop3、hadoop4、hadoop5)上,在hadoop1上,使用scp -r ~/.ssh/authorized_keys root@主机名:~/.ssh/ 命令分发,效果如下

clip_image018
clip_image018

  7、然后测测看看,出现如下信息,表示配置成功

clip_image019
clip_image019

    说明:第一次可能会出现如下信息,输入yes就可以了,以后就不会再出现啦

clip_image021
clip_image021

5、脚本工具的使用

脚本工具已放在“shell脚本”目录下,如果安装目录有所变动,请根据需要修改

  1、在hadoop1节点上,创建/usr/hadoop/tools目录,如下所示

clip_image022
clip_image022

  2、将脚本通过rz命令上传到/usr/hadoop/tools目录

clip_image023
clip_image023

    具体使用rz命令,请参考“上传下载rz、sz命令

  3、为后缀*.sh的文件增加执行权限

clip_image024
clip_image024

    具体使用chmod命令,请参考“权限chmod命令

  4、将/usr/hadoop/tools目录配置到PATH路径中

clip_image025
clip_image025
clip_image026
clip_image026
clip_image027
clip_image027

6、集群安装前的环境配置

  1、时钟同步

    下面通过脚本对所有节点(hadoop1、hadoop2、hadoop3、hadoop4、hadoop5)进行时钟同步

    1、输入runRemoteCmd.sh "cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime" all

clip_image029
clip_image029

    2、输入runRemoteCmd.sh "ntpdate pool.ntp.org" all

clip_image031
clip_image031

      具体请参考,“时钟同步

  2、创建hadoop用户组、hadoop用户以及设置密码

    下面通过脚本在hadoop1、hadoop2、hadoop3、hadoop4、hadoop5这5个节点上分别创建hadoop用户组、hadoop用户以及设置密码123456

    1、创建hadoop用户组

clip_image032
clip_image032

    2、创建hadoop用户,并指定用户的组为hadoop

clip_image034
clip_image034

    3、为hadoop用户设置密码123456

clip_image036
clip_image036

      具体请参考,“用户相关命令

3、创建/usr/hadoop/app/、/usr/hadoop/data/目录, 并修改/usr/hadoop目录的所有人,所有组为hadoop

    下面通过脚本在hadoop1、hadoop2、hadoop3、hadoop4、hadoop5这5个节点上分别创建/usr/hadoop/app/、/usr/hadoop/data/目录,并修改/usr/hadoop目录的所有人,所有组为hadoop

    1、创建/usr/hadoop/app/目录

clip_image037
clip_image037

    2、创建/usr/hadoop/data/目录

clip_image038
clip_image038

    3、修改/usr/hadoop目录的所有人,所有组为hadoop

clip_image040
clip_image040

      具体请参考,“目录相关命令

  4、为每个节点中hadoop用户配置ssh,这里为了省事,直接拷贝相应节点中root用户的配置给对应的hadoop用户,默认hadoop家目录是/home/hadoop

clip_image041
clip_image041

    接着随意选择一个节点,这里选择hadoop4节点,以hadoop用户登录,然后进行ssh测试,如果出现如下信息,表示配置成功

clip_image042
clip_image042

7、JDK安装

  1、将本地下载好的jdk1.7,上传至hadoop1节点下的/home/hadoop/app目录中

clip_image044
clip_image044

    可以使用rz上传,请参考“上传下载rz、sz命令

  2、解压jdk

clip_image045
clip_image045
clip_image047
clip_image047

    删除安装包

clip_image048
clip_image048

  3、配置环境变量

clip_image049
clip_image049
clip_image050
clip_image050

    使配置文件生效

clip_image051
clip_image051

  4、查看jdk是否安装成功

clip_image052
clip_image052

    出现以上信息,说明配置成功

  5、通过脚本,将hadoop1中的jdk安装包分发到其他节点上

    切换到hadoop用户

clip_image053
clip_image053
clip_image054
clip_image054

    在hadoop2, hadoop3, hadoop4, hadoop5节点上,重复步骤3、4,完成jdk配置

8、Zookeeper安装

  1、上传zookeeper到hadoop1节点

    1、将本地下载好的zookeeper-3.4.6.tar.gz安装包,上传至hadoop1节点下的/home/hadoop/app目录下

clip_image056
clip_image056

      可以使用rz上传,请参考“上传下载rz、sz命令

    2、解压

clip_image057
clip_image057
clip_image059
clip_image059

    3、删除zookeeper-3.4.6.tar.gz安装包

clip_image060
clip_image060

    4、重命名

clip_image061
clip_image061

  2、修改Zookeeper中的配置文件

    1、复制一个zoo.cfg文件

clip_image062
clip_image062

    2、编辑zoo.cfg文件

clip_image063
clip_image063
clip_image064
clip_image064

  3、通过脚本deploy.sh将Zookeeper安装目录拷贝到其他节点上面,输入deploy.sh zookeeer/ /usr/hadoop/app slave,如下所示

clip_image065
clip_image065

  4、通过脚本runRemoteCmd.sh在所有节点上面创建数据目录、日志目录

    1、创建数据目录(runRemoteCmd.sh "mkdir -p /usr/hadoop/data/zookeeper/zkdata" all)

clip_image067
clip_image067

    2、创建日志目录(runRemoteCmd.sh "mkdir -p /usr/hadoop/data/zookeeper/zkdatalog" all)

clip_image069
clip_image069

  5、分别在hadoop1、hadoop2、hadoop3、hadoop4、hadoop5节点上,进入/usr/hadoop/data/zookeeper/zkdata目录下,创建文件myid,里面的内容分别填充为:1、2、3、4、5, 这里我们以hadoop1为例

    1、进入/usr/hadoop/data/zookeeper/zkdata目录

clip_image070
clip_image070

    2、编辑myid文件

clip_image071
clip_image071
clip_image073
clip_image073

    3、按esc,输入“:x”保存退出

  6、配置Zookeeper环境变量

    1、vi /etc/profile, 输入内容,然后按esc,输入”:x”,保存退出,最后,输入source /etc/profile,使其立马生效

clip_image074
clip_image074
clip_image075
clip_image075
clip_image076
clip_image076

    2、其他节点和hadoop1一样的配置

  7、查看启动情况

    1、查看hadoop1节点上Zookeeper是否配置成功

      1、启动Zookeeper

clip_image078
clip_image078

      2、出现如下信息,说明配置成功

clip_image079
clip_image079

      3、关闭Zookeeper

clip_image080
clip_image080

    2、查看所有节点上Zookeeper是否配置成功

      1、使用runRemoteCmd.sh 脚本,启动所有节点上面的Zookeeper

clip_image082
clip_image082

      2、查看所有节点上的QuorumPeerMain进程是否启动

clip_image083
clip_image083

      3、查看所有节点上Zookeeper的状态

clip_image085
clip_image085

        出现4个follower,一个leader,表示Zookeeper安装成功

9、hadoop安装

  1、上传hadoop

    1、将下载好的hadoop-2.6.0.tar.gz安装包,上传至hadoop1节点中的/usr/hadoop/app目录下

clip_image087
clip_image087

    2、解压hadoop-2.6.0.tar.gz

clip_image088
clip_image088
clip_image089
clip_image089

    3、删除hadoop-2.6.0.tar.gz安装包

clip_image090
clip_image090

    4、重命名

clip_image091
clip_image091

  2、配置hadoop家目录下的.bash_profile

clip_image092
clip_image092
clip_image093
clip_image093
clip_image094
clip_image094
clip_image095
clip_image095

  3、hdfs

    1、切换到/usr/hadoop/app/hadoop/etc/hadoop/目录下

clip_image096
clip_image096

    2、配置hdfs

      1、配置hadoop-env.sh

clip_image097
clip_image097
clip_image098
clip_image098

      2、配置core-site.xml

clip_image100
clip_image100

      3、配置hdfs-site.xml

clip_image102
clip_image102
clip_image104
clip_image104
clip_image106
clip_image106

      4、配置 slave

clip_image107
clip_image107
clip_image109
clip_image109

3、向其他节点分发hadoop安装包

clip_image111
clip_image111

    4、配置完毕后,启动hdfs

      1、启动所有节点上面的Zookeeper进程(runRemoteCmd.sh "/usr/hadoop/app/zookeeper/bin/zkServer.sh start" zookeeper)

clip_image113
clip_image113

2、启动所有节点上面的journalnode进程(runRemoteCmd.sh "/usr/hadoop/app/hadoop/sbin/hadoop-daemon.sh start journalnode" all)

clip_image115
clip_image115

      3、在hadoop1(主节点)上执行格式化

        1、切换到/usr/hadoop/app/hadoop/

clip_image116
clip_image116

        2、namenode格式化(bin/hdfs namenode -format)

clip_image117
clip_image117

        3、格式化高可用(bin/hdfs zkfc -formatZK)

clip_image118
clip_image118

        4、启动namenode

clip_image119
clip_image119

      4、与此同时,需要在hadoop2(备节点)上执行数据同步(bin/hdfs namenode -bootstrapStandby)

clip_image120
clip_image120

      5、hadoop2同步完数据后,紧接着在hadoop1节点上,按下ctrl+c来结束namenode进程。 然后关闭所有节点上面的journalnode进程(runRemoteCmd.sh "/usr/hadoop/app/hadoop/sbin/hadoop-daemon.sh stop journalnode" all)

clip_image122
clip_image122

    6、如果上面操作没有问题,我们可以一键启动hdfs所有相关进程

clip_image123
clip_image123
clip_image125
clip_image125

    7、验证是否启动成功

clip_image127
clip_image127
clip_image129
clip_image129

      出现上面信息,说明启动成功

    8、使用bin/hdfs haadmin -failover nameService1 nameService2命令,将hadoop2切换成active, hadoop1切换成standby,其中,nameService1、nameService2是在hdfs-site.xml文件中的dfs.ha.namenodes. clusterl指定的

clip_image131
clip_image131

    效果如下:

clip_image133
clip_image133
clip_image135
clip_image135

    9、上传文件至hdfs

clip_image137
clip_image137

      如果以上操作都没有问题说明hdfs配置成功

  4、yarn

    1、yarn配置

      1、配置mapred-site.xml(默认没有mapred-site.xml文件,从mapred-site.xml.template文件复制一份,改名为mapred-site.xml就可以)

clip_image139
clip_image139

      2、配置yarn-site.xml

clip_image141
clip_image141
clip_image143
clip_image143
clip_image145
clip_image145
clip_image147
clip_image147

    2、向其他节点同步yarn配置(deploy.sh etc/ /usr/hadoop/app/hadoop/ all)

clip_image148
clip_image148

    3、启动YARN

      1、在hadoop1节点上执行(sbin/start-yarn.sh)

clip_image150
clip_image150

      2、在hadoop2节点上面执行(sbin/yarn-daemon.sh start resourcemanager)

clip_image152
clip_image152

      3、查看web页面

        1、访问hadoop1的web页面,如下

clip_image154
clip_image154

        2、访问hadoop2的web页面,如下

clip_image155
clip_image155

      4、查看ResourceManager状态

clip_image156
clip_image156

        resourceManager的名字是yarn.resourcemanager.ha.rm-ids属性指定的

      5、Wordcount示例测试

clip_image158
clip_image158

        如果上面执行没有异常,说明YARN安装成功

  至此,基于hadoop2.6搭建5个节点的分布式集群搭建完毕

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档