Hadoop3.x高可用集群,HDFS、Yarn集群
集群环境规划
将整个 ha 搭建完成后,集群将形成以下模样
| hadoop101 | hadoop102 | hadoop103 |
|---|---|---|
| NameNode | NameNode | NameNode |
| JournalNode | JournalNode | JournalNode |
| DataNode | DataNode | DataNode |
| Zookeeper | Zookeeper | Zookeeper |
| ZKFC | ZKFC | ZKFC |
| ResourceManager | ResourceManager | ResourceManager |
| NodeManager | NodeManager | NodeManager |
1.配置 core-site.xml
fs.defaultFS
hdfs://mycluster
hadoop.tmp.dir
/opt/ha/hadoop-3.3.1/data
hadoop.http.staticuser.user
hadoop
ha.zookeeper.quorum
hadoop101:2181,hadoop102:2181,hadoop103:2181
ipc.client.connect.max.retries
20
ipc.client.connect.retry.interval
5000
2.配置 hdfs-site.xml
dfs.namenode.name.dir
file://${hadoop.tmp.dir}/name
dfs.datanode.data.dir
file://${hadoop.tmp.dir}/data
dfs.journalnode.edits.dir
${hadoop.tmp.dir}/jn
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2,nn3
dfs.namenode.rpc-address.mycluster.nn1
hadoop101:8020
dfs.namenode.rpc-address.mycluster.nn2
hadoop102:8020
dfs.namenode.rpc-address.mycluster.nn3
hadoop103:8020
dfs.namenode.http-address.mycluster.nn1
hadoop101:9870
dfs.namenode.http-address.mycluster.nn2
hadoop102:9870
dfs.namenode.http-address.mycluster.nn3
hadoop103:9870
dfs.namenode.shared.edits.dir
qjournal://hadoop101:8485;hadoop102:8485;hadoop103:8485/mycluster
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
dfs.ha.fencing.ssh.private-key-files
/home/usr1/.ssh/id_rsa
dfs.ha.automatic-failover.enabled
true
3.配置 yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
cluster-yarn1
yarn.resourcemanager.ha.rm-ids
rm1,rm2,rm3
yarn.resourcemanager.hostname.rm1
hadoop101
yarn.resourcemanager.webapp.address.rm1
hadoop101:8088
yarn.resourcemanager.address.rm1
hadoop101:8032
yarn.resourcemanager.scheduler.address.rm1
hadoop101:8030
yarn.resourcemanager.resource-tracker.address.rm1
hadoop101:8031
yarn.resourcemanager.hostname.rm2
hadoop102
yarn.resourcemanager.webapp.address.rm2
hadoop102:8088
yarn.resourcemanager.address.rm2
hadoop102:8032
yarn.resourcemanager.scheduler.address.rm2
hadoop102:8030
yarn.resourcemanager.resource-tracker.address.rm2
hadoop102:8031
yarn.resourcemanager.hostname.rm3
hadoop103
yarn.resourcemanager.webapp.address.rm3
hadoop103:8088
yarn.resourcemanager.address.rm3
hadoop103:8032
yarn.resourcemanager.scheduler.address.rm3
hadoop103:8030
yarn.resourcemanager.resource-tracker.address.rm3
hadoop103:8031
yarn.resourcemanager.zk-address
hadoop101:2181,hadoop102:2181,hadoop103:2181
yarn.resourcemanager.recovery.enabled
true
yarn.resourcemanager.store.class
org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLAS
SPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
4.配置mapred-site.xml
mapreduce.framework.name
yarn
最后配置works
hadoop101
hadoop102
hadoop103
分发配置好的 hadoop 环境到其他节点
5.启动 HDFS-HA 集群
前提先启动zookeeper集群
1) 初始化 HA 在 Zookeeper 中状态:
[hadoop@hadoop101 ~]$ hdfs zkfc -formatZK
2) 在各个 JournalNode 节点上,输入以下命令启动 journalnode 服务
[hadoop@hadoop101 ~]$ hdfs --daemon start journalnode
[hadoop@hadoop102 ~]$ hdfs --daemon start journalnode
[hadoop@hadoop103 ~]$ hdfs --daemon start journalnode
3)在[nn1]上,对其进行格式化, 并启动
[hadoop@hadoop101 ~]$ hdfs namenode -format
[hadoop@hadoop101 ~]$ hdfs --daemon start namenode
4)在[nn2]和[nn3]上,同步 nn1 的元数据信息
[hadoop@hadoop102 ~]$ hdfs namenode -bootstrapStandby
[hadoop@hadoop103 ~]$ hdfs namenode -bootstrapStandby
5)启动[nn2]和[nn3]
[hadoop@hadoop102 ~]$ hdfs --daemon start namenode
[hadoop@hadoop103 ~]$ hdfs --daemon start namenode
6) 启动 HDFS 服务:
[hadoop@hadoop101 ~]$ start-dfs.sh
7) 启动 YARN
[hadoop@hadoop101 ~]$ start-yarn.sh
8)查看hdfs是否 Active
[hadoop@hadoop101 ~]$ hdfs haadmin -getServiceState nn1
- ? 也可以去 zkCli.sh 客户端查看 Namenode 选举锁节点内容,去到zookeeper目录下:
[hadoop@hadoop101 zookeeper-3.5.7]$ bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] get -s /hadoop-ha/mycluster/ActiveStandbyElectorLock
myclusternn2 hadoop102 ?>(?>
cZxid = 0xd00000004
ctime = Tue Feb 15 20:18:04 CST 2022
mZxid = 0xd00000004
mtime = Tue Feb 15 20:18:04 CST 2022
pZxid = 0xd00000004
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x200002da9ac0000
dataLength = 33
numChildren = 0
9) 查看yarn服务状态
[hadoop@hadoop101 ~]$ yarn rmadmin -getServiceState rm1
- 可以去 zkCli.sh 客户端查看 ResourceManager 选举锁节点内容:
[hadoop@hadoop101 zookeeper-3.5.7]$ bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] get -s /yarn-leader-election/cluster-yarn1/ActiveStandbyElectorLock
cluster-yarn1rm3
cZxid = 0xe0000012c
ctime = Tue Feb 15 22:19:03 CST 2022
mZxid = 0xe0000012c
mtime = Tue Feb 15 22:19:03 CST 2022
pZxid = 0xe0000012c
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x20000014a5e0012
dataLength = 20
numChildren = 0