Hadoop集群动态扩容、缩容

一、 Hadoop集群动态扩容、缩容

随着公司业务的增长,数据量越来越大,原有的datanode节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。也就是俗称的动态扩容。

有时候旧的服务器需要进行退役更换,暂停服务,可能就需要在当下的集群中停止某些机器上hadoop的服务,俗称动态缩容

1. 动态扩容

1.1. 基础准备

在基础准备部分,主要是设置hadoop运行的系统环境

修改新机器系统hostname(通过/etc/sysconfig/network进行修改)

修改hosts文件,将集群所有节点hosts配置进去(集群所有节点保持hosts文件统一)

设置NameNode到DataNode的免密码登录(ssh-copy-id命令实现)

修改主节点slaves文件,添加新增节点的ip信息(集群重启时配合一键启动脚本使用

在新的机器上上传解压一个新的hadoop安装包,从主节点机器上将hadoop的所有配置文件,scp到新的节点上。

1.2. 添加datanode

在namenode所在的机器的

/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop目录下创建dfs.hosts文件

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

vim dfs.hosts

添加如下主机名称(包含新服役的节点)

node-1

node-2

node-3

node-4

在namenode机器的hdfs-site.xml配置文件中增加dfs.hosts属性

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

vim hdfs-site.xml


<property>

<name>dfs.hosts</name>

<value>/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/dfs.hosts</value>

</property>

dfs.hosts属性的意义:命名一个文件,其中包含允许连接到namenode的主机列表。必须指定文件的完整路径名。如果该值为空,则允许所有主机。相当于一个白名单,也可以不配置。

在新的机器上单独启动datanode:  hadoop-daemon.sh start datanode

刷新页面就可以看到新的节点加入进来了

1.3. datanode负载均衡服务

新加入的节点,没有数据块的存储,使得集群整体来看负载还不均衡。因此最后还需要对hdfs负载设置均衡,因为默认的数据传输带宽比较低,可以设置为64M,即hdfs dfsadmin -setBalancerBandwidth
67108864
即可

默认balancer的threshold为10%,即各个节点与集群总的存储使用率相差不超过10%,我们可将其设置为5%。然后启动Balancer,

sbin/start-balancer.sh -threshold 5,等待集群自均衡完成即可。

1.4. 添加nodemanager

在新的机器上单独启动nodemanager:

yarn-daemon.sh
start nodemanager

在ResourceManager,通过yarn node
-list查看集群情况

动态缩容

添加退役节点

在namenode所在服务器的hadoop配置目录etc/hadoop下创建dfs.hosts.exclude文件,并添加需要退役的主机名称。

注意:该文件当中一定要写真正的主机名或者ip地址都行,不能写node-4

node04.hadoop.com

在namenode机器的hdfs-site.xml配置文件中增加dfs.hosts.exclude属性

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

vim hdfs-site.xml


<property>

<name>dfs.hosts.exclude</name>

<value>/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/dfs.hosts.exclude</value>

</property>

dfs.hosts.exclude属性的意义:命名一个文件,其中包含不允许连接到namenode的主机列表。必须指定文件的完整路径名。如果值为空,则不排除任何主机。

2.2. 刷新集群

在namenode所在的机器执行以下命令,刷新namenode,刷新resourceManager。

hdfs dfsadmin -refreshNodes

yarn rmadmin –refreshNodes

等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役。

node-4执行以下命令,停止该节点进程

cd /export/servers/hadoop-2.6.0-cdh5.14.0

sbin/hadoop-daemon.sh stop datanode

sbin/yarn-daemon.sh stop nodemanager

namenode所在节点执行以下命令刷新namenode和resourceManager

hdfs dfsadmin –refreshNodes

yarn rmadmin –refreshNodes

namenode所在节点执行以下命令进行均衡负载

cd /export/servers/hadoop-2.6.0-cdh5.14.0/

sbin/start-balancer.sh

总结:

    • 原理:增加、删除那些角色?

      node-4: datanode |nodemanager

      1

      1

      node-4: datanode |nodemanager

    • 扩容的基本步骤
      • 新服务器基础环境

        ip 主机名 hsots映射 防火墙 免密登录 jdk版本 时间同步

        1

        1

        1

        ip 主机名 hsots映射 防火墙 免密登录 jdk版本 时间同步

      • 在新服务器解压一份新的hadoop安装包
      • 把已有集群的hadoop的配置文件scp一份到新服务器安装包中
      • 手动启动新的进程

        hadoop-daemon.sh start datanode
        yarn-daemon.sh start nodemanager

        2

        2

        1

        hadoop-daemon.sh start datanode

        2

        yarn-daemon.sh start nodemanager

      • 因为新加入的节点没有数据 和已有节点间会产生负载不均衡的现象 所以需要平衡数据

        首先调整网络传输数据的带宽 默认是64M
        hdfs dfsadmin -setBalancerBandwidth 67108864
        
        然后负载均衡的服务 设置负载均衡的差异值 默认10%
        start-balancer.sh -threshold 5 等待其自动负载均衡完毕

        x

        5

        1

        首先调整网络传输数据的带宽 默认是64M

        2

        hdfs dfsadmin -setBalancerBandwidth 67108864

        3

        
        

        4

        然后负载均衡的服务 设置负载均衡的差异值 默认10%

        5

        start-balancer.sh -threshold 5 等待其自动负载均衡完毕

    • 缩容的基本步骤
      • 在主节点所在的机器配置退役节点的黑名单机制

        dfs.hosts.exclude 指定的文件就是所需要退役下线的节点
        注意:该文件的中必须是正常的ip或者主机名

        2

        2

        1

        dfs.hosts.exclude 指定的文件就是所需要退役下线的节点

        2

        注意:该文件的中必须是正常的ip或者主机名

      • 配置好之后 刷新节点信息

        hdfs dfsadmin -refreshNodes
        yarn rmadmin –refreshNodes

        2

        2

        1

        hdfs dfsadmin -refreshNodes

        2

        yarn rmadmin –refreshNodes

      • 在hdfs页面观察节点状态

        等待退役节点状态为 decommissioned
        这就意味着该下线节点已经把数据复制给其他的节点。

        2

        2

        1

        等待退役节点状态为 decommissioned

        2

        这就意味着该下线节点已经把数据复制给其他的节点。

      • 关闭退役节点的进程

        hadoop-daemon.sh stop datanode
        yarn-daemon.sh stop nodemanager

        2

        2

        1

        hadoop-daemon.sh stop datanode

        2

        yarn-daemon.sh stop nodemanager

      • 最后如果有需要 还可以针对集群再次进行负载均衡

        首先调整网络传输数据的带宽 默认是64M
        hdfs dfsadmin -setBalancerBandwidth 67108864
        
        然后负载均衡的服务 设置负载均衡的差异值 默认10%
        start-balancer.sh -threshold 5 等待其自动负载均衡完毕

        5

        5

        1

        首先调整网络传输数据的带宽 默认是64M

        2

        hdfs dfsadmin -setBalancerBandwidth 67108864

        3

        
        

        4

        然后负载均衡的服务 设置负载均衡的差异值 默认10%

        5

        start-balancer.sh -threshold 5 等待其自动负载均衡完毕

原文地址:https://www.cnblogs.com/TiePiHeTao/p/11519773.html

时间: 2024-07-29 17:19:01

Hadoop集群动态扩容、缩容的相关文章

Hadoop概念学习系列之Hadoop集群动态增加新节点或删除已有某节点及复制策略导向

hadoop-2.6.0动态添加新节点 https://blog.csdn.net/baidu_25820069/article/details/52225216 Hadoop集群动态增加新节点 一.在新增节点配置运行环境 1.安装和其他节点相同的java环境,jdk版本要相同. 2.修改/etc/hosts配置文件,添加ip与hostname的对应关系并分发到集群各个节点. 3.关闭防火墙.相关软件工具的安装等. 4.配置ssh免密码登录,使新增节点和集群其他节点能实现免密码登录. 5.修改s

分库分布的几件小事(三)可以动态扩容缩容的分库分表方案

1.扩容与缩容 这个是你必须面对的一个事儿,就是你已经弄好分库分表方案了,然后一堆库和表都建好了,基于分库分表中间件的代码开发啥的都好了,测试都ok了,数据能均匀分布到各个库和各个表里去,而且接着你还通过双写的方案咔嚓一下上了系统,已经直接基于分库分表方案在搞了. 那么现在问题来了,你现在这些库和表又支撑不住了,要继续扩容咋办?这个可能就是说你的每个库的容量又快满了,或者是你的表数据量又太大了,也可能是你每个库的写并发太高了,你得继续扩容. 缩容就是现在业务不景气了,数据量减少,并发量下降,那么

hadoop集群 动态添加或删除节点

在运行中的ambari hadoop集中中动态添加或删除节点 1. 下线hdfs节点 1) 下线datanode namenode节点上dfs.exclude文件,看配置文件怎么配置的,里每行添加一个服务器名,如我要下线server7,server8,server9,则如下: server7 server8 备注: 如果hdfs-site.xml没有找到dfs.hosts.exclude,那么就手动把下面内容加入到hdfs-site.xml中,然后把需要Decommission的机器写到文件/e

