Hadoop的HA模式搭建

news2024/9/17 8:56:54

准备三台虚拟机 bigdata007bigdata008bigdata009

1.前置工作

1.修改虚拟机的IP地址和hostname

 

2.配置集群中的ip映射(/etc/hosts)



192.168.111.57 bigdata007
192.168.111.58 bigdata008
192.168.111.59 bigdata009

3.关闭虚拟机的防火墙

4.集群间实现免密登录

ssh root@bigdata007

ssh-keygen -t rsa

ssh-copy-id bigdat007

ssh-copy-id bigdat008

ssh-copy-id bigdat009

每台虚拟机都执行类似操作

2.安装zookeeper

导入安装包,解压到/opt/softs目录

tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz  -C /opt/softs/

修改包名 mv apache-zookeeper-3.5.7-bin/ zookeeper3.5.7
cd ../

在/zookeeper3.5.7目录下创建zkData目录,

里面创建文件myid写入id

 

配置文件

进入/opt/softs/zookeeper3.5.7/conf 目录

删除log4j.properties

 上传新的

# 定义日志输出路径
log4j.appender.file.File=/opt/softs/zookeeper3.5.7/logs/zookeeper.log
# 定义日志轮循策略,按天轮循
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c{1}:%L - %m%n

重要路径


/opt/softs/zookeeper3.5.7 目录下
创建logs目录

修改文件名

zoo_sample.cfg 为 zoo.cfg
 

 

 修改zoo.cfg

添加 

 分发给其他两台虚拟机

scp -r zookeeper3.5.7/ root@bigdata008:/opt/softs/

修改各个虚拟机上的myid

配置环境变量 /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/softs/jdk1.8.0
export PATH=$PATH:$JAVA_HOME/bin


#ZK_HOME
export ZK_HOME=/opt/softs/zookeeper3.5.7
export PATH=$PATH:$ZK_HOME/bin

 

记得source一下  source /etc/profile
,直接分发

​​​​​​​scp /etc/profile root@bigdata008:/etc/

添加启动脚本

创建目录 /opt/shell

导入脚本

#!/bin/bash

# 在调用shell脚本时,需要传入一个参数,用于标识执行开启或者关闭zk集群的开启关闭和查询状态

#判断调用shell脚本时 是否正常的传入参数

#参数小于1
if [ $# -lt 1 ]
then
  echo "调用该脚本时需要传入一个参数"
  exit ;
fi

#传入的第一个参数 有三种情况
case $1 in 
"start")
	echo "----------启动zk集群----------"
	
	for hostname in bigdata007 bigdata008 bigdata009
do
	echo "-------------$hostname------------"
	ssh $hostname "/opt/softs/zookeeper3.5.7/bin/zkServer.sh start"

done
	
;;
"stop")
	echo "----------关闭hadoop集群----------"
		for hostname in bigdata007 bigdata008 bigdata009
do
	echo "-------------$hostname------------"
	ssh $hostname "/opt/softs/zookeeper3.5.7/bin/zkServer.sh stop"

done
	
;;	
"status")
	echo "----------查询zk集群状态-------------"
		for hostname in bigdata007 bigdata008 bigdata009
do
	echo "-------------$hostname------------"
	ssh $hostname "/opt/softs/zookeeper3.5.7/bin/zkServer.sh status"

done
;;	
*)
	echo "输入的参数不符合脚本运行的规则,请输入start或者stop,status"
;;
esac	

将JAVA_HOME=/opt/softs/jdk1.8.0  

写入zkServer.sh

​​​​​​​ 分发给其他虚拟机

scp zkServer.sh root@bigdata008:/opt/softs/zookeeper3.5.7/bin/
 

运行sh /opt/shell/my_zk.sh start 检查脚本是否成功

2.进行集群规划

bigdata007bigdata008bigdata009
hdfsNameNode DataNodeNameNode DataNode DataNode
zk
yarnNodeManagerNodeManager,ResourceManagerNodeManager,ResourceManager

 

 3.上传hadoop安装包

解压

4.修改配置文件

进入目录
/opt/softs/hadoop3.1.3/etc/hadoop

在hadoop-env.sh 中添加

