Hadoop高可用(Hadoop2.x)

这篇具有很好参考价值的文章主要介绍了Hadoop高可用(Hadoop2.x)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hadoop高可用(Hadoop2.x)

目录

Hadoop高可用(Hadoop2.x)

1.什么是高可用

2.Hadoop集群存在的问题

3.单点故障

3.1HDFS的单点故障

3.2NameNode的内存受限的问题

3.3Yarn的单点故障

4.Hadoop的高可用

5. Hadoop HA架构搭建

5.1基本环境配置

5.2安装Zookeeper

5.3安装Hadoop

5.4测试

6.NameNode的联邦机制

联邦的好处


1.什么是高可用

高可用性HA(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性

2.Hadoop集群存在的问题

  1. HDFS的单点故障,NameNode单点故障,难以应用于在线场景
  2. 单个NameNode压力过大,且内存受限,影响系统扩展性
  3. Yarn的单点故障,Resourcemanager单点故障,导致MR程序无法正常运行

3.单点故障

单点故障(single point of failure,缩写SPOF)是指系统中一点失效,就会让整个系统无法运作的部件,换句话说,单点故障即会整体故障。

3.1HDFS的单点故障

在Hadoop 2.0之前,NameNode是HDFS集群中的单点故障(SPOF)。每个群集只有一个NameNode,如果该计算机或进程不可用,则整个群集将不可用,直到NameNode重新启动或在单独的计算机上启动

3.2NameNode的内存受限的问题

单个NameNode节点的机器的内存是有限的,随着对HDFS文件系统的操作次数的增多,产生的日志文件(edits.log)和元数据的序列化文件(FsImage)会不断的增大,最终元数据文件会读到内存之中,而内存是有限,这样就会导致HDFS的启动速度变慢,也不利于集群DataNode的扩展。

3.3Yarn的单点故障

Hadoop2.0引入的统一的资源调度平台Yarn,包含一个Resourcemanger和多个NodeManager,Resourcemanger很重要的一个功能就是负责处理客户端提交的MR程序,并将该程序启动。如果Resourcemanger发生单点故障,就会导致MR程序无法在Yarn运行。

4.Hadoop的高可用

Hadoop实现高可用主要有两种方式,一种是使用共享日志编辑系统(QJM),另一种是基于网络文件系统(NFS)的高可用方案。基于NFS的高可用方案需要额外安装NFS服务器,而QJM的高可用方案不需要安装额外的服务器。两种高可用方案都依赖于Zookeeper。

两个单独的计算机配置为NameNode。在任何时间点,一个NameNode都恰好处于活动状态(Active),而另一个则处于Standby状态。Active NameNode负责集群中的所有客户端操作,而Standby则仅充当从属,并保持足够的状态以在必要时提供快速故障转移。基于JournalNode实现的高可用,如下图:

Hadoop高可用(Hadoop2.x)

1.两台NN启动后都会去zk(zookeeper)进行注册,优先注册的为主节点(Active),另外一个为备节点(Standby),

2.主NN对外提供服务,备NN同步主NN元数据,以待切换,通过集群JN(JournalNode)。

备用NN也会帮助主NN合并editsLog文件和fsimage产生新的fsimage,并推送ActiveNN。

3.ZKFailover Controller(ZKFC,与NN在同一机器上)的作用是监控NameNode健康状态,当主NN挂掉之后,备用NN的ZKFC会得到消息,然后会将备用NN状态改为(Active),并是原来的主NN改为备用NN。

4.DN(datenode)会同时把信息报告给主从NN。

以上都是主备NN自动切换,基于zookeeper实现;

手动切换:通过命令实现,场景—HDFS升级等场合

5. Hadoop HA架构搭建

使用VmWare模拟多台机器,由于电脑配置有限,只使用三台机器,配置如下:

主机名

IP

内存

磁盘

node-1

192.168.200.10

2G

40G

node-2

192.168.200.20

2G

40G

node-3

192.168.200.30

2G

40G

集群的节点角色分配如下:

Hadoop高可用(Hadoop2.x)

5.1基本环境配置

在三台机器上做如下操作

1.关闭防火墙

2.配置/etc/hosts

3.配置时间同步

4.配置ssh免密码登录(三台机器都要配置)

5.安装JDK并配置环境变量

5.2安装Zookeeper

需要上传zookeeper的安装包

5.2.1解压安装包

tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/

5.2.2配置环境变量

vi /etc/profile

export ZOOKEEPER_HOME=/opt/zookeeper-3.4.10/

export PATH= P A T H : PATH: PATH:ZOOKEEPER_HOME/bin

source /etc/profile

5.2.3修改配置文件

配置文件位于zookeeper安装目录的conf目录

cd /opt/zookeeper-3.4.10/conf/

复制配置文件模板

cp zoo_sample.cfg zoo.cfg

vi zoo.cfg

dataDir=/opt/zookeeper-3.4.10/zkdata

server.1=node-1:2888:3888

server.2=node-2:2888:3888

server.3=node-3:2888:3888

PS:2888为集群之间通信的端口,主要由leader管理,3888是leader选举时使用的端口,2181为客户端提供服务的端口

5.2.4创建存放数据的文件夹

mkdir /opt/zookeeper-3.4.10/zkdata

5.2.5分发安装包到其他节点

scp -r /opt/zookeeper-3.4.10 node-1:/opt/

scp -r /opt/zookeeper-3.4.10 node-2:/opt

4.2.6myid文件

集群中的每台ZK server都会有一个用于唯一标识自己的id,有两个地方会使用到这个id:myid文件和zoo.cfg文件中。myid文件存储在dataDir目录中,指定了当前server的server id。在zoo.cfg文件中,根据server id,配置了每个server的ip和相应端口。Zookeeper启动的时候,读取myid文件中的server id,然后去zoo.cfg 中查找对应的配置

node-1

echo 1 > /opt/zookeeper-3.4.10/zkdata/myid

node-2

echo 2 > /opt/zookeeper-3.4.10/zkdata/myid

node-3

echo 3 > /opt/zookeeper-3.4.10/zkdata/myid

5.3安装Hadoop

使用 sftp 将 Hadoop 的安装包上传到node-1

1.解压

2.配置环境变量

3.修改配置文件

  1. hadoop-env.sh

export JAVA_HOME=/opt/jdk1.8.0_171

  1. core-site.xml

fs.defaultFS

hdfs://hadoop-ha/

hadoop.tmp.dir

/opt/hdfs

ha.zookeeper.quorum

node-1,node-2,node-3

  1. hdfs-site.xml

dfs.nameservices

hadoop-ha

dfs.ha.namenodes.hadoop-ha

nn1,nn2

dfs.namenode.rpc-address.hadoop-ha.nn1

node-1:9000

dfs.namenode.http-address.hadoop-ha.nn1

node-1:50070

dfs.namenode.rpc-address.hadoop-ha.nn2

node-2:9000

dfs.namenode.http-address.hadoop-ha.nn2

node-2:50070

dfs.namenode.name.dir

/opt/hdfs/name

dfs.datanode.data.dir

/opt/hdfs/data

dfs.namenode.shared.edits.dir

qjournal://node-1:8485;node-2:8485;node-3:8485/hadoop-ha

dfs.journalnode.edits.dir

/opt/hdfs/journaldata

dfs.ha.automatic-failover.enabled

true

dfs.client.failover.proxy.provider.hadoop-ha

org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

dfs.ha.fencing.methods

sshfence

shell(/bin/true)

dfs.ha.fencing.ssh.private-key-files

/root/.ssh/id_rsa

dfs.ha.fencing.ssh.connect-timeout

30000

  1. mapred-site.xml

mapreduce.framework.name

yarn

  1. yarn-site.xml

yarn.resourcemanager.ha.enabled

true

yarn.resourcemanager.cluster-id

yrc

yarn.resourcemanager.ha.rm-ids

rm1,rm2

yarn.resourcemanager.hostname.rm1

node-1

yarn.resourcemanager.hostname.rm2

node-3

yarn.resourcemanager.zk-address

node-1:2181,node-2:2181,node-3:2181

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.resourcemanager.address.rm1

node-1:8032

yarn.resourcemanager.scheduler.address.rm1

node-1:8030

yarn.resourcemanager.webapp.address.rm1

node-1:8088

yarn.resourcemanager.resource-tracker.address.rm1

node-1:8031

yarn.resourcemanager.admin.address.rm1

node-1:8033

yarn.resourcemanager.ha.admin.address.rm1

node-1:23142

yarn.resourcemanager.address.rm2

node-3:8032

yarn.resourcemanager.scheduler.address.rm2

node-3:8030

yarn.resourcemanager.webapp.address.rm2

node-3:8088

yarn.resourcemanager.resource-tracker.address.rm2

node-3:8031

yarn.resourcemanager.admin.address.rm2

node-3:8033

yarn.resourcemanager.ha.admin.address.rm2

node-3:23142

  1. slaves

node-1

node-2

node-3

4.分发安装包

scp -r /opt/hadoop-2.9.0 node-2:/opt

scp -r /opt/hadoop-2.9.0 node-3:/opt

5.启动步骤

高可用的启动和普通的启动方式有很大的区别,一定要按照下面的步骤启动

5.1启动zookeeper集群(三台机器)

zkServer.sh start

5.2手动启动journalnode(三台机器)

hadoop-daemon.sh start journalnode

启动完成后使用jps命令查看进程

5.3格式化Namenode(node-1)

在node-1节点格式化Hadoop集群

hdfs namenode -format

格式化完成后,会在hdfs-site.xml中指定的namenode的元数据存放目录生成对应的元数据文件,需要将元数据文件复制到第二个NameNode的机器的对应目录

scp -r /opt/hdfs/name node-2:/opt/hdfs

5.4格式化ZKFC(node-1)

hdfs zkfc -formatZK

5.5启动集群

在node-1上执行如下命令

start-dfs.sh

start-yarn.sh

分别访问http://192.168.200.10:50070 http://192.168.200.20:50070可以看到一个NameNode是active的状态另一个NameNode是standby的状态

5.6启动另一个ResourceManager

Yran的ResourceManager需要手动启动另一个,根据yarn-site.xml的配置,在node-3节点上启动ResourceManager

yarn-daemon.sh start resourcemanager

5.4测试

1.NameNode的高可用测试

查看NameNode的状态,将active状态的NameNode杀掉,一般会根据启动的顺序决定NameNode的状态,使用kill命令杀掉NameNode进程

使用jps查看进程号

kill -9 (NameNode pid)

可以通过如下命令查看ResourceManager的状态

hdfs haadmin -getServiceState nn1

hdfs haadmin -getServiceState nn2

2.ResourceManager的高可用测试

在访问ResourceManage的时候,如果是standby状态的ReSourcemanage会将链接重定向到active的ResourceManager

可以通过如下命令查看ResourceManager的状态

yarn rmadmin -getServiceState rm1

yarn rmadmin -getServiceState rm1

6.NameNode的联邦机制

通过多个namenode/namespace把元数据的存储和管理分散到多个节点中,使得namenode/namespace可以通过增加机器来进行水平扩展。

Hadoop高可用(Hadoop2.x)

能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候不会也降低HDFS的性能。可以通过多个namespace来隔离不同类型的应用,把不同类型应用的HDFS元数据的存储和管理分派到不同的namenode中。

注意:在Hadoop2.x中联邦只支持两个NameNode,在Hadoop3.x中可以支持多个NameNode文章来源地址https://www.toymoban.com/news/detail-428411.html

联邦的好处

  • 命名空间可伸缩性-联合会添加命名空间水平伸缩。大型部署或使用大量小文件的部署可通过允许将更多的Namenode添加到群集中而受益于命名空间扩展。
  • 性能-文件系统的吞吐量不受单个Namenode的限制。向群集添加更多Namenodes可以扩展文件系统的读/写吞吐量。
  • 隔离-单个Namenode在多用户环境中不提供隔离。例如,一个实验性应用程序可能会使Namenode过载,并降低生产关键型应用程序的速度。通过使用多个Namenode,可以将不同类别的应用程序和用户隔离到不同的名称空间。

到了这里,关于Hadoop高可用(Hadoop2.x)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • hadoop2.6.4伪分布式搭建

    1、jdk的安装与配置         解压jdk到我需要的目录                 tar -zxf jdk-8u333-linux-x64.tar.gz -C /home/hadoop/soft-install/bigdata/         配置环境变量                 vi /etc/profile                 export JAVA_HOME=/home/hadoop/soft-install/bigdata/jdk1.8.0_333     

    2024年02月06日
    浏览(41)
  • hadoop2.4.1伪分布式搭建

    1.准备Linux环境     1.0点击VMware快捷方式,右键打开文件所在位置 - 双击vmnetcfg.exe - VMnet1 host-only -修改subnet ip 设置网段:192.168.1.0 子网掩码:255.255.255.0 - apply - ok         回到windows -- 打开网络和共享中心 - 更改适配器设置 - 右键VMnet1 - 属性 - 双击IPv4 - 设置windows的IP:192

    2024年02月07日
    浏览(54)
  • Hadoop集群部署(完全分布式模式、hadoop2.7.3+安装包)

    目录 一、上传、解压配置 (一)上传 (二)解压 (三)配置hadoop系统环境变量 1.配置hadoop环境变量 2.让环境变量生效 3.验证hadoop系统环境变量 二、修改配置文件  (一)前置介绍 (二)更改配置文件 1.配置Hadoop集群主机点 2.修改core-site.xml文件 3.修改hdfs-site.xml文件 4.修改

    2024年04月25日
    浏览(58)
  • 【Hadoop实战】Windows环境下编译Hadoop2(2.10.2-R0)

    前提 根据Hadoop源码包解压之后编译帮助文件 BUILDING.txt 中关于windows的要求来准备环境 本机环境 JDK1.8 Windows 10 64位专业版 maven 3.9.2 git 2.41.0 ProtocolBuffer 2.5.0 这个要求要满足不然有报错(Github地址) cmake 2.36.4 Visual Studio 2022 Professional cygwin 安装包 IDEA 2022.2.5 编译方式 使用VS2022的

    2024年02月11日
    浏览(57)
  • java大数据hadoop2.92 Java连接操作

    1、要想Java可以连接自己虚拟机的hadoop文件系统,需要给文件系统权限 (1)需要在/usr/local/hadoop/etc/hadoop/core-site.xml core-site.xml文件配置具体ip (2)文件权限 hdfs dfs -chmod -R 777 / 2、maven依赖 3、具体操作 (1)创建文件夹 (2)创建文件

    2024年01月20日
    浏览(31)
  • 【云计算】Hadoop2.x完全分布式集群(入门)

    【虚拟机】VMware Workstation 16 Pro 【镜像】CentOS-7-x86_64-DVD-1804.iso 【java】jdk-8u281-linux-x64.rpm 【Hadoop】hadoop-2.7.1.tar.gz 【SSH远程】SecureCRTPortable.exe 【上传下载】SecureFXPortable.exe 配网卡ens33 重启网络 私钥、公钥 克隆、改名、改IP 三台机都要做:👇 生成密钥 密钥发送 登录测试 had

    2024年04月12日
    浏览(46)
  • HDFS HA 集群搭建 - 基于Quorum Journal Manager(hadoop2.7.1)

    在Hadoop分布式文件系统(HDFS)中,检查点(Checkpointing)是一个关键的过程,它涉及到将文件系统的命名空间状态持久化到磁盘。这个状态由两部分组成:EditLogs和FsImage。 EditLogs:记录了自FsImage生成后对文件系统所做的所有修改。每次对文件系统的修改都会追加到EditLogs中。

    2024年01月16日
    浏览(46)
  • 华为云云耀云服务器L实例评测|伪分布式环境下部署hadoop2.10.1

    #【中秋征文】程序人生,中秋共享# 这是Maynor创作的华为云云耀云服务器L实例测评的第二篇,上篇传送门: 华为云云耀云服务器L实例评测|单节点环境下部署ClickHouse21.1.9.41数据库 云耀云服务器L实例简介 ​ 云耀云服务器L实例 是新一代的轻量应用云服务器,专门为中小企业

    2024年02月07日
    浏览(36)
  • hadoop高可用集群配置

    Apache Hadoop 3.3.4 – HDFS High Availability Using the Quorum Journal Manager 1.1、环境准备 修改IP 修改主机名及主机名和IP地址的映射 关闭防火墙 ssh免密登录 安装JDK,配置环境变量等 1.2、集群规划 linux121 linux122 linux123 NameNode NameNode JournalNode JournalNode JournalNode DataNode DataNode DataNode ZK ZK ZK Re

    2023年04月23日
    浏览(37)
  • 【Hadoop】高可用集群搭建

    大家好!这篇文章是我在搭建Hdfs的HA(高可用)时写下的详细笔记与感想,希望能帮助到大家!本篇文章收录于 初心 的 大数据 专栏。 🏠 个人主页:初心%个人主页 🧑 个人简介:大家好,我是初心,和大家共同努力 💕 座右铭:理想主义的花,终究会盛开在浪漫主义的土壤里

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包