hadoop,zookeeper HA

active/standby  描述的是namenode节点的状态

leaderfollow  zookeeper  zkServer.sh 的状态

 

hdfs(文件系统)  namenode : 50070

datenode : 启动的节点(50.96G) 

                                  启动:sbin/hadoop-daemon.sh   start/stop name/datenode

                                  上传:  bin/hdfs dfs –put 文件(路径) /   (位置)

                                  下载:               -get  /(文件路径)

                                  删除:           -rm –R  /  (文件或文件夹路径)

                                 

 

hadoop (集群):  start/stop-all.sh    启动/停止所有以.sh结尾的进程 

                          

mapreduce:  hadoop  jar  jar包名称 /user/input/      (要执行的文件路径)  

  /user/phoneout1/   (输出文件路径)

 

yarn(资源管理)  resourcemananger : 8088

nodemananger

启动:sbin/yarn-daemon.sh  start/stop   resource/nodemanager

 

 

Zookeeper(集群) : 监视hadoop集群运行,zookeeper集群主要功能是实现少量数据(namenode里的元数据)的分布式同步管理

                                          

集群规划:在3个节点上配置zookeeper,一个leader两个follow

  启动/停止:bin/zkServer.sh start/stop

 

High Available(高可用)

已知导致服务可靠性不高的原因是namenode节点宕(dang:四声,死机)机,那么怎么才能避免这个namenode节点宕机呢?

一个容易想到的解决方案是部署两台namenode节点,形成主备模式(active/standby模式),这样一旦active节点宕机,standby节点立即切换到active模式。

在各个NameNode节点上启动先在哪台机器启动,哪个机器的NameNode就是Active NameNode

sbin/hadoop-daemon.sh start zkfc (从standByactive

 

 

响应客户端请求的是active节点,因此只有active节点保存了最新的元数据。元数据分为两部分,一部分是刚写入新的元数据(edits),另一部分是合并后的较旧的(fsimage)。HA机制解决同步问题的方法是将active节点新写入的edits元数据放在zookeeper集群上(zookeeper集群主要功能是实现少量数据的分布式同步管理),standby节点在active节点正常情况下只需要将zookeeper集群上edits文件同步到自己的fsimage中就可以。

       hadoop框架为这个集群专门写了个分布式应用qjournal(依赖zookeeper实现),实现qjournal的节点称为journalnode。

 

 

如何避免脑裂?

      standby namenode感知到主用节点出现异常后并不会立即切换状态,zkfc会首先通过ssh远程杀死active节点的 namenode进程(kill -9 进程号)。但是(这样还不行,惊讶),如果kill指令没有执行成功咋办??如果在一段时间内没有收到执行成功的回执,standby节点会执行一个自定义脚本,尽量保证不会出现脑裂问题!这个机制在hadoop中称为fencing(包括ssh发送kill指令,执行自定义脚本两道保障

猜你喜欢

转载自blog.csdn.net/tianshi2020/article/details/83153964