如何设计可以动态扩容缩容的分库分表方案?

对于分库分表来说,主要是面对以下问题: 选择一个数据库中间件,调研.学习.测试: 设计你的分库分表的一个方案,你要分成多少个库,每个库分成多少个表,比如 3 个库,每个库 4 个表: 基于选择好的数据库中间件,以及在测试环境建立好的分库分表的环境,然后测试一下能否正常进行分库分表的读写: 完成单库单表到分库分表的迁移,双写方案: 线上系统开始基于分库分表对外提供服务: 扩容了,扩容成 6 个库,每个库需要 12 个表,你怎么来增加更多库和表呢? 是你必须面对的一个事儿,就是你已经弄好分库分表方案

如何设计可以动态扩容缩容的分库分表方案

停机扩容(不推荐) 这个方案就跟停机迁移一样,步骤几乎一致,唯一的一点就是那个导数的工具,是把现有库表的数据抽出来慢慢倒入到新的库和表里去.但是最好别这么玩儿,有点不太靠谱,因为既然分库分表就说明数据量实在是太大了,可能多达几亿条,甚至几十亿,你这么玩儿,可能会出问题. 从单库单表迁移到分库分表的时候,数据量并不是很大,单表最大也就两三千万.那么你写个工具,多弄几台机器并行跑,1小时数据就导完了.这没有问题. 如果 3 个库 + 12 个表,跑了一段时间了,数据量都 1~2 亿了.光是导 2 亿

