Hadoop的HA配置与实现(ZooKeeper)

news2024/11/17 5:45:24

目录

  • 一、Hadoop的HA架构
  • 二、配置实现Hadoop的HA
  • 三、效果

一、Hadoop的HA架构

在这里插入图片描述
集群规划
112:NameNode1 ResourceManager1 JournalNode1
113:NameNode2 ResourceManager2 JournalNode2
114:DataNode1 NodeManager1
115:DataNode2 NodeManager2

二、配置实现Hadoop的HA

  1. 主机配置
    bigdata112,bigdata113配置好Hadoop环境变量(作为NameNode)
  2. 配置bigdata112的hadoop
    core-site.xml
 <property>
  <name>fs.defaultFS</name>
  <value>hdfs://ns1</value>
 </property>
 <property>
  <name>hadoop.tmp.dir</name>
  <value>/root/training/hadoop-2.7.3/tmp</value>
 </property>
 <property>
  <name>ha.zookeeper.quorum</name>
  <value>bigdata112:2181,bigdata113:2181,bigdata114:2181</value>
 </property>

  • fs.defaultFS:
    这个属性设置了Hadoop文件系统的默认URI。在这个例子中,它被设置为hdfs://ns1,这意味着Hadoop客户端将默认使用HDFS协议与逻辑名称(namespace)为ns1的HDFS集群进行交互。这通常用于配置了HDFS高可用性(HA)的集群,其中ns1是在hdfs-site.xml中通过dfs.nameservices属性定义的HDFS集群的逻辑名称。
  • hadoop.tmp.dir:
    这个属性指定了Hadoop临时文件的存储位置。在这个例子中,它被设置为/root/training/hadoop-2.7.3/tmp。Hadoop会在这个目录下创建一些临时文件,这些文件通常用于MapReduce作业的执行、HDFS的元数据检查点等。将hadoop.tmp.dir设置在一个有足够磁盘空间的位置是很重要的。
  • ha.zookeeper.quorum:
    这个属性指定了ZooKeeper集群的地址列表,用于HDFS高可用性(HA)配置中的故障转移和状态管理。在这个例子中,它包含了三个ZooKeeper节点的地址:bigdata112:2181,bigdata113:2181,bigdata114:2181。每个ZooKeeper节点的端口都是默认的2181。ZooKeeper集群用于协调HDFS NameNode之间的状态,确保在Active NameNode发生故障时,能够平滑地切换到Standby NameNode。

hdfs-site.xml

<property>
  <name>dfs.nameservices</name>
  <value>ns1</value>
 </property>

 <property>
  <name>dfs.ha.namenodes.ns1</name>
  <value>nn1,nn2</value>
 </property>


 <property>
  <name>dfs.namenode.rpc-address.ns1.nn1</name>
  <value>bigdata112:9000</value>
 </property>
 <property>
  <name>dfs.namenode.http-address.ns1.nn1</name>
  <value>bigdata112:50070</value>
 </property>

 <property>
  <name>dfs.namenode.rpc-address.ns1.nn2</name>
  <value>bigdata113:9000</value>
 </property>
 <property>
  <name>dfs.namenode.http-address.ns1.nn2</name>
  <value>bigdata113:50070</value>
 </property>

<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://bigdata112:8485;bigdata113:8485;/ns1</value>
 </property>
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/root/training/hadoop-2.7.3/journal</value>
 </property>
<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>

<property>
  <name>dfs.ha.fencing.methods</name>
  <value>
sshfence
shell(/bin/true)
</value>
 </property>

<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
 </property>


