[喵咪大数据]Hadoop节点添加下线和磁盘扩容操作

2024-05-31 07:18

本文主要是介绍[喵咪大数据]Hadoop节点添加下线和磁盘扩容操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hadoop绝非一个简单程序,集群模式下更是如此,所有的数据都存储在Hadoop中如果操作不当会存在丢失数据的风险,那么怎么在安全的情况,扩容下线维护或者磁盘满了怎么增加空间,就是今天的主要内容了.

附上:

Hadoop的官网:hadoop.apache.org
喵了个咪的博客:w-blog.cn

1.增加节点

当磁盘满了或节点不够处理速度慢了都需要对节点或者通过增加节点的方式进行磁盘扩容,这个时候就需要用到Hadoop扩容机制了

通过如下命令可以查看各节点情况磁盘容量等

> hadoop dfsadmin -report

笔者现在有两个节点两还剩下大约 33GB的容量,我们先向HDFS中写入一些数据(笔者这里写入了9.1GB的数据)

> hdfs dfs -mkdir input
> hdfs dfs -put /app/install/* input

可以看到已经写入了很多大文件这个时候查询集群状态会发现两个节点从原本的33GB剩余已经缩减到了23GB,因为现在我们只有两个节点选择的备份数量也是2个所以每份文件都会在两个节点中进行存储

首先先进行节点扩容我们的hadoop-1现在只是作为了NameNode现在要把hadoop-1加入DataNode中然后把现在有的数据进行平均负载让hadoop-1也承担一部分文件存储工作

在master节点上修改slaves增加hadoop-1

> vim /usr/local/hadoop-2.7.3/etc/hadoop/slaves
hadoop-1

在需要增加到集群的节点中指向如下命令

> hadoop-daemon.sh start datanode #启动datanode
> yarn-daemons.sh start nodemanager #启动yarn

在master节点上执行

hadoop dfsadmin -refreshNodes #刷新识别新增加的节点
yarn rmadmin -refreshNodes    #刷新yarn识别新节点

这个时候在通过 hadoop dfsadmin -report 查看集群状况就可以看到增加了一个节点,但是这个节点暂时没有存储任何的文件需要指向如下命令将文件进行负载均衡

如果不balance,那么cluster会把新的数据都存放在新的node上,但是这样会降低mapred的工作效率
设置平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长

start-balancer.sh -threshold 5

如果拷贝时间非常慢可以通过修改hdfs-site.xml设置balance的带宽,默认只有1M/s

> vim /usr/local/hadoop-2.7.3/etc/hadoop/hdfs-site.xml
<property><name>dfs.balance.bandwidthPerSec</name> <value>10485760</value> <description> Specifies the maximum amount of bandwidth that each datanode  can utilize for the balancing purpose in term of  the number of bytes per second.  </description>
</property>

2.下线节点

当我们不需要节点或者是需要对节点进维护(比如增加磁盘等操作需要重启)希望能够平滑下线Hadoop提供对应的方式

在NameNode节点中添加(或修改)如下配置项到hdfs-site.xml

> vim /usr/local/hadoop-2.7.3/etc/hadoop/hdfs-site.xml
<property>  <name>dfs.hosts.exclude</name>  <value>/usr/local/hadoop-2.7.3/etc/hadoop/dfshosts.exclude</value>   
</property>  

编辑dfshosts.exclude 增加需要下线的节点名称

> vim /usr/local/hadoop-2.7.3/etc/hadoop/dfshosts.exclude
hadoop-2

在执行下线命令

hdfs dfsadmin -refreshNodes

在通过查看节点就会发现有一个 Decommissioning datanodes 此时任何数据都不会写入到下线的datanode中(下线的节点中有数据的话hadoop复制该datanode block至其他datanode需要一定的下线时间)此时下线的是hadoop-2 , hadoop-2中的块将会被迁移到 hadoop-1中,前已完成之后Decommissioning datanodes将会消失然后就可以关闭hadoop-2中的服务了,如果需要在加入到集群中只需要去除dfshosts.exclude在重新刷新

下线nodemanager也是一样修改l增加如下配置

> vim /usr/local/hadoop-2.7.3/etc/hadoop/yarn-site.xml
<property>  <name>mapred.hosts.exclude</name>  <value>/usr/local/hadoop-2.7.3/etc/hadoop/dfshosts.exclude</value>   
</property>

执行下线命令

yarn rmadmin -refreshNodes

在已经下线的节点就可以正常的关闭 datanode进程

hadoop-daemon.sh stop datanode 

通过 hadoop dfsadmin -report 查看会发现hadoop-2的状态是 Decommissioned 退役状况 这个时候文件不会再写入到hadoop2节点中

3.磁盘扩容

当整个集群存入的数据量慢慢增加磁盘总会不够,此时此刻就需要增加磁盘来解决此类问题

现在我们有3个节点可以查看到如下信息

> hdfs dfsadmin -report
Configured Capacity: 126421499904 (117.74 GB)
Present Capacity: 107068563456 (99.72 GB)
DFS Remaining: 81215922176 (75.64 GB)
DFS Used: 25852641280 (24.08 GB)
DFS Used%: 24.15%

此时我们给节点2进行磁盘扩容,这里使用的阿里云服务器增加了一块100GB的磁盘挂载到了hadoop-2服务器上
步骤 4:Linux 格式化和挂载数据盘快速入门云服务器 ECS-阿里云

> df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       41152832 13745964  25293384  36% /
/dev/vdb1      103080224    61176  97776220   1% /mnt

多出了一个 /mut 赋予权限

> sudo chown -R hadoop:hadoop /mnt

首先现需要下线hadoop-2节点,下线之后在hadoop-2

> su hadoop
> hadoop-daemon.sh stop datanode

修改hadoop-2配置文件vim hdfs-site.xml

> vim /usr/local/hadoop-2.7.3/etc/hadoop/hdfs-site.xml<property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop-2.7.3/tmp/dfs/data,file:/mnt/dfs/data</value></property>

然后在启动datanode

> hadoop-daemon.sh start datanode

在hadoop-1通过NameNode中查看集群状态

> hadoop dfsadmin -report
Name: 192.168.1.102:50010 (sunmi-hadoop-2)
Hostname: sunmi-hadoop-2
Decommission Status : Decommissioned
Configured Capacity: 147694649344 (137.55 GB)
DFS Used: 9414242304 (8.77 GB)
Non DFS Used: 12258566144 (11.42 GB)
DFS Remaining: 126021840896 (117.37 GB)
DFS Used%: 6.37%
DFS Remaining%: 85.33%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Thu Jul 20 11:30:42 CST 2017

hadoop-2的容量就增加了然后重新让节点上线

vim /usr/local/hadoop-2.7.3/etc/hadoop/dfshosts.exclude
# 清除
hadoop-2
# 更新节点
> hdfs dfsadmin -refreshNodes
> yarn rmadmin -refreshNodes

然后在查看集群状况就增加了100GB的DFS的空间

> hadoop dfsadmin -report
Configured Capacity: 231975649280 (216.04 GB)
Present Capacity: 207191623885 (192.96 GB)
DFS Remaining: 176628416512 (164.50 GB)
DFS Used: 30563207373 (28.46 GB)
DFS Used%: 14.75%

4 总结

关于Hadoop相关的配置到这篇就已经结束了,关于Hadoop如果希望深入了解可以读阅

这篇关于[喵咪大数据]Hadoop节点添加下线和磁盘扩容操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017552

相关文章

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十