core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

		<!-- hdfs地址,ha中是连接到nameservice -->
		<property>
			<name>fs.defaultFS</name>
			<value>hdfs://mycluster</value>
		</property>
		
		<!-- 指定hadoop数据的存储目录 -->
		<property>
			<name>hadoop.tmp.dir</name>
			<value>/opt/softs/hadoop3.1.3/data</value>
		</property>
		
		<!-- 故障转移 -->
		<property>
			<name>ha.zookeeper.quorum</name>
			<value>bigdata007:2181,bigdata008:2181,bigdata009:2181</value>
		</property>
		
		
		<!-- 解决HDFS web页面上删除、创建文件权限不足的问题 -->
		<property>
			<name>hadoop.http.staticuser.user</name>
			<value>root</value>
		</property>

		<property>
			<name>hadoop.proxyuser.root.hosts</name>
			<value>*</value>
		</property>
		
		<property>
			<name>hadoop.proxyuser.root.groups</name>
			<value>*</value>
		</property>
		
</configuration>

hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

  <!-- 为namenode集群定义一个services name -->
  <property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
  </property>

  <!-- nameservice包含哪些namenode,为各个namenode起名 -->
  <property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>nn1,nn2</value>
  </property>

  <!-- 名称为nn1的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
  <property>
    <name>dfs.namenode.rpc-address.mycluster.nn1</name>
    <value>bigdata007:8020</value>
  </property>

  <!-- 名称为nn2的namenode的rpc地址和端口号,rpc用来和datanode通讯  -->
  <property>
    <name>dfs.namenode.rpc-address.mycluster.nn2</name>
    <value>bigdata008:8020</value>
  </property>


  <!-- 名称为nn1的namenode的http地址和端口号,web客户端 -->
  <property>
    <name>dfs.namenode.http-address.mycluster.nn1</name>
    <value>bigdata007:50070</value>
  </property>

  <!-- 名称为nn2的namenode的http地址和端口号,web客户端 -->
  <property>
    <name>dfs.namenode.http-address.mycluster.nn2</name>
    <value>bigdata008:50070</value>
  </property>


  <!-- namenode间用于共享编辑日志的journal节点列表 -->	
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://bigdata007:8485;bigdata008:8485;bigdata009:8485/mycluster</value>
  </property>
  
  
  <!-- journalnode 上用于存放edits日志的目录 -->
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/opt/softs/hadoop3.1.3/data/dfs/jn</value>
  </property>

  <!-- 客户端连接可用状态的NameNode所用的代理类 -->
  <property>
    <name>dfs.client.failover.proxy.provider.ns1</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>

 <!--sshfence:防止namenode脑裂,当脑裂时,会自动通过ssh到old-active将其杀掉,将standby切换为active  -->
  <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>

  <!-- 故障转移设置为ture -->
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>

</configuration>

mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

    <!--指定mapreduce运行在yarn框架上-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <!--设置mapreduce的历史服务器安装在bigdata007节点上-->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>bigdata007:10020</value>
    </property>


	<!--设置历史服务器的web页面地址和端口号-->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>bigdata007:19888</value>
    </property>

</configuration>

yarn-site.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

  <!-- 配置yarn的默认混洗方式,选择为mapreduce的默认混洗算法 -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>

  <!-- 是否启用日志聚集功能 -->
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>

  <!-- 是配置聚集的日志在HDFS上最多保存多长时间 -->
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>106800</value>
  </property>

  <!--  启用resourcemanager的ha功能 -->
  <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
  </property>

  <!--  为resourcemanage ha集群起个id -->
  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yarn-cluster</value>
  </property>

  <!--  指定resourcemanger ha有哪些节点名 -->
  <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
  </property>

  <!--  指定第一个节点的所在节点 -->
  <property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>bigdata008</value>
  </property>

  <!--  指定第二个节点所在机器 -->
  <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>bigdata009</value>
  </property>

  <!-- 指定resourcemanger ha所用的zookeeper节点 -->
  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>bigdata007:2181,bigdata008:2181,bigdata009:2181</value>
  </property>

 <!-- 开启Recovery后,ResourceManger会将应用的状态等信息保存到yarn.resourcemanager.store.class配置的存储介质中,重启后会load这些信息,并且NodeManger会将还在运行的container信息同步到ResourceManager,整个过程不影响作业的正常运行。 -->
  <property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
  </property>

 <!-- 指定yarn.resourcemanager.store.class的存储介质(HA集群只支持ZKRMStateStore) -->
  <property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  </property>

</configuration>

 配置运行hadoop中的works

 

​​​​​​​​​​​​​​

hadoop分发到别的目录

scp -r hadoop3.1.3/ root@bigdata008:/opt/softs/
 

再次/etc/profile 配置文件

 

#HADOOP_HOME
export HADOOP_HOME=/opt/softs/hadoop3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

