【赵渝强老师】基于ZooKeeper实现Hadoop HA

news2024/9/21 20:12:25

在这里插入图片描述

  由于在HA架构中包含的节点比较多,在进行实际部署的时候需要做好集群的规划。图14.9一共使用了4个节点来部署HDFS HA,它们分别是:bigdata112、bigdata113、bigdata114和bigdata115。由于Hadoop默认包含了HDFS和Yarn,因此在部署HDFS HA的时候,也可以同时部署Yarn的HA。每个节点上部署的服务如下表所示:
在这里插入图片描述
  视频讲解如下:

基于ZooKeeper实现Hadoop HA

【赵渝强老师】HDFS的HA高可用架构

  基于已经部署好的ZooKeeper集群的部署,这里直接从Hadoop HA的部署开始。
(1)在每个节点增加以下环境变量。

export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_DATANODE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

(2)修改bigdata112节点上的hadoo-env.sh文件。

export JAVA_HOME=/root/training/jdk1.8.0_181

(3)修改bigdata112节点上的core-site.xml文件。

<configuration>
	<!-- 指定hdfs的nameservice为ns1 -->
	<property>
			<name>fs.defaultFS</name>
			<value>hdfs://ns1</value>
	</property>
	
	<!-- 指定hadoop临时目录 -->
	<property>
			<name>hadoop.tmp.dir</name>
			<value>/root/training/hadoop-3.1.2/tmp</value>
	</property>
	
	<!-- 指定zookeeper地址 -->
	<property>
	<name>ha.zookeeper.quorum</name>
	<value>bigdata112:2181,bigdata113:2181,bigdata114:2181</value>
	</property>
</configuration>

(4)修改bigdata112节点上的hdfs-site.xml文件。

<configuration> 
	<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
	<property>
		<name>dfs.nameservices</name>
		<value>ns1</value>
	</property>
	
	<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
	<property>
		<name>dfs.ha.namenodes.ns1</name>
		<value>nn1,nn2</value>
	</property>
	
	<!-- nn1的RPC通信地址 -->
	<property>
		<name>dfs.namenode.rpc-address.ns1.nn1</name>
		<value>bigdata112:9000</value>
	</property>
	<!-- nn1的http通信地址 -->
	<property>
		<name>dfs.namenode.http-address.ns1.nn1</name>
		<value>bigdata112:9870</value>
	</property>
	
	<!-- nn2的RPC通信地址 -->
	<property>
		<name>dfs.namenode.rpc-address.ns1.nn2</name>
		<value>bigdata113:9000</value>
	</property>
	<!-- nn2的http通信地址 -->
	<property>
		<name>dfs.namenode.http-address.ns1.nn2</name>
		<value>bigdata113:9870</value>
	</property>
	
	<!-- 指定NameNode的日志在JournalNode上的存放位置 -->
	<property>
		<name>dfs.namenode.shared.edits.dir</name>
		<value>qjournal://bigdata112:8485;bigdata113:8485;/ns1</value>
	</property>
	<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/root/training/hadoop-3.1.2/journal</value>
	</property>

	<!-- 开启NameNode失败自动切换 -->
	<property>
		<name>dfs.ha.automatic-failover.enabled</name>
		<value>true</value>
	</property>
	
	<!-- 配置失败自动切换实现方式 -->
	<property>
		<name>dfs.client.failover.proxy.provider.ns1</name>           
	    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>
	
	<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
	<!--如果没有隔离机制,会造成DataNode脑裂的问题-->
	<property>
		<name>dfs.ha.fencing.methods</name>
		<value>
			sshfence
			shell(/bin/true)
		</value>
	</property>
	
	<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
	<property>
		<name>dfs.ha.fencing.ssh.private-key-files</name>
		<value>/root/.ssh/id_rsa</value>
	</property>
	
	<!-- 配置sshfence隔离机制超时时间 -->
	<property>
		<name>dfs.ha.fencing.ssh.connect-timeout</name>
		<value>30000</value>
	</property>