如何设计动态扩容缩容的分库分表方案?

面试官:如何来设计动态扩容的分库分表方案?面试官心理剖析:这个问题主要是看看你们公司设计的分库分表设计方案怎么样的?你知不知道动态扩容的方案? 回答: 背景说明:如果你们公司之前已经做了分库分表,你们当时分了 4 个库,每个库 4 张表:公司业务发展的很好,现在的数据库已经开始吃力了,不能满足快速发展的业务量了,需要进行扩容. 1)停机扩容 这个方案跟单库迁移方案是一样的,就是停服进行数据迁移,不过现在的数据迁移比之前的单库迁移要复杂的多,还有数据量也是之前的好几倍,单库的数据量可能就几千万,但

Kubernetes高级进阶之pod的自动扩容/缩容

目录:实践1:基于autoscaling cpu指标的扩容与缩容实践2:基于prometheus自定义指标QPS的扩容与缩容 Pod自动扩容/缩容(HPA) Horizontal Pod Autoscaler(HPA,Pod水平自动伸缩),根据资源利用率或者自定义指标自动调整replication controller, deployment 或 replica set,实现部署的自动扩展和缩减,让部署的规模接近于实际服务的负载.HPA不适于无法缩放的对象,例如DaemonSet. HPA主要是

Hadoop集群硬盘故障分析与自动化修复

作者:Zhang, Haohao 摘要: 硬盘在服务器中起着至关重要的作用,因为硬盘里面存储的是数据,随着制造业技术的提高,硬盘的类型也在逐渐的改变.对于硬盘的管理是IAAS部门的责任,但作为业务运维也需要懂得相关的技术. 有的公司采用LVM来管理硬盘,这样做方便扩缩容,也有的公司直接用裸盘来存数据,这样做的好处是不会因LVM而损失掉一部分硬盘I/O速度.需要根据不同的场景采用不同的方式来管理. Hadoop集群中跑Datanode服务的节点不建议做LVM,因为没有必要,你想想,Hadoop的H

基于OGG的Oracle与Hadoop集群准实时同步介绍

Oracle里存储的结构化数据导出到Hadoop体系做离线计算是一种常见数据处置手段.近期有场景需要做Oracle到Hadoop体系的实时导入,这里以此案例做以介绍.Oracle作为商业化的数据库解决方案,自发性的获取数据库事务日志等比较困难,故选择官方提供的同步工具OGG(Oracle GoldenGate)来解决. 安装与基本配置 环境说明 软件配置 角色 数据存储服务及版本 OGG版本 IP 源服务器 OracleRelease11.2.0.1 Oracle GoldenGate 11.2