export HADOOP_CONF_DIR=/opt/softs/hadoop3.1.3/etc/hadoop
export HADOOP_CLASSPATH=`hadoop classpath`


export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root

配置完成后,传给其他两台虚拟机上,记得source一下

NameNode初始化

1.在每个节点上启动journalnode

hadoop-daemon.sh start journalnode
 

2.在每个节点上启动zk

zkServer.sh start

3.在某一个NameNode节点(bigdata007)上对NameNode进行初始化 

hdfs namenode -format

启动NameNode并进行同步

1.在bigdata007上执行NameNode的启动

hadoop-daemon.sh start namenode

2.在另外一个NameNode节点(bigdata008)上同步元数据信息,然后再启动NameNode

        --同步元数据

        hdfs namenode -bootstrapStandby

        --启动NameNode

hadoop-daemon.sh start namenode



进行zk的初始化        

在bigdata007上执行zk的初始化

hdfs zkfc -formatZK

启动hdfs和yarn

start-dfs.sh

start-yarn.sh

windows配置文件

 

 

用浏览器访问

http://bigdata007:50070

http://bigdata008:50070

 07是活跃的

 

 

yarn的

http://bigdata008:8088


 

http://bigdata009:8088

有一个处于活跃状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1918732.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

千万慎投!自引率高达93%!这16本On hold正处于高危状态,无法检索,剔除岌岌可危中!近四年镇压期刊“出狱”情况一览

本周投稿推荐 SCI • 能源科学类&#xff0c;1.5-2.0&#xff08;25天来稿即录&#xff09; • CCF推荐&#xff0c;4.5-5.0&#xff08;2天见刊&#xff09; • 生物医学制药类&#xff08;2天逢投必中&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09…

昇思25天学习打卡营第19天|LSTM+CRF序列标注

概述 序列标注指给定输入序列&#xff0c;给序列中每个Token进行标注标签的过程。序列标注问题通常用于从文本中进行信息抽取&#xff0c;包括分词(Word Segmentation)、词性标注(Position Tagging)、命名实体识别(Named Entity Recognition, NER)等。 条件随机场&#xff08…

thinkphp 生成邀请推广二维码,保存到服务器并接口返回给前端

