(11)Hadoop 2.6.1 集群部署---手工切换HA
2017-12-15 20:37
441 查看
引言
搭建Hadoop261 集群
1 修改hostname
2 建立hostname和ip的映射关系
3 关闭防火墙
4 SSH免密码登陆
5 安装JDK
6 hadoop261的集群部署
7 验证hadoop是否安装成功
操作系统为:
使用
接下来我将按照下表进行搭建
注:
![](http://img.blog.csdn.net/20171214213811441?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
同理在
![](http://img.blog.csdn.net/20171214213932504?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20171214213855782?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20171214213903172?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20171214213913181?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
修改
![](http://img.blog.csdn.net/20171214214413816?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
同理在
2.4
在
在
2.5 安装
解压
修改环境变量
![](http://img.blog.csdn.net/20171214215316733?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
将
重新加载各个节点的环境变量
分别在五台机器上验证Java是否安装成功
![](http://img.blog.csdn.net/20171214215749827?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2.6
将hadoop解压并且改名
修改配置文件
![](http://img.blog.csdn.net/20171214220712131?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
修改配置文件
![](http://img.blog.csdn.net/20171215201546683?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
修改配置文件
![](http://img.blog.csdn.net/20171215202737676?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
修改配置文件
![](http://img.blog.csdn.net/20171214222538479?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
修改配置文件
![](http://img.blog.csdn.net/20171214222522459?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
设置从节点的位置
![](http://img.blog.csdn.net/20171215202923323?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
将hadoop分发到hadoop2,hadoop3,hadoop4,hadoop5
启动
![](http://img.blog.csdn.net/20171215203253164?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
格式化
![](http://img.blog.csdn.net/20171215203559753?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20171215203625216?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTG92ZUNhcnBlbnRlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
从web界面查看(http://hadoop1:50070)
搭建Hadoop261 集群
1 修改hostname
2 建立hostname和ip的映射关系
3 关闭防火墙
4 SSH免密码登陆
5 安装JDK
6 hadoop261的集群部署
7 验证hadoop是否安装成功
1. 引言
在生产环境中NameNode的高可用是非常重要的,一旦
NameNode宕机,那么整合集群就不能用了,在本篇博客中就主要介绍一下
Hadoop2.6.1的
HA部署(手动切换),在本篇博客中博主使用五台干净的机器从零开始搭建
Hadoop集群环境,下面就是我使用的环境:
操作系统为:
Centos6.7
jdk的版本为:
1.7
jdk的安装路径为:
/usr/local/jdk
hadoop的版本为:
2.6.1
hadoop的安装路径为:
/usr/local/hadoop
使用
root用户进行集群搭建
接下来我将按照下表进行搭建
Hadoop集群:
HOST名称 | ip地址 | 运行的进程 |
---|---|---|
hadoop1 | 192.168.159.130 | NameNode,ResourceManger,JournalNode |
hadoop2 | 192.168.159.131 | NameNode,JournalNode |
hadoop3 | 192.168.159.132 | DataNode,NodeManger,JournalNode |
hadoop4 | 192.168.159.133 | DataNode,NodeManger |
hadoop5 | 192.168.159.134 | DataNode,NodeManger |
JournalNode进程主要用于
NameNode的数据同步。
2. 搭建Hadoop2.6.1 集群
2.1 修改hostname
在hadoop1机器上修改
hostname
//编辑文件 vim /etc/sysconfig/network //修改主机名是hadoop1,(注意hostname的大小写) hostname hadoop1 //命令行下修改hostname hostname hadoop1
同理在
hadoop2,hadoop3,hadoop4,hadoop5执行相同的命令,如下图所示
2.2 建立hostname和ip的映射关系
为了部署集群方便,因此我们建立了ip和主机名称的映射,过程如下:
修改
/etc/hosts文件
//编辑hosts文件 vim /etc/hosts //建立ip和host的映射关系 192.168.159.130 hadoop1 192.168.159.131 hadoop2 192.168.159.132 hadoop3 192.168.159.133 hadoop4 192.168.159.134 hadoop5
同理在
hadoop2,hadoop3,hadoop4,hadoop5也要建立ip和host的映射关系,过程和
hadoop1完全相同。
2.3 关闭防火墙
在hadoop集群中会经常发生 机器和机器之间的交互,为了避免因为防火墙产生的意外故障,因此我们需要将防火墙关闭,过程如下:
//关闭防火墙 service iptables stop //查看防火墙状态 service iptables status //关闭防火墙的自动运行 chkconfig iptables off
2.4 SSH
免密码登陆
ssh免密码登陆,由于要配置
HA,在
SSH免密码登录的时候需要注意两点,第一:
NameNode之间要相互可以免密码登录,第二
NameNode到
DataNode的免密码登录:
在
Hadoop1机器设置免密码登录
//创建密钥,一直点确定到结束 ssh-keygen -t rsa //设置NameNode的相互免密码登录 ssh-copy-id -i hadoop2 //设置NameNode到DataNode的免密码登录 ssh-copy-id -i hadoop3 ssh-copy-id -i hadoop4 ssh-copy-id -i hadoop5
在
Hadoop2机器设置免密码登录
//创建密钥,一直点确定到结束 ssh-keygen -t rsa //设置NameNode的相互免密码登录 ssh-copy-id -i hadoop1 //设置NameNode到DataNode的免密码登录 ssh-copy-id -i hadoop3 ssh-copy-id -i hadoop4 ssh-copy-id -i hadoop5
2.5 安装JDK
解压jdk,并修改名称
//将jdk解压到/usr/local tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local/ //进入到/usr/local cd /usr/local //修改文件夹的名称 mv jdk1.7.0_45 jdk
修改环境变量
//修改配置文件 vim /etc/profile //需要添加的内容 export JAVA_HOME=/usr/local/jdk export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
将
hadoop1的
jdk复制到其他节点
//将jdk复制到hadoop2,hadoop3,hadoop4,hadoop5 scp -r /usr/local/jdk hadoop2:/usr/local/ scp -r /usr/local/jdk hadoop3:/usr/local/ scp -r /usr/local/jdk hadoop4:/usr/local/ scp -r /usr/local/jdk hadoop5:/usr/local/ //将环境变量复制到hadoop2,hadoop3,hadoop4,hadoop5 scp /etc/profile hadoop2:/etc/profile scp /etc/profile hadoop3:/etc/profile scp /etc/profile hadoop4:/etc/profile scp /etc/profile hadoop5:/etc/profile
重新加载各个节点的环境变量
//分别在hadoop1,hadoop2,hadoop3,hadoop4,hadoop5执行下面命令(在五台机器上都执行) source /etc/profile
分别在五台机器上验证Java是否安装成功
//判断Java版本 java -version
2.6 hadoop2.6.1
的集群部署
将hadoop解压并且改名//解压hadoop tar -zxvf hadoop-2.6.1.tar.gz -C /usr/local/ //进入/usr/local目录 cd /usr/local //将hadoop-2.6.1改名为hadoop mv hadoop-2.6.1 hadoop
修改配置文件
hadoop-env.sh
//修改hadoop-env.sh配置文件 vim etc/hadoop/hadoop-env.sh //修改jdk的环境变量 export JAVA_HOME=/usr/local/jdk
修改配置文件
core-site.xml
<!-- fs.defaultFS 因为要配置NameNode的HA,所以使用别名配置HDFS value:设置集群的别名,在这里我设置为hdfs://cluster1 hadoop.tmp.dir 代表hadoop的数据目录 value:这个值最好和自己hadoop的安装目录对应,此处为/usr/local/hadoop/tmp --> <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://cluster1</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> </configuration>
修改配置文件
hdfs-site.xml
<!-- dfs.replication 代表数据副本的个数 value:副本的个数不要多余datanode的个数,此处我设为3 dfs.nameservices 设置集群的命名空间,此处应和core-site的fs.defaultFS对应 value:因为和fs.defaultFS对应,所以设置为cluster1 dfs.ha.namenodes.cluster1: 设置集群中有多少个NameNode,是设置NameNode的逻辑名,可以随便取,注意cluster1和nameservices的value对应 value:在这里我设置为hadoopOne,hadoopTwo dfs.namenode.rpc-address.cluster1.hadoopOne 设置逻辑名hadoopOne的NameNode的实际rpc部署位置 value:hadoop1:9000 dfs.namenode.http-address.cluster1.hadoopOne 设置逻辑名hadoopOne的实例http端口位置 value:hadoop1:50070 dfs.namenode.rpc-address.cluster1.hadoopTwo 设置逻辑名hadoopTwo的实例rpc端口位置 value:hadoop2:9000 dfs.namenode.http-address.cluster1.hadoopTwo 设置逻辑名hadoopTwo的实例http端口位置 value:hadoop2:50070 dfs.ha.automatic-failover.enabled.cluster1 设置Hadoop的切换是否为自动的? value:因为我们是手工切换,所以设置为false dfs.namenode.shared.edits.dir 指定cluster1的两个NameNode共享edits文件目录时,使用的JournalNode集群信息,配置JournalNode信息 value:我将JournalNode配置在hadoop1,hadoop2,hadoop3上面 dfs.journalnode.edits.dir: 指定JournalNode集群在对NameNode的目录进行共享时,自己存储数据的磁盘路径 value:最好和自己hadoop的目录对应,此处我设置为/usr/local/hadoop/journal dfs.ha.fencing.methods NameNode切换的方式 value:使用ssh进行切换,所以设置为sshfence dfs.ha.fencing.ssh.private-key-files 使用ssh通信时用的密钥存储的位置 value:这里需要设置自己当前用户的ssh密钥地址,因为我时root用户,所以使用/root/.ssh/id_rsa dfs.client.failover.proxy.provider.cluster1 cluster1出故障时,哪个实现类负责执行故障切换 value:默认使用org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider --> <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.nameservices</name> <value>cluster1</value> </property> <property> <name>dfs.ha.namenodes.cluster1</name> <value>hadoopOne,hadoopTwo</value> </property> <property> <name>dfs.namenode.rpc-address.cluster1.hadoopOne</name> <value>hadoop1:9000</value> </property> <property> <name>dfs.namenode.http-address.cluster1.hadoopOne</name> <value>hadoop1:50070</value> </property> <property> <name>dfs.namenode.rpc-address.cluster1.hadoopTwo</name> <value>hadoop2:9000</value> </property> <property> <name>dfs.namenode.http-address.cluster1.hadoopTwo</name> <value>hadoop2:50070</value> </property> <property> <name>dfs.ha.automatic-failover.enabled.cluster1</name> <value>false</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/cluster1</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/usr/local/hadoop/journal</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <property> <name>dfs.client.failover.proxy.provider.cluster1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> </configuration>
修改配置文件
yarn-site.xml
<!-- yarn.resourcemanager.hostname 代表ResourceManger的安装地址 value:我们将ResourceManger部署到hadoop1上面 yarn.nodemanager.aux-services reducer取数据的方式 value:方式是mapreduce_shuffle --> <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>
修改配置文件
mapred-site.xml
//首先修改模板文件为配置文件 mv mapred-site.xml.template mapred-site.xml
<!-- 通知框架MR使用YARN --> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
设置从节点的位置
//编辑slaves文件 vim slaves //slaves的内容为: hadoop3 hadoop4 hadoop5
将hadoop分发到hadoop2,hadoop3,hadoop4,hadoop5
scp -r /usr/local/hadoop hadoop2:/usr/local scp -r /usr/local/hadoop hadoop3:/usr/local scp -r /usr/local/hadoop hadoop4:/usr/local scp -r /usr/local/hadoop hadoop5:/usr/local
启动
journalnode集群
//分别在hadoop1,hadoop2,hadoop3上启动journalnode hadoop/sbin/hadoop-daemon.sh start journalnode
格式化
NameNode并启动集群
//在Hadoop1上格式化集群 hadoop/bin/hdfs namenode -format //在Hadoop1上启动NameNode,此时NameNode默认是standby状态 hadoop/sbin/hadoop-daemon.sh start namenode //在hadoop2上格式化集群 hadoop/bin/hdfs namenode -bootstrapStandby //在hadoop2上启动NameNode,此时NameNode默认是standby状态 hadoop/sbin/hadoop-daemon.sh start namenode //手动切换NameNode的状态(注意是使用的逻辑名切换) hadoop/bin/hdfs haadmin -failover --forceactive hadoopOne hadoopTwo //在NameNode(hadoop1或者hadoop2)上执行,启动datanode hadoop/sbin/hadoop-daemons.sh start datanode //在NameNode(hadoop1或者hadoop2)上执行,启动resourcemanager和nodemanager hadoop/sbin/start-yarn.sh start resourcemanager
2.7 验证hadoop是否安装成功
使用命令验证//查看java进程 jps
从web界面查看(http://hadoop1:50070)
相关文章推荐
- (12)Hadoop 2.6.1 集群部署---自动切换HA
- (9)Hadoop 2.6.1 集群部署——未配置HA
- Hadoop学习11--Ha集群配置启动
- Hadoop大数据框架研究(2)——Hadoop的HA高可用性集群环境部署
- hadoop搭建HA集群之后不能自动切换namenode
- hadoop--HA分布式集群部署步骤总结
- Hadoop2.7.0集群的NameNode在HA下如何切换active和standby状态
- CentOS6.5环境部署Hadoop2.8.1集群(HA)
- Centos 6.5 下hadoop2.5.2的HA集群原理讲解以及详细配置(自动切换)
- hadoop2.6.4 搭建HA集群之后不能自动切换namenode
- hadoop集群HA模式的切换尝试初识
- 部署hadoop2.7.2 集群 基于zookeeper配置HDFS HA+Federation
- hadoop2.7.3+HA+YARN+zookeeper高可用集群部署
- linux上部署hadoop集群 HA-QJM篇
- Centos 6.5 下hadoop2.5.2的HA集群原理讲解以及详细配置(手动切换)
- 从0开始部署hadoop HDFS的HA集群,使用zk实现自动容灾
- Hadoop大数据框架研究(3)——Spark的HA高可用性集群环境部署
- 一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)
- hadoop-2.4.1 HA 分布式集群安装部署
- hadoop学习【11】——hadoop-2.4.1集群真实环境部署文档