hadoop HA高可用集群搭建
作者:互联网
首先,高可用集群是建立在zookeeper搭建没有问题的前提下来完成的,没有搭建好zookeeper的,先搭好才可以做以下操作。
一:前期准备(只需要在主节点master上完成)
1.拍摄快照
想拍就拍,不想拍算了,建议还是拍一个,毕竟万一搭不好,还可以回到你这个状态,记得给快照加个备注,以防忘记你这个快照是干嘛的。最好关机状态下拍。
2.删除完全分布式集群
rm -rf /usr/local/src/hadoop
3.重新解压一个新的hadoop并重命名
tar -zvxf /opt/software/hadoop-2.6.0-cdh5.14.2.tar.gz -C /usr/local/src/
mv /usr/local/src/hadoop-2.6.0-cdh5.14.2/ /usr/local/src/hadoop/
4.创建文件夹,并赋予权限
mkdir -p /usr/local/src/hadoop/hdfs/data
mkdir -p /usr/local/src/hadoop/hdfs/name
mkdir -p /usr/local/src/hadoop/tmp
chmod 777 /usr/local/src/hadoop/hdfs/data
chmod 777 /usr/local/src/hadoop/hdfs/name
chmod 777 /usr/local/src/hadoop/tmp
二:hadoop的配置
该步骤请用notepad++连接master进行
路径为/usr/local/src/hadoop/etc/hadoop/
Hadoop-HA部署组要修改core-site.xml和hdfs-site.xml两文件
1.1core.site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://nsv</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/src/hadoop/tmp</value>
</property>
<property>
<name>ha.zookeeper.session-timeout.ms</name>
<value>3000</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
1.2hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/src/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/src/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>nsv</value>
</property>
<property>
<name>dfs.ha.namenodes.nsv</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.nsv.nn1</name>
<value>master:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.nsv.nn1</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.nsv.nn2</name>
<value>slave1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.nsv.nn2</name>
<value>slave1:50070</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/nsv</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.nsv</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/src/hadoop/journal</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
1.3mapred-site.xml
这里没有原文件的记得先复制一份
cp /usr/local/src/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/src/hadoop/etc/hadoop/mapred-site.xml
然后再在notepad++里面写入
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>slave1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>slave1:19888</value>
</property>
1.4yarn-site.xml
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>slave1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slave2</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>slave1:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>slave2:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
1.5slaves
mater
slave1
slave2
1.6hadoop-env.sh
把
export JAVA_HOME=${JAVA_HOME}
改为
export JAVA_HOME=/usr/local/src/java
1.7把hadoop文件传到slave1和slave2中
在master主机下
scp -r /usr/local/src/hadoop/ slave1:/usr/local/src/
scp -r /usr/local/src/hadoop/ slave2:/usr/local/src/
二:首次启动hadoop顺序
2.1设置免密登录
这个请参考别人的,如果已经设置好免密登录的请接着看。
2.2启动zookeeper
分别在master,slave1,slave2三台服务器上启动zookeeper
zkServer.sh start
然后三台主机分别用jps查看各项进程
然后再查看一下三台运行状态
zkServer.sh status
master或者slave1或者slave2都可能出现follower或者leader,不用管那个是这样follower和leader,只要有这么一行就行
2.3启动journalnode
分别在master,slave1,slave2三台服务器上启动journalnode
hadoop-daemon.sh start journalnode
2.4创建命名空间
在master主节点上穿件zkfc命名空间(只需在主节点上)
hdfs zkfc -formatZK
2.5启动两个namenode所在服务器上zkfc
根据节点分布图分别在master和slave1上启动zkfc
hadoop-daemon.sh start zkfc
2.6在主节点master上namenode格式化
在master服务器上
hadoop namenode -format
2.7启动master上namenode节点
在master上执行以下命令
hadoop-daemon.sh start namenode
然后jps查看进程确认master的namenode已启动
2.8在备namenode节点同步住namenode节点格式化文件
在slave1服务器执行以下命令,将主节点格式化文件拷贝过来
hdfs namenode -bootstrapStandby
2.9 启动备namenode
在slave1下启动namenode
hadoop-daemon.sh start namenade
用jps查看确认slave1的namenode也已启动
2.10启动datanode
启动master,slave1,slave2三台服务器上datanode
先在master下输入以下指令
hadoop-daemons.sh start datanode
这个指令可将三台机器上的datanode都打开
用jps分别在三台机器上查看datanode是否成功启动
若没有启动,则哪个没启动就在哪个节点输入命令
hadoop-daemon.sh start datanode
此命令和上个命令少个“s”
2.11启动yarn
在master下输入
start-yarn.sh
用jps查看是否启动成功
2.12启动resourcemanager
分别在slave1和slave2 下输入
yarn-daemon.sh start resourcemanager
用jps分别查看是否启动成功
三:测试HA部署
分别登录master和slave1 web端界面,查看namenode状态
到此,Hadoop-HA部署已经完成!
四:关闭hadoop的高可用集群
在master下执行命令
stop-all.sh
用jps查看进程
可以看到大部分进程已经关闭
然后分别在slave1和slave2下输入
yarn-daemon.sh stop resourcemanager
最后在三台机器上分别输入
zkServer.sh stop
再用jps分别在三台机器上查看一下状态
这样就算全部关闭了
然后就可以关机了,
shutdown -h now
在以上都没有问题的情况下,以后再启动就不用这么麻烦了
只要先启动zookeeper
分别在三个主机下
zkServer.sh start
然后启动hdfs和yarn
在master下
start-all.sh
最后再分别启动resourcemanager
分别在slave1和slave2下
yarn-daemon.sh start resourcemanager
就行了
ok,谢谢,记得收藏加关注哦
标签:src,hadoop,master,usr,slave1,HA,local,集群 来源: https://blog.csdn.net/weixin_53404927/article/details/117448889