一、免密登录
1、生成秘钥
有三台服务器举例子 比如 flinka flinkb flinkc
举个例子,在flinkc上生成密码
ssh-keygen -t rsa
2、把公钥发给flinkb flinc flina 是的,自身也要设置免密
ssh-copy-id flinkb
3、测试是否设置成功
ssh flinka
ssh flinkb
ssh flinkc
都不用设置密码的,就可以登录!!
在flinkb flinka另外两台服务器上也这样设置
到这里免密登录结束
二、解压hadoop安装包,重命名为hadoop-3.3.0文件夹
1、配置core-site.xml
fs.defaultFS
hdfs://ns
hadoop.tmp.dir
/root/hadoop-3.3.0/tmp
ha.zookeeper.quorum
flinka:2181,flinkb:2181,flinkc:2181
2、配置hdfs-site.xml文件
dfs.replication
3
dfs.nameservices
ns
dfs.ha.namenodes.ns
nn1,nn2,nn3
dfs.namenode.rpc-address.ns.nn1
flinka:8020
dfs.namenode.http-address.ns.nn1
flinka:9870
dfs.namenode.rpc-address.ns.nn2
flinkb:8020
dfs.namenode.http-address.ns.nn2
flinkb:9870
dfs.namenode.rpc-address.ns.nn3
flinkc:8020
dfs.namenode.http-address.ns.nn3
flinkc:9870
dfs.namenode.shared.edits.dir
qjournal://flinka:8485;flinkb:8485;flinkc:8485/ns
dfs.journalnode.edits.dir
/root/hadoop-3.3.0/journal/data
dfs.ha.automatic-failover.enabled
true
dfs.client.failover.proxy.provider.ns
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
shell(true)
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
dfs.ha.fencing.ssh.connect-timeout
30000
3、配置yarn-site.xml文件
yarn.log-aggregation-enable
true
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
mycluster
yarn.resourcemanager.ha.rm-ids
rm1,rm2,rm3
yarn.resourcemanager.hostname.rm1
flinka
yarn.resourcemanager.hostname.rm2
flinkb
yarn.resourcemanager.hostname.rm3
flinkc
yarn.resourcemanager.address.rm1
flinka:8032
yarn.resourcemanager.scheduler.address.rm1
flinka:8030
yarn.resourcemanager.resource-tracker.address.rm1
flinka:8031
yarn.resourcemanager.admin.address.rm1
flinka:8033
yarn.resourcemanager.webapp.address.rm1
flinka:8088
yarn.resourcemanager.address.rm2
flinkb:8032
yarn.resourcemanager.scheduler.address.rm2
flinkb:8030
yarn.resourcemanager.resource-tracker.address.rm2
flinkb:8031
yarn.resourcemanager.admin.address.rm2
flinkb:8033
yarn.resourcemanager.webapp.address.rm2
flinkb:8088
yarn.resourcemanager.address.rm3
flinkc:8032
yarn.resourcemanager.scheduler.address.rm3
flinkc:8030
yarn.resourcemanager.resource-tracker.address.rm3
flinkc:8031
yarn.resourcemanager.admin.address.rm3
flinkc:8033
yarn.resourcemanager.webapp.address.rm3
flinkc:8088
yarn.resourcemanager.recovery.enabled
true
yarn.resourcemanager.store.class
org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
yarn.resourcemanager.zk-address
flinka:2181,flinkb:2181,flinkc:2181
yarn.resourcemanager.ha.automatic-failover.enabled
true
yarn.client.failover-proxy-provider
org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.connect.retry-interval.ms
2000
yarn.nodemanager.pmem-check-enabled
false
yarn.nodemanager.vmem-check-enabled
false
yarn.scheduler.minimum-allocation-mb
100
yarn.nodemanager.resource.memory-mb
16384
3、启动Zookeeper
zkServer.sh start
zkServer.sh status
4、启动journalnode服务
4.1、在三台服务器上运行
hdfs --daemon start journalnode
4.2、在主节点flinka上
hdfs namenode -format
启动namenode
hdfs --daemon start namenode
4.3、在其他的节点上同步namenode并且启动namenode
hdfs namenode -bootstrapStandby
hdfs --daemon start namenode
4.4、启动三个节点的datanode
hdfs --daemon start datanode
4.5、测试namenode是否故障转移,kill掉Active的节点,看看是否存在其他的Active
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
hdfs haadmin -getServiceState nn3
5、在leader上格式化
hdfs zkfc -formatZK
7、关闭所有的 stop-all.sh
8、开启所有的 start-all.sh
9、测试yarn集群的故障转移是否可用
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2
yarn rmadmin -getServiceState rm3
查看哪个是Active 然后Kill掉,看看会不会出现一个Active,若能出现,说明故障转移成功,否则失败!!!!