<property>
  <name>dfs.ha.fencing.ssh.connect-timeout</name>
  <value>30000</value>
 </property>
  • HDFS逻辑名称和NameNode配置:
    dfs.nameservices:定义了HDFS集群的逻辑名称,这里是ns1。
    dfs.ha.namenodes.ns1:指定了ns1集群中所有的NameNode名称,即nn1和nn2。
    dfs.namenode.rpc-address.和dfs.namenode.http-address.:分别配置了nn1和nn2的RPC地址和HTTP地址。RPC地址用于NameNode之间的通信,HTTP地址用于通过浏览器访问NameNode的Web界面。
    JournalNode配置:
    dfs.namenode.shared.edits.dir:配置了NameNode之间共享的edits日志目录,这里使用了Quorum Journal Manager(QJM),并指定了JournalNode的地址和集群ID(/ns1)。
    dfs.journalnode.edits.dir:指定了JournalNode存储edits日志的本地目录。
  • 高可用性配置:
    dfs.ha.automatic-failover.enabled:启用了自动故障转移功能。
    dfs.client.failover.proxy.provider.ns1:指定了客户端使用的故障转移代理提供者,这里是Hadoop自带的ConfiguredFailoverProxyProvider。
  • 故障隔离(Fencing)配置:
    dfs.ha.fencing.methods:定义了故障转移时的隔离方法,这里使用了sshfence(通过SSH杀死NameNode进程)和shell(/bin/true)(一个总是返回成功的命令,通常用于测试)。
    dfs.ha.fencing.ssh.private-key-files:指定了SSH隔离方法所使用的私钥文件路径。
    dfs.ha.fencing.ssh.connect-timeout:设置了SSH连接的超时时间,单位是毫秒。

mapred-site.xml

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

yarn-site.xml

<property>
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
 </property>
<property>
  <name>yarn.resourcemanager.cluster-id</name>
  <value>yrc</value>
 </property>
<property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>rm1,rm2</value>
 </property>
<property>
  <name>yarn.resourcemanager.hostname.rm1</name>
  <value>bigdata112</value>
 </property>
<property>
  <name>yarn.resourcemanager.hostname.rm2</name>
  <value>bigdata113</value>
 </property>
<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>
  • 启用YARN ResourceManager的HA:通过设置yarn.resourcemanager.ha.enabled为true,启用了YARN ResourceManager的高可用性模式。这意味着集群中有多个ResourceManager实例在运行,其中一个是Active状态,其余是Standby状态。
  • 集群ID:yarn.resourcemanager.cluster-id被设置为yrc,这是YARN集群的唯一标识符,用于区分不同的YARN集群。
  • ResourceManager实例ID:yarn.resourcemanager.ha.rm-ids列出了所有ResourceManager实例的ID,这里是rm1和rm2。这些ID用于在配置中引用特定的ResourceManager实例。
  • ResourceManager主机名:通过yarn.resourcemanager.hostname.rm1和yarn.resourcemanager.hostname.rm2,分别指定了rm1和rm2实例运行的主机名,即bigdata112和bigdata113。
  • ZooKeeper地址:yarn.resourcemanager.zk-address配置了ZooKeeper集群的地址,ResourceManager使用ZooKeeper来协调状态信息,确保在高可用性模式下的正确故障转移。这里的ZooKeeper集群由bigdata112、bigdata113和bigdata114组成,每个节点的端口都是默认的2181。
  • NodeManager辅助服务:yarn.nodemanager.aux-services配置了NodeManager提供的辅助服务,这里设置为mapreduce_shuffle,这是MapReduce作业执行期间所必需的,用于shuffle阶段的数据传输。
  1. 修改slaves
    在bigdata112的slaves文件中,增加从节点(114,115)
  2. 设置Java环境
    hadoop-env.sh中设置本地的Javahome路径
  3. 创建目录tmp和journal
    在上述配置中已经体现
  4. 将hadoop目录复制给113,114,115
  5. 在112和113上启动journalnode
hadoop-daemon.sh start journalnode
  1. 在112上格式化HDFS
hdfs namenode -format

将112的tmp目录复制到113上(113为备用的主节点)

  1. 在112上格式化zookeeper
hdfs zkfc -formatZK
  1. 在112上启动Hadoop集群
