当前位置: 首页 > news >正文

Hadoop部署(HA)高可用集群

一、准备工作

1.把集群全部停掉

在三台节点上都做(在xshell通过右键----> 发送输入到--->所有会话)

2..在/export/servers下创建HA目录

sudo mkdir -p /export/servers/HA

3.创建用户和设置所属主和所属组

#创建用户
sudo adduser ygre
#设置密码
sudo passwd ygre
# 创建用户组
sudo chown ygre:ygre HA

 4.将原hadoop拷贝到/export/servers/HA下(在hadoop1上即可--后面会分发)

cp -r /export/servers/hadoop /export/servers/HA

 5.将/export/servers/HA下的hadoop里面的data logs 和/tmp/* 全部删除

rm -rf data logs
sudo rm -rf /tmp/*

6.配置环境变量(将指向/export/servers/hadoop 修改成指向/export/servers/HA/hadoop)

sudo vi /etc/profile
# 修改
export HADOOP_HOME=/export/servers/HA/hadoop
# 保存退出
:wq
#初始化环境变量
source /etc/profile

 7.分发环境变量

#将系统环境变量文件分发至虚拟机Hadoop2的/etc目录
scp /etc/profile root@hadoop2:/etc 
#将系统环境变量文件分发至虚拟机Hadoop3的/etc目录
scp /etc/profile root@hadoop3:/etc 
# 分别在hadoop2和hadoop3中初始化环境变量
source /etc/profile 
# 每台节点一定要验证
echo $HADOOP_HOME

 二、配置HDFS

1.配置core-site.xml

<configuration><!-- 默认文件系统地址(HA 集群逻辑名称) --><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><!-- Hadoop 临时目录 --><property><name>hadoop.tmp.dir</name><value>/export/servers/HA/hadoop/data</value></property><!-- ZooKeeper 集群地址 --><property><name>ha.zookeeper.quorum</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property><!-- 启用自动故障转移 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- ZKFC 会话超时时间 --><property><name>ha.zookeeper.session-timeout.ms</name><value>5000</value></property>
</configuration>

2. 配置hdfs-site.xml

注意:在hadoop2.x中只能有两个NameNode,但是在hadoop3.x中可以有无限个

<configuration><!-- NameNode数据存储目录 --><property><name>dfs.namenode.name.dir</name><value>file://${hadoop.tmp.dir}/name</value></property><!-- DataNode数据存储目录 --><property><name>dfs.datanode.data.dir</name><value>file://${hadoop.tmp.dir}/data</value></property><!-- JournalNode数据存储目录 --><property><name>dfs.journalnode.edits.dir</name><value>${hadoop.tmp.dir}/jn</value></property><!-- 完全分布式集群名称 --><property><name>dfs.nameservices</name><value>mycluster</value></property><!-- 集群中NameNode节点都有哪些 --><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><!-- NameNode的RPC通信地址 --><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hadoop1:8020</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>hadoop2:8020</value></property><!-- NameNode的http通信地址 --><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>hadoop1:50070</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>hadoop2:50070</value></property><property><name>dfs.namenode.http-address.mycluster.nn3</name><value>hadoop3:50070</value></property><!-- 指定NameNode元数据在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster</value></property><!-- 访问代理类:client用于确定哪个NameNode为Active --><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><!-- 使用隔离机制时需要ssh秘钥登录--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/ygre/.ssh/id_rsa</value></property><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property>
</configuration>

 三、配置YARN

1.配置yarn-site.xml

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 启用resourcemanager ha --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 声明两台resourcemanager的地址 --><property><name>yarn.resourcemanager.cluster-id</name><value>cluster-yarn1</value></property><!--指定resourcemanager的逻辑列表--><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2,rm3</value></property>
<!-- ========== rm1的配置 ========== --><!-- 指定rm1的主机名 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop1</value></property><!-- 指定rm1的web端地址 --><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>hadoop1:8088</value></property><!-- 指定rm1的内部通信地址 --><property><name>yarn.resourcemanager.address.rm1</name><value>hadoop1:8032</value></property><!-- 指定AM向rm1申请资源的地址 --><property><name>yarn.resourcemanager.scheduler.address.rm1</name>  <value>hadoop1:8030</value></property><!-- 指定供NM连接的地址 -->  <property><name>yarn.resourcemanager.resource-tracker.address.rm1</name><value>hadoop1:8031</value></property><!-- ========== rm2的配置 ========== --><!-- 指定rm2的主机名 --><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop2</value></property><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>hadoop2:8088</value></property><property><name>yarn.resourcemanager.address.rm2</name><value>hadoop2:8032</value></property><property><name>yarn.resourcemanager.scheduler.address.rm2</name><value>hadoop2:8030</value></property><property>
<name>yarn.resourcemanager.resource-tracker.address.rm2</name><value>hadoop2:8031</value></property><!-- ========== rm3的配置 ========== --><!-- 指定rm1的主机名 --><property><name>yarn.resourcemanager.hostname.rm3</name><value>hadoop3</value></property><!-- 指定rm1的web端地址 --><property><name>yarn.resourcemanager.webapp.address.rm3</name><value>hadoop3:8088</value></property><!-- 指定rm1的内部通信地址 --><property><name>yarn.resourcemanager.address.rm3</name><value>hadoop3:8032</value></property><!-- 指定AM向rm1申请资源的地址 --><property><name>yarn.resourcemanager.scheduler.address.rm3</name>  <value>hadoop3:8030</value></property><!-- 指定供NM连接的地址 -->  <property><name>yarn.resourcemanager.resource-tracker.address.rm3</name><value>hadoop3:8031</value></property><!-- 指定zookeeper集群的地址 --> <property><name>yarn.resourcemanager.zk-address</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property><!-- 启用自动恢复 --> <property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!-- 指定resourcemanager的状态信息存储在zookeeper集群 --> <property><name>yarn.resourcemanager.store.class</name>     <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property><!-- 环境变量的继承 --><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property>
</configuration>

四、运行HA高可用集群和查看WebUI

1.分发HA中的hadoop安装目录

#将Hadoop安装目录分发至虚拟机HA中的hadoop2中存放安装程序的目录
scp -r /export/servers/HA/hadoop root@hadoop2:/export/servers/HA
#将Hadoop安装目录分发至虚拟机HA中的hadoop3中存放安装程序的目录
scp -r /export/servers/HA/hadoop root@hadoop3:/export/servers/HA

 2.在(hadoop1,hadoop2,hadoop3)启动journalnode

  hdfs start journalnode     

3.在[hadoop1]上,对其进行格式化

hdfs namenode -format

 4.在hadoop2上同步元数据

hdfs namenode -bootstrapStandby

 5.启动Zookeeper

# 启动zookeeper
/export/servers/zookeeper/bin/zhServer.sh start
# 验证集群状态
/export/servers/zookeeper/bin/zhServer.sh status

输出Mode:leader或Mode:follwer 表示集群正常运行

6.启动HDFS服务和启动YARN服务

# 启动hdfs服务
start-dfs.sh
# 启动yarn服务
start-yarn.sh

7.验证

jps

 

 

 五、恢复到原来Hadoop集群

1.关闭所有服务

2.修改环境变量

sudo vi /etc/profile
# 修改
export HADOOP_HOME=/export/servers/hadoop
# 保存退出:
:wq
#初始化环境变量
source /etc/profile

3.分发环境变量

#将系统环境变量文件分发至虚拟机Hadoop2的/etc目录
scp /etc/profile root@hadoop2:/etc 
#将系统环境变量文件分发至虚拟机Hadoop3的/etc目录
scp /etc/profile root@hadoop3:/etc 
# 分别在hadoop2和hadoop3中初始化环境变量
source /etc/profile 
# 每台节点一定要验证
echo $HADOOP_HOME

 3.每台节点都需要删除/tmp/*

sudo rm -rf /tmp/*

4.启动原集群:

start-all.sh

 

 

 

 

 

 

 

http://www.lqws.cn/news/484309.html

相关文章:

  • 编程语言分类大全:从系统到AI开发
  • Go 循环依赖的依赖注入解决方案详解
  • Maven通过修改pom.xml配置文件下载指定依赖包,以及解决MVNRepository网站加载和验证问题的方法
  • 【人工智能基础】初识神经网络
  • 仕么是GAN网络和原理和架构
  • 核弹地图NUKEMAP官网- 核弹爆炸在线网页模拟器网站
  • ThermoMPNN/ThermoMPNN-D 的安装及使用教程
  • UE5关卡快照
  • 深入理解Spring的ResponseBodyAdvice接口
  • 业务场景问题
  • 【提高+/省选−】洛谷P1127 ——词链
  • 【学习笔记】深入理解Java虚拟机学习笔记——第11章 后端编译与优化
  • python+uni-app基于微信小程序的儿童安全教育系统
  • linux-vim编辑器
  • RA4M2开发IOT(6)----涂鸦模组快速上云
  • RA4M2开发IOT(10)----集成LPS22DF气压计
  • FPGA故障注入测试软件使用指南
  • 文心一言(ERNIE Bot):百度打造的知识增强大语言模型
  • jenkins对接、jenkins-rest
  • Rust智能指针演进:从堆分配到零复制的内存管理艺术
  • (双指针)283. 移动零
  • [踩坑] vmware 虚拟机卡片全灰, 开机没反应
  • 用 Python 绘制动态方块热力图:从数据到可视化的完美蜕变
  • 【51单片机】串口通信
  • 使用FastMCP开发MCP服务简单尝试
  • 云原生/容器相关概念记录
  • uni-app项目实战笔记20--触底加载更多样式的实现
  • PyTorch 入门学习笔记
  • margin-block-start定义元素在块级流方向起始边缘的外边距
  • 3516cv610在vi、vpss模块做延时优化