hadoopHA集群搭建

目录

A.修改配置文件

1. 修改hadoop-env.sh

2. 修改 core-site.xml

3.修改hdfs-site.xml

4.将修改的文件分发到其他节点

B.zookeeper 集群搭建

1. 下载安装包

2.上传文件夹,解压缩,

3.修改/etc/profile 文件

4.修改配置文件

5.将安装包分发到其他节点

6. 创建myid

7.启动zookeeper

启动

1. 所有节点关闭 journalnode

 2. 所有jnn 节点开启 journalnode 服务

3.格式化主节点

4.启动 namenode 节点

5.从节点同步数据

6.zookeeper集群注册(初始化)

7.启动集群

高可用验证:

问题:

yarn 集群


高可用集群搭建:

HA集群的搭建是基于,hadoop全分布集群的基础上搭建的:

全分布集群搭建:https://blog.csdn.net/yang_zzu/article/details/108171482

 

zk---> zookeeper : namenode 节点单点故障自动切换

zkfc---->ZKFailoverController(ZKFC)是一个新组件,它是一个ZooKeeper客户端,它还监视和管理NameNode的状态

zkfc:1.运行状况监视

          2.ZooKeeper会话管理

          3.基于ZooKeeper的选举

JournalNode(JNN)-----》ANN(active namenode) 和 SNN(StandbyNameNode) 通过 JNN 集群来共享信息。SNN 可以确保在集群出错时,命名空间状态已经完全同步了,为了保持 SNN 实时的与 ANN 的元数据保持一致,他们之间交互通过一系列守护的轻量级进程 JournalNode。

A.修改配置文件

1. 修改hadoop-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_261-amd64
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HADOOP_SHELL_EXECNAME=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root

 

2. 修改 core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://mycluster</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/var/yang/hadoop/ha</value>
  </property>
  <property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
  </property>
  <property>
   <name>ha.zookeeper.quorum</name>
   <value>yang101:2181,yang102:2181,yang103:2181</value>
 </property>
</configuration>

 

3.修改hdfs-site.xml

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
  </property>
  <property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>yang100,yang101</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.mycluster.yang100</name>
    <value>yang100:8020</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.mycluster.yang101</name>
    <value>yang101:8020</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.mycluster.yang100</name>
    <value>yang100:9870</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.mycluster.yang101</name>
    <value>yang101:9870</value>
  </property>

  <property>
    <!-- journalnode节点 -->
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://yang100:8485;yang101:8485;yang102:8485/mycluster</value>
  </property>
  <property>
    <!-- 故障转移代理类,固定写法 -->
    <name>dfs.client.failover.proxy.provider.mycluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>

  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
  </property>
  <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <!-- 私钥的存放地址 -->
    <value>/root/.ssh/id_rsa</value>
  </property>

  <property>
    <name>dfs.journalnode.edits.dir</name>
    <!-- journalnode数据的地址 -->
    <value>/var/yang/hadoop/ha/journalnode</value>
  </property>

  <!-- 开启namenode自动切换 -->
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>

</configuration>

4.将修改的文件分发到其他节点

scp hadoop-env.sh hdfs-site.xml core-site.xml yang101:`pwd`

 

B.zookeeper 集群搭建

1. 下载安装包

官网下载地址:

https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz

2.上传文件夹,解压缩,

3.修改/etc/profile 文件

# set java environment
JAVA_HOME=/usr/java/jdk1.8.0_261-amd64
JRE_HOME=/usr/java/jdk1.8.0_261-amd64/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
HADOOP_HOME=/app/hadoop-3.2.1
ZOOKEEPER_HOME=/app/apache-zookeeper-3.6.1-bin
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH HADOOP_HOME ZOOKEEPER_HOME PATH

重载profile 文件,将文件分发到102,103节点,然后在其他节点执行 source /etc/profile,重新加载配置文件

之前定义的是 101,102,103 节点作为zookeeper 的集群 

4.修改配置文件

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/var/yang/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
server.001=yang101:2888:3888
server.002=yang102:2888:3888
server.003=yang103:2888:3888

5.将安装包分发到其他节点

 scp -r /app/apache-zookeeper-3.6.1-bin yang103:/app/

6. 创建myid

创建的文件夹是 zoo.cfg 中配置的 dataDir=/var/yang/zookeeper

echo 001 > /var/yang/zookeeper/myid

myid 文件夹中的值对应 server 后面的值

server.001=yang101:2888:3888
server.002=yang102:2888:3888
server.003=yang103:2888:3888

7.启动zookeeper

所有zookeeper 节点都需要开启服务,然后关闭防火墙

zkServer.sh start

systemctl stop firewalld.service 

 

启动

1. 所有节点关闭 journalnode

hdfs --daemon stop journalnode 

 2. 所有jnn 节点开启 journalnode 服务

hdfs --daemon start journalnode 

3.格式化主节点

hdfs namenode -format

4.启动 namenode 节点

hadoop-daemon.sh start namenode

5.从节点同步数据

hdfs namenode -bootstrapStandby

6.zookeeper集群注册(初始化)

主节点  hdfs zkfc -formatZK

执行完之后,在zookeeper 的客户端可以看到多了一个 hadoop-ha 的文件夹

打开zookeeper 客户端 zkCli.sh

7.启动集群

start-dfs.sh

高可用验证:

分别模拟下面两种情况,会导致 namenode 主节点自动的迁移

模拟主节点宕机:hdfs --daemon stop namenode

模拟网络中断:hdfs --daemon stop zkfc

 

问题:

之前在做全分布安装的时候,数据没有清楚干净,导致我在做HA 的时候,造成 Live Nodes 节点的数量始终是0

yang100,yang101,yang102 这三个节点作为JournalNode 在启动journal 服务的时候,会进行格式化,

yang103 节点没有进行格式化处理,使得该节点还是 全分布的数据

解决方法:

1. 删除yang103 节点的 full 目录

2.停止 dfs 服务

3.开启 dfs 服务

yarn 集群

yarn集群搭建:https://mp.csdn.net/console/editor/html/108218395

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值