1、集群配置完成
配置步骤详情请见:https://blog.csdn.net/qq_42578036/article/details/108456640
2、时间同步及 zookeeper 配置完成
配置步骤详情请见:https://blog.csdn.net/qq_42578036/article/details/108467085
3、修改core-site.xml文件
fs.defaultFS hdfs://ns <!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop201:2181,hadoop202:2181,hadoop203:2181</value>
</property>
<!-- 超级用户 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<!-- 超级用户组 -->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.native.lib</name>
<value>false</value>
<description>Should native hadoop libraries, if present, be used.
</description>
</property>
4、修改hdfs-site.xml文件
dfs.replication 3 <!-- 指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns</value>
</property>
<!-- ns下面有两个NameNode,分别是hadoop201,hadoop202 -->
<property>
<name>dfs.ha.namenodes.ns</name>
<value>hadoop201,hadoop202</value>
</property>
<property>
<name>dfs.ha.namenodes.hadoop201</name>
<value>hadoop201</value>
</property>
<property>
<name>dfs.ha.namenodes.hadoop202</name>
<value>hadoop202</value>
</property>
<!-- hadoop201的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.hadoop201</name>
<value>hadoop201:9000</value>
</property>
<!-- hadoop201的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns.hadoop201</name>
<value>hadoop201:50070</value>
</property>
<!-- hadoop202的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.hadoop202</name>
<value>hadoop202:9000</value>
</property>
<!-- hadoop202的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns.hadoop202</name>
<value>hadoop202:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop201:8485;hadoop202:8485;hadoop203:8485/ns</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/zhihua/data/journaldata</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
5、修改yarn-site.xml文件
yarn.resourcemanager.ha.enabled true <!-- 指定RM的集群名 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster_id</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>hadoop201</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop202</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>hadoop201:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>hadoop202:8088</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop201:2181,hadoop202:2181,hadoop203:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!-- 日志聚集功能使用 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
6、格式化主节点主机
格式化主节点前确保集群处于关闭状态;
如果格式化失败(如下),就先启动JournalNode;
启动JournalNode:(三台主机均要启动)
hadoop-daemons.sh start journalnode
1
7、复制tmp文件夹
格式化成功后,把主节点新生成的tmp文件夹,复制到备用节点
8、启动整个集群
start-all.sh
1
9、启用备用节点主机的resourcemanager
yarn-daemon.sh start resourcemanager
1
10、主节点启动zkfc
(1)先格式化 zkfc
hdfs zkfc -formatZK
1
(2)启动 zkfc
hadoop-daemon.sh start zkfc
1
(3)启动历史服务(可在任意机器启动)
mr-jobhistory-daemon.sh start historyserver
1
11、Hadoop HA 模式搭建成功