HADOOP HA组态
hadoop2.x的ha组态。这份文件是在那里的描述中hdfs与yarn的ha组态。
这份文件的假设是zk它已被安装并配置,事实上,任何安装。
hdfs ha组态
首先。配置core-site.xml配置文件:
<property>
在老版本号中使用mr1时,还可能使用fs.default.name来进行配置
<name>fs.defaultFS</name>
此处配置的mycluster眼下还未定义。我们须要记住这个值,
这个表示此namenode的nameServiceId,在hdfs-site中定义,此处进行引用
<value>hdfs://mycluster</value>
</property>
接下来,配置当namenode发生切换时的检查方法。当NAMENODE切换时。
须要检查并确保仅仅有一个active节点。
因此会通过SHELL或SSH的方式过去强制中止或运行检查
dfs.ha.fencing.methods
此处的可配置值sshfence/shell
sshfence
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
配置ha连接的zk的连接地址,
ha.zookeeper.quorum
one.cluster:2181,two.cluster:2181,three.cluster:2181
还能够有例如以下几个配置:
,zk的session超时时间,默认是5000ms
,hdfs的ha在zk上的存储路径 ,默认是/hadoop-ha
接下来对hdfs-site.xml进行配置
定义上面提到过的nameserviceid的值,
dfs.nameservices
此处对当前配置的ha的nameserviceid进行定义,此处的mycluster中间不能使用"_"线
mycluster
接下来定义nameserviceid中须要使用到的namenode的id,
dfs.ha.namenodes.mycluster
此处定义了两个namenode的id,也就是须要配置两具namenode,id各自是nn1与nn2
nn1,nn2
在定义完毕须要的namenode id后。
须要针对每个namenode,定义其相关的rpc,http地址。
假设有启用https,还须要设置https-address
此处的配置通过nameserviceid.namenodeid来进行配置。
dfs.namenode.rpc-address.mycluster.nn1
one.cluster:8020
dfs.namenode.rpc-address.mycluster.nn2
two.cluster:8020
dfs.namenode.http-address.mycluster.nn1
one.cluster:50070
dfs.namenode.http-address.mycluster.nn2
two.cluster:50070
接下来配置namenode edits的共享存储。在这里使用QJM来进行配置:
qjm是一个非常轻量的进程,能够直接部署到namenode或datanode中。
qjm的默认rpcport是8485,默认httpport是8480,
可通过配置dfs.journalnode.rpc-address。dfs.journalnode.http-address来改动port。
qjm必须配置为单数个(N),可以保证在(N-1)/2个正常执行时,可以正常提供服务。
dfs.namenode.shared.edits.dir
qjournal://one.cluster:8485;two.cluster:8485;three.cluster:8485/mycluster
配置QJM的存储路径 :
dfs.journalnode.edits.dir
/data/1/dfs/jn
设置针对此nameserviceid的client代理:
client请求时通过nameserviceid来做请求。
nameserviceid解析出相应的active namenode就通过此配置中的java类来完毕。
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
接下来配置namenode的自己主动故障转换。
dfs.ha.automatic-failover.enabled
true
把配置文件 拷贝到全部的节点中。这个不能忘呀。
在配置有QJM的节点中启动QJM.
进入hadooop_home/sbin文件夹
./hadoop-daemon.sh start journalnode
进入hadoop_home/bin文件夹下,运行./hdfs zkfc -formatZK在zk上进行格式化
对namenode进行format操作:
进入hadoop_home/bin文件夹,并运行例如以下命令
运行./hadoop namenode -format -clusteridhacluster命令。
./hdfs namenode-initializeSharedEdits
接下来启动主的namenode, 进入hadooop_home/sbin文件夹,运行例如以下命令
./hadoop-daemon.sh start namenode
赶往standby的namenode节点。
进入hadoop_home/bin文件夹,运行例如以下命令:
./hdfs namenode -bootstrapStandby
启动standby 的namenode,进入hadooop_home/sbin文件夹,运行例如以下命令
./hadoop-daemon.sh start namenode
接下来启动各个datanode节点。
./hadoop-daemon.sh start datanode
最后一步。启动zkfc,自己主动切换namenode节点的服务。
由于此时两个namenode都是standby的状态,须要启动zkfc来实现切换。
在主namenode与standby的namenode中进行hadoop_home/sbin文件夹。并运行例如以下命令
./hadoop-daemon.sh start zkfc
the end.
YARN RM的HA配置
配置yarn中resourcemanager的HA仅仅有在hadoop2.3.x后才引进,
yarn的ha配置相对简单,直接配置yarn-site.xml文件
rm连接失败的重试间隔
yarn.resourcemanager.connect.retry-interval.ms
2000
是否启用ha配置。默认是false.
yarn.resourcemanager.ha.enabled
true
启动自己主动故障转移,默觉得false
yarn.resourcemanager.ha.automatic-failover.enabled
true
启用一个内嵌的故障转移,与ZKRMStateStore一起使用。
yarn.resourcemanager.ha.automatic-failover.embedded
true
yarn.resourcemanager.cluster-id
rm-cluster
yarn.resourcemanager.ha.rm-ids
rm1,rm2
配置当前的rm节点。这个地方要注意。在rm1这个机器上时,配置为rm1
在rm2这台机器上时,须要配置为rm2.它们之间通过zk来实现active操作
yarn.resourcemanager.ha.id
rm1
yarn.resourcemanager.recovery.enabled
true
HA时,RMStateStore须要配置为这个值。
yarn.resourcemanager.store.class
org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
配置与zk的连接地址
yarn.resourcemanager.zk.state-store.address
localhost:2181
yarn.resourcemanager.zk-address
localhost:2181
yarn.resourcemanager.address.rm1
host1:23140
yarn.resourcemanager.scheduler.address.rm1
host1:23130
yarn.resourcemanager.webapp.https.address.rm1
host1:23189
yarn.resourcemanager.webapp.address.rm1
host1:23188
yarn.resourcemanager.resource-tracker.address.rm1
host1:23125
yarn.resourcemanager.admin.address.rm1
host1:23141
yarn.resourcemanager.address.rm2
host2:23140
yarn.resourcemanager.scheduler.address.rm2
host2:23130
yarn.resourcemanager.webapp.https.address.rm2
host2:23189
yarn.resourcemanager.webapp.address.rm2
host2:23188
yarn.resourcemanager.resource-tracker.address.rm2
host2:23125
yarn.resourcemanager.admin.address.rm2
host2:23141
启动yarn的各节点,
在主resourcemanager与standby的resourcemanager运行
yarn-daemon.sh start resourcemanager
在nodemanager运行
yarn-daemon.sh start nodemanager