文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

HDFS中DataNode磁盘如何管理

2023-06-02 21:53

关注

这篇文章将为大家详细讲解有关HDFS中DataNode磁盘如何管理,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在单一DataNode管理多个磁盘的情况下,执行普通写操作时的每个磁盘用量比较平均。但是,添加或者更换磁盘将会导致DataNode磁盘用量严重不均衡,传统的HDFS均衡器关注点是DataNode之间(inter-)而不是intra-,但是Hadoop 3.0及以上版本中,新的HDFS Intra-DataNode磁盘平衡器可以很好得解决上述问题。

HDFS现在包括(在CDH 5.8.2及更高版本中提供)全面的存储容量管理方法,用于跨节点移动数据。熟悉Hadoop简单配置的同学应该都知道hdfs-site.xml,在HDFS中,DataNode将数据块扩展到本地文件系统目录,可以使用hdfs-site.xml中的dfs.datanode.data.dir指定。在一个典型的安装过程中,每个目录(在HDFS术语中称作卷)位于不同的设备上(例如,在单独的HDD和SSD上)。

当我们将新块写入HDFS时,DataNode使用卷选择策略为块选择磁盘。目前支持两种策略类型:轮询(round-robin)和可用空间(available space)(HDFS-1804)。

HDFS中DataNode磁盘如何管理

简而言之,如上图所示,轮询策略在可用磁盘上均匀分配新块,而可用空间策略优先将数据写入具有最多可用空间(按百分比)的磁盘。

默认情况下,DataNode使用基于轮询的策略来编写新块。但是,在长时间运行的集群中,由于HDFS中的大量文件删除或通过磁盘热交换功能添加新的DataNode磁盘等事件,DataNode仍然可能创建了显著不平衡的卷。即使使用基于可用空间的卷选择策略,卷不平衡现象仍然会导致磁盘I/O效率降低:例如,每个新的写入都转到新添加的空磁盘而其他磁盘空闲,这会给新磁盘造成瓶颈。

Apache Hadoop社区开发了服务器脱机脚本以缓解数据不平衡问题。但是,由于在HDFS代码库之内,这些脚本要求DataNode在磁盘间移动数据前处于脱机状态。因此,HDFS-1312引入了在线磁盘平衡器,旨在根据各种指标重新平衡正在运行的DataNode上的卷。与HDFS Balancer类似,HDFS磁盘平衡器作为DataNode中的线程运行,以跨具有相同存储类型的卷移动块文件。

磁盘平衡器101

让我们使用示例逐步探索该功能。首先,确认所有DataNode上的dfs.disk.balancer.enabled配置都设置为true。从CDH 5.8.2开始,用户可以通过Cloudera Manager中的HDFS安全阀片段指定此配置:

HDFS中DataNode磁盘如何管理

在此示例中,我们将向预加载的HDFS DataNode(/ mnt / disk1)添加新磁盘,并将新磁盘装入/mnt/disk2。在CDH中,每个HDFS数据目录都在一个单独的磁盘上,因此用户可以使用df来显示磁盘使用情况:

# df -h …. /var/disk1      5.8G  3.6G  1.9G  66% /mnt/disk1 /var/disk2      5.8G   13M  5.5G   1% /mnt/disk2

显然,是时候让磁盘再次平衡!传统的磁盘平衡器任务涉及三个步骤(通过HDFS diskbalancer命令实现):计划,执行和查询。在第一步中,HDFS客户端从NameNode读取有关指定DataNode的必要信息,以生成执行计划:

# hdfs diskbalancer -plan lei-dn-3.example.org 16/08/19 18:04:01 INFO planner.GreedyPlanner: Starting plan for Node : lei-dn-3.example.org:20001 16/08/19 18:04:01 INFO planner.GreedyPlanner: Disk Volume set 03922eb1-63af-4a16-bafe-fde772aee2fa Type : DISK plan completed.Th 16/08/19 18:04:01 INFO planner.GreedyPlanner: Compute Plan for Node : lei-dn-3.example.org:20001 took 5 ms 16/08/19 18:04:01 INFO command.Command: Writing plan to : /system/diskbalancer/2016-Aug-19-18-04-01

从输出中可以看出,HDFS 磁盘平衡器通过数据节点将磁盘使用信息报告给NameNode,并计算指定DataNode上的数据移动步骤。每个步骤都指定要移动数据的源卷和目标卷,以及预期要移动的数据量。

在撰写本文时,HDFS支持的唯一规划器是GreedyPlanner,它不断地将数据从最常用的设备移动到最少使用的设备,直到所有数据均匀分布在所有设备上。用户还可以在plan命令中指定空间利用率的阈值,如果空间利用率的差异低于阈值,则规划人员会认为磁盘是平衡的。(另一个值得注意的选择是通过在规划过程中指定--bandwidth来限制磁盘平衡器任务I / O,以免磁盘平衡器I/O影响前台工作。)

磁盘平衡器执行计划生成为存储在HDFS中的JSON文件。默认情况下,计划文件存储在/system/diskbalancer目录中:

# hdfs dfs -ls /system/diskbalancer/2016-Aug-19-18-04-01 Found 2 items -rw-r--r--   3 hdfs supergroup       1955 2016-08-19 18:04 /system/diskbalancer/2016-Aug-19-18-04-01/lei-dn-3.example.org.before.json -rw-r--r--   3 hdfs supergroup        908 2016-08-19 18:04 /system/diskbalancer/2016-Aug-19-18-04-01/lei-dn-3.example.org.plan.json

要在DataNode上执行计划,请运行:

$ hdfs diskbalancer -execute /system/diskbalancer/2016-Aug-17-17-03-56/172.26.10.16.plan.json 16/08/17 17:22:08 INFO command.Command: Executing "execute plan" command

此命令用于将JSON计划文件提交给DataNode,后者在BlockMoverthread线程的后台执行。

要检查DataNode上diskbalancer任务的状态,请使用query命令:

# hdfs diskbalancer -query lei-dn-3:20001 16/08/19 21:08:04 INFO command.Command: Executing "query plan" command. Plan File: /system/diskbalancer/2016-Aug-19-18-04-01/lei-dn-3.example.org.plan.json Plan ID: ff735b410579b2bbe15352a14bf001396f22344f7ed5fe24481ac133ce6de65fe5d721e223b08a861245be033a82469d2ce943aac84d9a111b542e6c63b40e75 Result: PLAN_DONE

输出(PLAN_DONE)表示磁盘平衡任务已完成。如果要验证磁盘平衡器的有效性,可以再次使用df -h查看跨两个本地磁盘的数据分布情况:

# df -h Filesystem      Size  Used Avail Use% Mounted on …. /var/disk1      5.8G  2.1G  3.5G  37% /mnt/disk1 /var/disk2      5.8G  1.6G  4.0G  29% /mnt/disk2

只要输出确认磁盘平衡器成功地将磁盘空间使用量差异减少到10%以下,那就意味着任务完成了。

关于“HDFS中DataNode磁盘如何管理”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