根据每个人生成自己的二维码图片,接口返回二维码图片地址 生成在服务器的二维码图片 控制器 public function createUserQRcode(){$uid = input(uid);if

【VUE进阶】安装使用Element Plus组件

Element Plus组件 安装引入组件使用Layout 布局button按钮行内表单菜单 安装 包管理安装 # 选择一个你喜欢的包管理器# NPM $ npm install element-plus --save# Yarn $ yarn add element-plus# pnpm $ pnpm install element-plus浏览器直接引入 例如 <head><!-- I…

万字总结XGBoost原理、核心参数以及调优思路(上篇)

万字总结XGBoost原理、核心参数以及调优思路&#xff08;上篇&#xff09; 在数据科学领域&#xff0c;XGBoost以其卓越的性能和灵活性&#xff0c;成为了众多机器学习算法中的佼佼者。作为一种梯度提升框架&#xff0c;XGBoost通过构建决策树的集合来最小化一个可微分的损失函…

简洁易用,快速制作高品质产品册的工具

在数字化时代&#xff0c;高效制作高品质产品册的需求日益增长。市场上涌现出众多声称能够帮助快速制作产品册的工具&#xff0c;但真正能兼顾简洁易用和品质的却寥寥无几。 ​这款工具名为“FLBOOK”&#xff0c;它凭借其强大的功能和简单易用的操作界面&#xff0c;赢得了众多…

深入理解FFmpeg--libavformat接口使用(一)

libavformat&#xff08;lavf&#xff09;是一个用于处理各种媒体容器格式的库。它的主要两个目的是去复用&#xff08;即将媒体文件拆分为组件流&#xff09;和复用的反向过程&#xff08;以指定的容器格式写入提供的数据&#xff09;。它还有一个I/O模块&#xff0c;支持多种…

自动化回复信息工具的开发分享!

在当今信息爆炸的时代&#xff0c;无论是个人还是企业&#xff0c;都面临着大量的信息处理和回复工作&#xff0c;为了提高效率&#xff0c;自动化回复信息工具变得越来越重要。 本文旨在分享一个简单但实用的自动化回复信息工具的五段源代码开发过程&#xff0c;帮助读者理解…

Datawhale 2024 年 AI 夏令营第二期——电力需求预测挑战赛

#AI夏令营 #Datawhale #夏令营 1.赛事简介 随着全球经济的快速发展和城市化进程的加速&#xff0c;电力系统面临着越来越大的挑战。电力需求的准确预测对于电网的稳定运行、能源的有效管理以及可再生能源的整合至关重要。 2.赛事任务 给定多个房屋对应电力消耗历史N天的相关…

水库水电站泄洪预警系统解决方案

一、方案背景 水电站建立的初衷有两个&#xff0c;一是用于发电&#xff0c;二是用于调节水量&#xff0c;解决下游洪涝灾害。水电站在丰水期蓄水、枯水期泄洪&#xff0c;泄洪时产生的水流又急又大&#xff0c;对电站大坝及下游存在巨大危险。为了加强水电站工程安全管理&…

对比H100与4090:两者谁才是更好的GPU算力选择?

在进行深度学习和人工智能的应用时&#xff0c;挑选最合适的硬件工具对于模型的训练和推断任务显得尤为关键。尤其在大模型的训练上&#xff0c;英伟达4090或许并不是最合适的选项。进行训练任务时&#xff0c;通常要求有更大的显示存储容量、更宽的内存带宽以及更出色的计算性…

浅说背包问题(上)

背包问题 什么是背包问题背包的分类01背包思路一思路二思路三&#xff08;重头戏&#xff09;常规代码空间优化 例题讲解[NOIP2001 普及组] 装箱问题题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路 最大约数和题目描述输入格式输出格式样例 #1样例输入 #1样例…

商品分类左右联动

1、先看效果 2、以hooks方法处理&#xff0c;方便复制使用&#xff0c;见代码 Good.vue文件 <script setup lang"ts" name"goods">import {onMounted, ref, nextTick} from "vue";import useProductScroll from "/utils/hooks/useP…

halcon序列化机制

可以结合halcon算子的.net程序进行面向对象的编程&#xff1a; 源码如下&#xff1a; 打开算子的.net程序&#xff1a; 将程序运用到C#中&#xff1a; halcondonet.dll源码解读 halcon与C#联合编程的demo halcon的序列化机制 采用二进制进行序列化保存和反序列化 步骤&#…

GigE Vision GVCP/GVSP

GIGE协议&#xff0c;全称Gigabit Ethernet Vision协议&#xff0c;是一种基于千兆以太网&#xff08;Gigabit Ethernet&#xff09;技术开发的相机接口标准&#xff0c;主要用于高速图像采集和处理。该协议通过以太网技术实现图像数据和控制信号的传输&#xff0c;具有低成本、…

【Conda】命令大全 + 包安装报错一招解决

conda常用命令总结 一、conda常用命令大全 命令用法命令获取版本号conda -V conda --version获取帮助conda -h conda --help获取环境相关命令的帮助conda env -h所有 --单词 都可以用 -单词首字母来代替比如 -version 可以用 -V来代替&#xff0c;只不过有的是大写…

float、double

按照这个规定&#xff0c;单精度浮点数&#xff08;float&#xff09;这个数据类型所占内存大小为4个字节&#xff0c;也就是32位&#xff0c;所以单精度浮点数也叫32位浮点数&#xff0c;它在内存或硬盘中要占用32个比特。 单精度浮点数的尾数部分用23位存储&#xff0c;加上默…

贝叶斯估计模型及 Stata 具体操作步骤

目录 一、引言 二、贝叶斯估计的理论原理 三、Stata 代码示例 四、结果解读与分析 一、引言 贝叶斯估计作为一种强大的统计推断方法&#xff0c;在结合先验信息和样本数据以获得更准确的参数估计方面具有显著优势。本文将深入探讨贝叶斯估计的理论原理&#xff0c;并通过 St…

汇聚荣做拼多多电商怎么样?

汇聚荣做拼多多电商怎么样?在当前电商平台竞争激烈的背景下&#xff0c;拼多多凭借其独特的商业模式和市场定位迅速崛起。对于想要加入拼多多的商家而言&#xff0c;了解平台的特点、优势及挑战是至关重要的。本文将深入分析加入拼多多电商的多个方面&#xff0c;帮助读者全面…

网站外链还有没有作用

前言 还记得“内容为王&#xff0c;外链为皇”这句话吗&#xff1f;在以前网站外链是网站优化中非常主要的环节。那时候做一个网站&#xff0c;只要不停的发外链&#xff0c;收录就不会差&#xff0c;于是大部分站长都使劲发外链。 有市场就有商场&#xff0c;大家都看到外链…