0


Hadoop HA ( 3.3.6 ) 保姆级教程,你值得拥有!

Hadoop HA 配置需要的前置条件

  • jdk (此处使用的版本是 jdk-1.8,jdk的环境变量自己写)
  • zookeeper(此处使用的版本是 zookeeper-3.8.3)
  • hadoop (此处使用的版本是 hadoop-3.3.6)
  • 此处配置的hadoop集群是三个节点,分别是master(主节点)、slave1(从节点)、slave2(从节点)
  • 关于(主机 ip 映射、免密登录服务、)此处省略
  • 以下配置文件出现的某些路径,可进行对应的修改
  • 切记!!!一定要记得关闭防火墙

Zookeeper 配置

看这个帖子

https://blog.csdn.net/2203_75584759/article/details/140295222?spm=1001.2014.3001.5501

Hadoop HA 配置

先在每台节点配置环境变量

vim /etc/profile
# HADOOP_HOMEexportHADOOP_HOME=/opt/module/hadoop
exportPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATHexportHADOOP_MAPRED_HOME=$HADOOP_HOMEexportHADOOP_COMMON_HOME=$HADOOP_HOMEexportHADOOP_HDFS_HOME=$HADOOP_HOMEexportYARN_HOME=$HADOOP_HOME

配置hadoop相关文件

  • 在 yarn_env.sh 以及 hadoop_env.sh 中添加JAVA_HOME、和相应组件需要的权限
  • hadoop3以上的版本,需要配置权限

1、

vim hadoop-env.sh
exportJAVA_HOME=/opt/module/jdk
exportHDFS_JOURNALNODE_USER=root
exportHDFS_NAMENODE_USER=root
exportHDFS_DATANODE_USER=root
exportHDFS_ZKFC_USER=root

2、

vim yarn-env.sh
exportJAVA_HOME=/opt/module/jdk
exportYARN_RESOURCEMANAGER_USER=root
exportYARN_NODEMANAGER_USER=root
  • 对其 hdfs、yarn 文件进行配置

3、

vim core-site.xml
<!-- 把多个 NameNode 的地址组装成一个集群 mycluster --><property><name>fs.defaultFS</name><value>hdfs://hdfscluster</value></property><!-- 指定 hadoop 运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop/data</value></property><!-- 指定 zkfc 要连接的 zkServer 地址 --><property><name>ha.zookeeper.quorum</name><value>master:2181,slave1:2181,slave2:2181</value></property><!-- 用户角色配置,不配置此项会导致web页面报错 --><property><name>hadoop.http.staticuser.user</name><value>root</value></property><!-- 对root用户不进行限制 --><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><!-- 对root群组不限制 --><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>

4、

vim hdfs-site.xml
<!-- 副本数配置 --><property><name>dfs.replication</name><value>2</value></property><!-- NameNode 数据存储目录 --><property><name>dfs.namenode.name.dir</name><value>/opt/module/hadoop/data/namedir</value></property><!-- DataNode 数据存储目录 --><property><name>dfs.datanode.data.dir</name><value>/opt/module/hadoop/data/datadir</value></property><!-- JournalNode 数据存储目录 --><property><name>dfs.journalnode.edits.dir</name><value>/opt/module/hadoop/data/editsdir</value></property><!-- 完全分布式集群名称 --><property><name>dfs.nameservices</name><value>hdfscluster</value></property><!-- 所有的namenode列表 --><property><name>dfs.ha.namenodes.hdfscluster</name><value>nn1,nn2</value></property><!-- NameNode 的 RPC 通信地址 --><property><name>dfs.namenode.rpc-address.hdfscluster.nn1</name><value>master:8020</value></property><property><name>dfs.namenode.rpc-address.hdfscluster.nn2</name><value>slave1:8020</value></property><!-- NameNode 的 http 通信地址 --><property><name>dfs.namenode.http-address.hdfscluster.nn1</name><value>master:50070</value></property><property><name>dfs.namenode.http-address.hdfscluster.nn2</name><value>slave1:50070</value></property><!-- 指定 NameNode 元数据在 JournalNode 上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://master:8485;slave1:8485;slave2:8485/hdfscluster</value></property><!-- 访问代理类:client 用于确定哪个 NameNode 为 Active --><property><name>dfs.client.failover.proxy.provider.hdfscluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 --><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!-- 使用隔离机制时需要 ssh 秘钥登录--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!-- 启用 nn 故障自动转移 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property>

5、

vim yarn-site.xml
<property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><property><name>yarn.resourcemanager.cluster-id</name><value>yarncluster</value></property><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><property><name>yarn.resourcemanager.hostname.rm1</name><value>master</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>slave1</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>${yarn.resourcemanager.hostname}:8088</value></property><property><name>hadoop.zk.address</name><value>master:2181,slave1:2181,slave2:2181</value></property>

6、

vim mapred-site.xml
<!-- 指定MapReduce程序运行在Yarn上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 历史服务器端地址 --><property><name>mapreduce.jobhistory.address</name><value>master:10020</value></property><!-- 历史服务器web端地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value></property>

7、

vim workers
master
slave1
slave2

集群启动前:

1、每个节点都要启动journalnode ==>

hdfs --daemon start journalnode

注:在每个节点启动完后,去查看journalnode的日志,等三个节点的日志都出现了红色方框内的内容,再进行下一步操作

2、在master节点格式化namenode ==>

hdfs namenode -format

在这里插入图片描述

注:出现红色方框内的内容,既 namenode 格式化成功

3、 在master节点格式化zk ==>

hdfs zkfc -formatZK

在这里插入图片描述

注:出现红色方框内的内容,既 zkfc 格式化成功

启动集群:

  • 在master节点启动hadoop集群 ==> start-all.sh
  • 检查 slave1 中有没有namenode进程,若没有namenode进程,先在slave1同步namenode的信息 ==> hdfs namenode -bootstrapStandby 然后在slave1上启动备用namenode进程 ==> hdfs --daemon start namenode在这里插入图片描述

注:出现红色方框内的内容,既为成功同步 namenode 信息

  • 若slave1中没有resourceManager进程 ==> yarn-daemon.sh start resourcemanager

hdfs ha、yarn ha

成功启动,则对应的节点,有对应的进程:

master、slave1:

  • NameNode
  • JournalNode
  • NodeManager
  • ResourceManager
  • DataNode
  • DFSZKFailoverController
  • QuorumPeerMain

slave2:

  • NodeManager
  • JournalNode
  • DataNode
  • QuorumPeerMain

本文转载自: https://blog.csdn.net/2203_75584759/article/details/140277852
版权归原作者 操练小白 所有, 如有侵权,请联系我们删除。

“Hadoop HA ( 3.3.6 ) 保姆级教程,你值得拥有!”的评论:

还没有评论