start-dfs.sh
start-yarn.sh
  1. 113上手动启动resourcemanager
yarn-daemon.sh start resourcemanager

三、效果

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

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

相关文章

如何快速建30个文件夹

文件夹的快速新建只能通过专门的软件来实现&#xff0c;快速建30个&#xff0c;我们可以使用批处理命令&#xff0c;也可以用第三方软件&#xff0c;批处理的命令&#xff0c;需要我们熟悉如何编写&#xff0c;而第三方软件的话不需要那么多的知识&#xff0c;直接在软件上一键…

货运搬家小程序app定制开发过程中需要的主要功能介绍

货运搬家小程序是一个集成了物流服务全过程的数字化解决方案&#xff0c;它通过移动平台提供注册与登录、货物管理、车辆管理、路线规划、货物分配、订单管理、实时追踪、评价与反馈、价格透明等功能。 具体的功能&#xff1a; 注册与登录用户可以通过小程序注册账号并登录&am…

inflight 守恒算法的实现和仿真

前面介绍过&#xff0c;只要某条流的 inflt 在 bdp 之外再增加一个相等的余量 I&#xff0c;即 inflt bdp I&#xff0c;比如 I 2&#xff0c;I 3&#xff0c;…&#xff0c;就一定会收敛到公平&#xff0c;且不会占据过多 buffer&#xff0c;因此 rtt 不会膨胀&#xff0c…

html+css网页设计 动漫 海贼王14个页面

htmlcss网页设计 动漫 海贼王14个页面 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#x…

开放式耳机对耳朵好吗?开放式耳机哪个品牌好?

许多人在选择开放式耳机时并不了解如何选购。对开放式耳机也不是很了解&#xff0c;所以我在这里做个简单的科普和分享。今天跟大家聊聊开放式耳机会伤害耳朵吗&#xff1f;开放式耳机有什么好处&#xff1f;等等&#xff0c;下面一起来看看吧~ 开放式耳机是什么意思&#xff1…

如何有效激活微信陌生客户:加好友后的沟通策略!

在当今这个数字化时代&#xff0c;微信已成为我们与客户建立联系的重要桥梁。对于许多企业和个人而言&#xff0c;成功添加陌生客户到微信列表只是第一步&#xff0c;真正的挑战在于如何有效激活这些潜在客户&#xff0c;转化为实际交易或长期关系。 下面分享一些沟通策略&…

oracle ONS configuration failed NoserversAvailable:Subscription time out导致应用起不来

java.lang.IllegalArgumentException:ONS configuration failed Caused by: oracle.ons.NoserversAvailable:Subscription time out ##已部署到服务器解决方案&#xff1a; 修改这个2个jar包后缀 ##在项目工程里面&#xff0c;<artifactId>ojdbc8</artifactId> m…

具有强制函数的物理信息神经网络

图片由 agsandrew 在 iStock 上发布 一、说明 在物理学、数学、经济学、工程学和许多其他领域&#xff0c;微分方程根据变量的导数来描述函数。简而言之&#xff0c;当涉及一个变量相对于其他变量的变化率时&#xff0c;你可能会找到一个微分方程。许多示例描述了这些关系。微分…

debian12 - install and config telnet

文章目录 debian12 - install and config telnet概述笔记配置文件END debian12 - install and config telnet 概述 前面实验&#xff0c;在xinetd中指定telnet服务&#xff0c;查看状态时&#xff0c;看到telnet服务bind失败。 直接从其他计算机来连telnet又是正常的&#xf…

随记-部署flink-1.16.3、jdk-11.0.19、zookeeper-3.4.13、kafka_2.12-2.2.2

一、部署flink-1.16.3、jdk-11.0.19、zookeeper-3.4.13、kafka_2.12-2.2.2 #软件下载 https://archive.apache.org/dist/kafka/2.2.2/kafka_2.12-2.2.2.tgz https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz https://archive.apache.org/…