</configuration>

(5)修改bigdata112节点上的mapred-site.xml文件。

<configuration>
	<property>
			<name>mapreduce.framework.name</name>
			<value>yarn</value>
	</property>
</configuration>

(6)修改bigdata112节点上的yarn-site.xml文件。

<configuration>
	<!-- 开启RM高可靠 -->
	<property>
	   <name>yarn.resourcemanager.ha.enabled</name>
	   <value>true</value>
	</property>
	
	<!-- 指定RM的cluster id -->
	<property>
	   <name>yarn.resourcemanager.cluster-id</name>
	   <value>yrc</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>bigdata112</value>
	</property>
	<property>
	   <name>yarn.resourcemanager.hostname.rm2</name>
	   <value>bigdata113</value>
	</property>
	
	<!-- 指定zk集群地址 -->
	<property>
	   <name>yarn.resourcemanager.zk-address</name>
	   <value>bigdata112:2181,bigdata113:2181,bigdata114:2181</value>
	</property>
	
	<property>
	   <name>yarn.nodemanager.aux-services</name>
	   <value>mapreduce_shuffle</value>
	</property>
</configuration>

(7)修改bigdata112节点上的workers文件。

bigdata114
bigdata115

(8)将bigdata112上配置好的hadoop拷贝到其他节点。

scp -r /root/training/hadoop-3.1.2/ root@bigdata113:/root/training/
scp -r /root/training/hadoop-3.1.2/ root@bigdata114:/root/training/
scp -r /root/training/hadoop-3.1.2/ root@bigdata115:/root/training/

(9)在bigdata112、bigdata113和bigdata114上启动Zookeeper集群。
(10)在bigdata112和bigdata113上启动JournalNode。

hadoop-daemon.sh start journalnode

(11)在bigdata112上格式化HDFS。

hdfs namenode -format

(12)将bigdata112上$HADOOP_HOME/tmp拷贝到bigdata113的对应目录下。

scp -r /root/training/hadoop-3.1.2/tmp/dfs/  root@bigdata113:/root/training/hadoop-3.1.2/tmp

(13)格式化zookeeper。

hdfs zkfc -formatZK

# ZooKeeper格式化成功后,将看到如下的日志输出:
# 20/07/13 00:34:33 INFO ha.ActiveStandbyElector: 
# Successfully created /hadoop-ha/ns1 in ZK.

(14)在bigdata112上启动Hadoop集群。

start-all.sh

(15)下面展示了整个集群在启动过程中输出的日志:

Starting namenodes on [bigdata112 bigdata113]
Last login: Fri Sep 27 00:18:38 CST 2020 on pts/0
Starting datanodes
Last login: Fri Sep 27 00:19:37 CST 2020 on pts/0
Starting journal nodes [bigdata112 bigdata113]
Last login: Fri Sep 27 00:19:40 CST 2020 on pts/0
bigdata113: journalnode is running as process 1297.  Stop it first.
bigdata112: journalnode is running as process 1294.  Stop it first.
Starting ZK Failover Controllers on NN hosts [bigdata112 bigdata113]
Last login: Fri Sep 27 00:19:50 CST 2020 on pts/0
Starting resourcemanagers on [ bigdata112 bigdata113]
Last login: Fri Sep 27 00:19:52 CST 2020 on pts/0
Starting nodemanagers
Last login: Fri Sep 27 00:20:00 CST 2020 on pts/0
	
# 通过打印输出的日志可以看到,在bigdata112和bigdata113上启动了两个NameNode、
# 两个JournalNode和两ResourceManager。

(16)通过jps命令查看每个节点上的后台进程,如下图所示。
在这里插入图片描述

  在部署好了HDFS HA的架构后,便可以进行一个简单的测试以确定是否能够基于ZooKeeper实现主节点的自动切换。

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

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

相关文章

构建 LLM 应用程序时经常遇到的高级概念的快速指南

