搭建高可用集群 Hadoop-HA && Yarn环境 节点解析

感情迁移 提交于 2019-12-11 09:58:38

搭建高可用集群

搭建Zookeeper

准备三台相互免秘钥的虚拟机
上传zookeeper 解压 移动
在这里插入图片描述

解压zookeeper的tar包

--语法:
tar -zxf zookeeper-3.4.6.tar.gz 

移动zookper目录

--语法:
mv zookeeper-3.4.6 /opt/sxt/

修改配置文件zoo.cfg

进入zookeeper配置文件目录

--语法示例:
cd /opt/sxt/zookeeper-3.4.6/conf/

修改配置文件文件名

--语法示例:
cp zoo_sample.cfg zoo.cfg

编辑配置文件

--语法示例:
vim zoo.cfg

在这里插入图片描述
#修改zookeeper数据存放的目录
.
#设置服务器内部通信的地址和zk集群的节点


创建myid
即是在生成配置文件目录conf中创建3个myid
(内容分别是 1 2 3)

--语法示例:
mkdir -p /var/sxt/zookeeper
touch /var/sxt/zookeeper/myid
echo 1 > /var/sxt/zookeeper/myid
echo 2 > /var/sxt/zookeeper/myid
echo 3 > /var/sxt/zookeeper/myid
--分别对应主机1 2 3
--myid是zookeeper除事务之外的最优先选取leader的条件 值越大越优先

分别拷贝Zookeeper目录到主机2 主机3

--语法:
scp -r root@bd1301:/opt/sxt/zookeeper-3.4.6 /opt/sxt/

设置环境变量

--语法:
vim /etc/profile

在这里插入图片描述
分别拷贝环境变量到主机2主机3

--语法:
scp -r root@bd1301:/etc/profile /etc/profile

加载3台主机的环境变量

--语法:
source /etc/profile

测试:

开启zookeeper 集群

zkServer.sh start
--开启3台主机的zookeeper

查看zookeeper集群状态

zkServer.sh status

关闭zookeeper集群

zkServer.sh stop

关机拍摄快照

shutdown -h now 
--关机(3台主机关闭)


搭建Hadoop-HA

配置

传输 解压 拷贝

--语法:
--解压hadooptar包
tar -zxf hadoop-2.6.5.tar.gz
--移动解压文件目录 
mv hadoop-2.6.5 /opt/sxt/

修改.sh配置文件

--进入hadoop配置文件目录
cd /opt/sxt/hadoop-2.6.5/etc/hadoop/

修改.sh文件的JAVA_HOME配置

vim hadoop-env.sh 
vim mapred-env.sh
vim yarn-env.sh
--每个文件的修改项
JAVA_HOME=/usr/java/jdk1.7.0_67

修改.xml配置
修改core-site.xml

--语法:
vim core-site.xml
--配置示例:
<property>
<name>fs.defaultFS</name>
<value>hdfs://shsxt</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>bd1301:2181,bd1302:2181,bd1303:2181</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/sxt/hadoop/ha</value>
</property>

修改hdfs-site.xml

--语法:
vim hdfs-site.xml
--配置示例:
<property>
<name>dfs.nameservices</name>
<value>shsxt</value>
</property>
<property>
<name>dfs.ha.namenodes.shsxt</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.shsxt.nn1</name>
<value>bd1301:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.shsxt.nn2</name>
<value>bd1302:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.shsxt.nn1</name>
<value>bd1301:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.shsxt.nn2</name>
<value>bd1302:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://bd1301:8485;bd1302:8485;bd1303:8485/shsxt</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/var/sxt/hadoop/ha/jn</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.shsxt</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
<value>shell(true)</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>

修改slaves

--语法:
vim slaves
--配置示例:
bd1301
bd1302
bd1303

分别拷贝zookeeper目录到主机2和主机3

--语法:
scp -r root@bd1301:/opt/sxt/hadoop-2.6.5/ /opt/sxt/

修改环境变量

--语法:
vim /etc/profile

配置示例:
在这里插入图片描述
分别拷贝环境变量到主机2和主机3

--语法:
scp -r root@bd1301:/etc/profile /etc/profile

分别加载3台主机环境变量

--语法:
source /etc/profile

启动及测试

分别启动3台主机JournalNode线程

--语法:
hadoop-daemon.sh start journalnode

查看java进程

--语法:
jps

格式化主NameNode

--语法:
hdfs namenode -format

启动主节点namenode

--语法:
hadoop-daemon.sh start namenode

启动备用NameNode节点(主机2)

--语法:
hdfs namenode -bootstrapStandby

启动3台主机的Zookeeper

--语法:
zkServer.sh start

查看zookeeper服务状态

--语法:
zkServer.sh status

格式化ZKFC

--语法:
hdfs zkfc -formatZK

开启hadoop

--语法:
start-dfs.sh


Yarn环境 各节点简析

在这里插入图片描述
上图中紫色互相对应 红色互相对应 (个数匹配)

NN – namenode
	核心节点 master
	
DN – datanode
	数据节点
	
JNN – journalnode 
	namenode之间做数据同步
	
RS – resourcemanager
	交互 分配资源调度
	
NM – nodemanager
	与ResourceManager保持通信,管理 监控Container
	Container – yarn中资源的抽象
	
ZKFC - FailoverController

FailoverController 也就是ZKFC进程
健康检测:zkfc会周期性的向它监控的namenode(只有namenode才有zkfc进程,并且每个namenode各一个)发生健康探测命令,从而鉴定某个namenode是否处于正常工作状态,如果机器宕机,心跳失败,那么zkfc就会标记它处于不健康的状态;


搭建Yarn环境

需要Hadoop-HA 集群
首先保证当前集群是关闭状态

  • 切换目录
语法:
cd /opt/sxt/hadoop-2.6.5/etc/hadoop/

修改mapred-site.xml

--拷贝并改名
--语法:
cp mapred-site.xml.template mapred-site.xml

在这里插入图片描述

--编辑mapred-site.xml
--语法:
vim mapred-site.xml
--配置示例:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

修改yarn-site.xml

--语法:
vim yarn-site.xml
--配置示例:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>mr_shsxt</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>bd1303</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>bd1301</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>bd1301:2181,bd1302:2181,bd1303:2181</value>
</property>

拷贝mapred-site.xml和yarn-site.xml到主机2和主机3

--语法:
scp root@bd1301:/opt/sxt/hadoop-2.6.5/etc/hadoop/mapred-site.xml /opt/sxt/hadoop-2.6.5/etc/hadoop/

scp root@bd1301:/opt/sxt/hadoop-2.6.5/etc/hadoop/yarn-site.xml /opt/sxt/hadoop-2.6.5/etc/hadoop/

Yarn集群开启&关闭

开启集群流程

  • 启动所有主机的zookeeper
--语法:
zkServer.sh start
  • 启动dfs和yarn
--语法:
start-all.sh


--或分别启动
--语法:
start-dfs.sh
start-yarn.sh
  • 启动主机3的resourcemanager
--语法:
yarn-daemon.sh start resourcemanager

关机拍摄快照

- 关闭dfs和yarn
--语法:
stop-all.sh

--或者
stop-dfs.sh
stop-yarn.sh
  • 关闭主机3的resourcemanager
--语法:
yarn-daemon.sh stop resourcemanager
  • 关闭所有主机的zookeeper
--语法:
zkServer.sh stop
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!