Clustering-Guided Class Activation for WeaklySupervised Semantic Segmentation

pdf&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber10381698 code&#xff1a;https://github.com/DCVL-WSSS/ClusterCAM 摘要&#xff1a; 基于transformer的弱监督语义分割(WSSS)方法利用其捕获全局上下文的强大能力得到了积极的研究。然而&am…

day8JS-作用域

1. 变量的作用域(变量函数) 作用域是变量的可作用范围&#xff0c;变量只有在自己的作用域下才会生效。 函数会产生作用域&#xff0c;在函数内定义的变量只能在函数内使用。 2. 作用域分类 局部作用域&#xff1a; 函数内定义的变量和形参的作用域就是局部作用域&#xff1b;这…

【Hot100】LeetCode—207. 课程表

目录 1- 思路有向图记录入度数组出度列表 2- 实现⭐207. 课程表——题解思路 3- ACM 实现 题目连接&#xff1a;207. 课程表 1- 思路 有向图记录入度数组出度列表 根据输入① 构造遍历构造入度数组② 构造出度列表根据入度数组为 0 的数 加入到 队列中&#xff0c;进行处理 2…

在线拼图用什么软件?5款顶级照片拼接工具

照片拼接在一起用什么软件&#xff1f;当你想全景展现山西应县木塔的震撼之美时&#xff0c;5款精选照片拼接软件能帮你解锁全新视角。 这座千年古塔&#xff0c;巍峨耸立&#xff0c;细节之处尽显匠心独运。而通过拼接技术&#xff0c;每一块木构的精致、每一层塔檐的飞翘都能…

OpenBayes 教程上新 | 青岛小哥焦恩俊版二郎神来袭,MuseV + MuseTalk 分分钟实现高质量数字人制作!

使用传统的数字人训练方案生成一个高质量的数字人&#xff0c;常常需要大量的时间和算力资源&#xff0c;同时对训练素材的要求也较高&#xff0c;如果想要达到良好的唇形一致效果&#xff0c;通常需要数小时乃至更久。 MuseV 和 MuseTalk 的出现为数字人领域带来了新的突破&a…

【Canvas与桌面】十字网格黑灰背景(1920x1080)

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>十字网格黑灰背景(1920x1080)</title><style type"te…

iphone被锁定怎么解锁?iPhone密码锁解锁办法分享

在忙碌的生活中&#xff0c;有时我们可能会遇到一些“小插曲”&#xff0c;比如苹果手机被锁定&#xff0c;iPhone被锁定是一个常见的问题&#xff0c;可能是由于忘记密码、多次输入错误密码或设备被远程锁定等原因造成的。 本文将介绍解锁被锁定的iPhone的方法以及注意事项&a…

【网络安全】IDOR之请求包分析

未经许可,不得转载。 文章目录 正文正文 某在线游戏平台,在开始测试时,我访问了 /profile 页面(个人资料页面),然后查看 Burp 历史记录,想查看有多少隐藏的请求。 可以看到一个HTTP 的 OPTIONS 方法的请求包: 从图中看到,该请求包含两个参数:player_id_or_name(用…

OpenHarmony源码解析之电话子系统——通话流程

一、简介 OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;电话子系统为 OS 提供了基础的无线通信能力。 支持 TD-LTE/FDD-LTE/TD-SCDMA/WCDMA/EVDO/CDMA1X/GSM 等网络制式的通信模块&#xff0c;能够提供高速的无线数据传输、互联网接入等业务&#xf…

c++栈和队列(stack和queue)

前言 栈和队列是两个极其相似的数据结构&#xff0c;栈具有先进后出的特性&#xff0c;队列具有先进先出的特性。今天我们就来简单的介绍一下栈和队列这两数据结构&#xff0c;其中队列我们介绍普通队列、双端队列&#xff08;了解&#xff09;和优先级队列&#xff08;其实这…