Hadoop HA的安装配置
来源:互联网 发布:nba2k16数据 编辑:程序博客网 时间:2024/05/19 08:45
一,HA的架构
Hadoop HA 即Hadoop的高可用,不同于普通的namenode+second namenode的模式,second namenode只能作为namenode的冷备份,当namenode挂掉后,second namenode不能自动充当namenode的角色。所以为了保证高可用性,就有了Hadoop HA的机制。
hdfs HA中即有至少有两个namenode,这儿以两个namenode为例,一个可以对外提供服务的namenode成为active namenode,待命状态的namenode成为standby namenode。
1.如何做到两个namenode的元数据的一致性呢?
将edits文件托管给稳定的第三方存放(当然,为了防止第三方挂掉,namenode本地的edits文件也是必要的),standby namenode就可以定时去第三方取edits文件放在内存中,做元素据的修改。这样就可以保证actice 和standby的数据一致性。
2.第三方用什么才能保证高可用?
第三方用的是qjournal集群,集群就可以将edits文件存放在每个机器中。并且这个集群使用zookeeper作为集群的协调,保证数据写入一半以上的机器,才为写入成功。
3.怎么做到standby在active节点挂掉自动充当active的角色呢?
这儿在每个namenode对应着一个监控进程ZKFC。在active上ZKFC使用RPC调用以判断active是否挂掉,如果挂掉,那么在zookeeper上将相应的节点删除(分布式锁),在Standby节点上的ZKFC进程就可以感知到节点删除的信息。Standby节点上的ZKFC进程感知到active节点挂掉的信息之后会向active节点发送一个杀死hdfs namenode的命令,确保active死亡,然后再向standby发送切换的指令,并向zookeeper创建节点。这样就可以让standby模式转换为active模式。
对于resourceManager的HA,因为不存在数据的一致性,所以只需要向zookeeper创建节点(获得分布式锁)即可。
二,环境准备
1.节点角色搭配(这儿是7台节点)
hadoop1:NameNode ZKFC
hadoop2:NameNode ZKFC
hadoop3:ResourceManager
hadoop4:ResourceManager
hadoop5:DataNode NodeManager zookeeper JournalNode
hadoop6:DataNode NodeManager zookeeper JournalNode
hadoop7:DataNode NodeManager zookeeper JournalNode
2.每台机器上都需要安装hadoop和jdk
3.节点之间的免密登陆,以及hosts文件的相应映射配置好
4.hadoop5,hadoop6,hadoop7上需要安装zookeeper
三,配置文件及解析
1.首先需要在hadoop-env.sh中加上HADOOP_HOME
2.core-site.xml
<!-- 这儿的bi表示两个namenode组建成的逻辑名字 --><property><name>fs.defaultFS</name><value>hdfs://bi/</value></property><!-- 指定hadoop临时目录 --><property><name>hadoop.tmp.dir</name><value>/home/hadoop/hadoopdata</value></property><!-- 指定zookeeper地址 --><property><name>ha.zookeeper.quorum</name><value>hadoop5:2181,hadoop6:2181,hadoop7:2181</value></property>
3.hdfs-site.xml
<configuration><!--指定hdfs的nameservice为bi,需要和core-site.xml中的保持一致 --><property><name>dfs.nameservices</name><value>bi</value></property><!-- bi下面有两个NameNode,分别是nn1,nn2 ,这儿的nn1,nn2也是逻辑名字,可以自己指定,但是指定后下面的也要随之改变--><property><name>dfs.ha.namenodes.bi</name><value>nn1,nn2</value></property><!-- nn1的RPC通信地址 --><property><name>dfs.namenode.rpc-address.bi.nn1</name><value>hadoop1:9000</value></property><!-- nn1的http通信地址 --><property><name>dfs.namenode.http-address.bi.nn1</name><value>hadoop1:50070</value></property><!-- nn2的RPC通信地址 --><property><name>dfs.namenode.rpc-address.bi.nn2</name><value>hadoop2:9000</value></property><!-- nn2的http通信地址 --><property><name>dfs.namenode.http-address.bi.nn2</name><value>hadoop2:50070</value></property><!-- 指定NameNode的edits元数据在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop5:8485;hadoop6:8485;hadoop7:8485/bi</value></property><!-- 指定JournalNode在本地磁盘存放数据的位置 --><property><name>dfs.journalnode.edits.dir</name><value>/home/hadoop/qjournal</value></property><!-- 开启NameNode失败自动切换 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- 配置失败自动切换实现方式 --><property><name>dfs.client.failover.proxy.provider.bi</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行--><property><name>dfs.ha.fencing.methods</name><value>sshfenceshell(/bin/true)</value></property><!-- 使用sshfence隔离机制时需要ssh免登陆 --><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!-- 配置sshfence隔离机制超时时间 --><property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value></property></configuration>
4.mapred-site.xml
<configuration><!-- 指定mr框架为yarn方式 --><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
5.yarn-site.xml
<configuration><!-- Site specific YARN configuration properties --><!-- 开启RM高可用 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 指定RM的cluster id --><property><name>yarn.resourcemanager.cluster-id</name><value>yrc</value></property><!-- 指定RM的名字 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- 分别指定RM的地址 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop3</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop4</value></property><!-- 指定zookeeper集群地址 --><property><name>yarn.resourcemanager.zk-address</name><value>hadoop5:2181,hadoop6:2181,hadoop7:2181</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>
6.slaves文件
hadoop5hadoop6hadoop7
四,启动顺序
1.先启动hadoop5,hadoop6,hadoop7的zookeeper
zkServer.sh start
2.启动hadoop5,hadoop6,hadoop7的journalnode
hadoop-daemon.sh start journalnode
3.格式化HDFS(在hadoop1或者hadoop2上执行格式化)
hdfs namenode -format
注意:格式化完成之后,为了保证两个namenode的数据一致,需要把hadoop1的namenode的数据目录复制到hadoop2的相应的目录下
4.格式化ZKFC(在hadoop1或者hadoop2上执行格式化)
hdfs zkfc -formatZK
5.启动HDFS(在hadoop1或者hadoop2上启动)
start-dfs.sh
6.启动yarn(在hadoop3或者hadoop4上启动)
start-yarn.sh
注意:在hadoop3上启动yarn后,hadoop4上没有resourcemanager进程,需要自动启动,指令如下
yarn-daemon.sh start resourcemanager
五,验证安装
- Hadoop HA的安装配置
- hadoop HA环境安装配置
- Hadoop 配置及hadoop HA 的配置
- hadoop-HA Hadoop 2.2.0版本HDFS的HA配置
- Hadoop集群之Hive HA 安装配置
- Hadoop+Hbase+Spark集群配置—Hadoop HA安装
- Hadoop 2.2.0 HDFS的HA配置
- HA机制下的Hadoop配置
- 关于Hadoop-HA的配置---从零开始
- hadoop学习笔记-HA的配置
- Hadoop HA MR1配置
- hadoop-ha配置
- Hadoop HA 配置
- hadoop配置HA原理
- Hadoop的HA机制(Zookeeper集群+Hadoop集群)配置记录
- CHD4B1(hadoop-0.23)实现NameNode HA安装配置
- CHD4B1(hadoop-0.23)实现NameNode HA安装配置
- CHD4B1(hadoop-0.23)实现NameNode HA安装配置
- Android设计模式之(14)----模板模式
- ue4中导入substance designer sbsar格式材质
- Leetcode--50. Pow(x, n)
- lambda表达式及jdk异步
- 学习记录
- Hadoop HA的安装配置
- h5做app和原生app有什么区别
- 部署项目避免本地js、css缓存
- 目标视觉跟踪
- 差分输出和单端输出的区别
- 智能门铃 一款能让你随时知道门口状况的智能视频门铃
- caioj1042:递归12(平分石头)
- java编程技巧中的多态,类型向上转型
- 代理服务器和反向代理服务器区别