使用案例 数据支持的 LLM 应用程序有无数的用例&#xff0c;但大致可以分为四类&#xff1a; 结构化数据提取 Pydantic 提取器允许您指定要从数据中提取的精确数据结构&#xff0c;并使用 LLM 以类型安全的方式填充缺失的部分。这对于从 PDF、网站等非结构化来源中提取结构化…

阿里国际、eBay、乐天等跨境电商如何搭建测评系统给自己店铺测评

要实现自己养号给自己店铺进行测评&#xff0c;确实需要一系列周密的准备和规划&#xff0c;以确保整个过程既稳定安全又有效。以下是详细补充和强化建议&#xff1a; 1. 稳定的测评环境系统 选择高级防关联技术&#xff1a;除了使用国外的服务器、纯净的国外IP和防关联浏览器…

mysql怎样优化count(*) from 表名 where …… or ……这种慢sql

一 问题描述 线上发现一条类似这样的慢sql&#xff08;查询时长8s&#xff09;&#xff1a; select id,name,(select count(*) from t14 where t14.idt15.id or t14.id2t15.id) as cnt from t15 ; t14的id和id2字段上都有索引&#xff0c;但是因为条件里有or&#xff0c;导致…

Kubernetes调度基础

一、RC 和 RS 1. Replication Controller Replication Controller&#xff0c;简称 RC&#xff0c;复制控制器&#xff0c;可确保Pod 副本数达到期望值&#xff0c;也就是 RC 可确保一个 Pod 总是可用&#xff0c;或一组 Pod 的数量永远处于一个定值。 如果存在的 Pod 大于设…

杭州等保测评揭秘:数据安全如何成为企业的“一道锁”

在数字化时代&#xff0c;数据安全已成为企业和机构面临的重要挑战。杭州作为科技创新的前沿城市&#xff0c;积极推进信息安全建设&#xff0c;其中等保测评&#xff08;等级保护测评&#xff09;成为保障数据安全的重要手段。 等保测评是依据《信息安全等级保护管理办法》对…

代码随想录训练营第36天|二维背包

1049. 最后一块石头的重量 II class Solution { public:int lastStoneWeightII(vector<int>& stones) {int sumaccumulate(stones.begin(),stones.end(),0);int targetsum/2;vector<int> dp(target1,0);for(auto& stone: stones){for(int itarget; i>s…

如何快速学习拼音打字?

拼音打字是很多人学会使用电脑或手机的第一步&#xff0c;尤其是对于需要经常输入中文的人来说&#xff0c;熟练掌握拼音打字可以大大提升效率。下面分享一些快速学习拼音打字的方法和技巧&#xff0c;帮助你尽快掌握这项技能。 1. 了解拼音的基本规则 学习拼音打字之前&…

代码随想录算法训练营第五十八天 | 拓扑排序精讲-软件构建

目录 软件构建 思路 拓扑排序的背景 拓扑排序的思路 模拟过程 判断有环 写代码 方法一&#xff1a; 拓扑排序 软件构建 题目链接&#xff1a;卡码网&#xff1a;117. 软件构建 文章讲解&#xff1a;代码随想录 某个大型软件项目的构建系统拥有 N 个文件&#xff0c;文…

Vue|mixin混入

目录 mixin混入什么是mixin代码准备如何混入?全局混合 在 Vue 中&#xff0c;混入&#xff08;Mixins&#xff09;是一种灵活的分发功能&#xff0c;可以将可复用的代码片段和功能注入到多个组件中。简单来说&#xff0c;混入允许你在多个组件之间共享逻辑&#xff0c;而无需重…

QT<24> Qt和windows中获取CPU序列号号以及主板序列号

前言&#xff1a;在qt中获取CPU和主板唯一序列号&#xff0c;可以在程序构造函数中判断是否与windows中一致&#xff0c;不一致可以直接退出程序&#xff0c;防止程序daoyong。 一、获取电脑CPU唯一序列号 QString MainPage::get_cpu() {QString cmd"wmic cpu get proc…

DNS和ICMP

DNS DNS&#xff08;Domain Name System &#xff09; DNS 是一整套从域名映射到 IP 的系统 关于DNS背景 TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序 . 但是 IP 地址不 方便记忆 . 于是人们发明了一种叫主机名的东西 , 是一个字符串 , 并且…

computed计算属性与watch侦听器

1.computed计算属性的写法有两种&#xff0c;一种是只读的&#xff0c;只负责展示&#xff0c;另一种可以进行修改&#xff0c;利用get来获取值&#xff0c;利用set来进行修改 2.watch侦听器的写法也有两种&#xff0c;可以直接写成函数&#xff0c;也可以写成对象&#xff0c;…

浅显易懂的Git教程

Git概述 SVN与Git的对比 SVN&#xff08;Subversion&#xff09; 类型&#xff1a;集中式版本控制系统 工作流程&#xff1a; 从中央服务器下载最新版本到本地。在本地进行开发。提交更改回中央服务器。 优点&#xff1a; 简单易用&#xff0c;适合小型团队。版本历史清…

【源代码+仿真+原理图+技术文档+演示视频+软件】基于物联网的多功能手环设计与实现

摘 要 随着社会进步和生活水平的提高&#xff0c;人们对健康的重视程度不断增加。为了更好地了解自身的身心健康状况&#xff0c;人们对高精密、便携式医疗监控仪器的需求也越来越大。电子信息技术和医学的发展相互促进&#xff0c;二者的结合可以解决人们在健康问题上的困扰…

单通道低压全桥驱动芯片既可应用在电子锁,医疗器械等产品中也能直接Pin to pin贝岭的BL8123

芯片描述 GC8123 是一款低压 5V 全桥驱动芯片&#xff0c;为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。GC8123 能提供高达 1.2A 的持续输出电流。可以工作在 1.2~6V 的电源电压上。GC8123 具有 PWM&#xff08;IN/IN&…

Git使用教程-将idea本地文件配置到gitte上的保姆级别教程

&#x1f939;‍♀️潜意识起点&#xff1a;个人主页 &#x1f399;座右铭&#xff1a;得之坦然&#xff0c;失之淡然。 &#x1f48e;擅长领域&#xff1a;前端 是的&#xff0c;我需要您的&#xff1a; &#x1f9e1;点赞❤️关注&#x1f499;收藏&#x1f49b; 是我持…

Linux配置静态IP详细步骤及联网问题,以及更改主机名问题

一&#xff0c;Linux配置静态IP详细步骤及联网问题 我的Linux操作系统版本是是CentOS7/CentOS8 1.网络适配器&#xff1a;NAT模式点击设置-网络适配器-网络连接 &#xff08;选择NAT模式&#xff09;-点击确定 2.查看网关相关配置点击 编辑-虚拟网络编辑器-选择VMnet8-点击更…

python 环境问题

日常环境问题记录 1、pycharm 终端禁止运行脚本1.1 问题描述1.2 以管理员身份运行powershell1.3 修改权限 1、pycharm 终端禁止运行脚本 1.1 问题描述 当我在pycharm终端执行脚本&#xff0c;比如 activate激活虚拟环境时&#xff0c;会报错不让执行 这类问题的出现原因是没…

操作系统相关

操作系统 1. 操作系统主要功能 进程管理 功能&#xff1a;创建、调度、终止进程&#xff0c;管理进程的执行。目的&#xff1a;确保多个进程能够有效地共享处理器资源&#xff0c;并进行合理的调度和管理。 内存管理 功能&#xff1a;分配和管理系统内存&#xff0c;包括虚拟…

02 基于STM32的按键控制继电器驱动电机

本专栏所有源资料都免费获取&#xff0c;没有任何隐形消费。 注意事项&#xff1a;STM32仿真会存在各种各样BUG&#xff0c;且尽量按照同样仿真版本使用。本专栏所有的仿真都采用PROTEUS8.15。 本文已经配置好STM32F103C8T6系列&#xff0c;在PROTUES仿真里&#xff0c;32单片…