hdfs节点类型,hdfs名称节点和数据节点的具体功能
chanong
|作者:唐辉
1
创建文档的目的
Hadoop 集群提供取消主机身份验证和从集群中删除节点的操作。正常情况下,取消节点授权不会导致区块丢失。但在一些特殊场景下,可能还会残留少量的块。本文介绍了HDFS中节点成功取消授权后丢失的数据如何恢复,节点成功取消授权后块如何以及为何会丢失,并且我们将主要介绍避免这些风险的方法。
文章摘要1. 模拟块丢失
2. 恢复失权离线节点上的数据。
3. 正常解除认证和离线操作导致数据丢失的原因分析
4. 如何在退役DataNode 之前调整HDFS
测试环境1.CM和CDH5.15.1
2.现有集群操作系统RedHat7.2
3. 节点下线后,本地磁盘上的数据通常不会被删除。
2
模拟缺失的块
1.首先模拟块丢失,找到HDFS中原始文件中块的名称和位置。
hadoop fsck /user/test/a.txt -files -blocks -locations2. 接下来在本地磁盘上查找包含这些文件和图元文件的文件名,即文件中的blk_100376901 和blk_100376901_28795.meta。将节点上的两个副本mv添加到其他路径中。该测试直接移至data1目录。
find /data1/dfs/dn -name blk_100376901*3,然后一般会取消对最后一个节点副本的授权,停止CM上的主机角色,然后取消授权(取消授权会导致HDFS取消授权步骤可能停止。注意:存储在HDFS上的数据节点下线后本地盘仍保留在本地盘。
4.由于HDFS中元数据信息排序的过程比较慢,所以我直接重启HDFS并运行check命令,发现下面所示的块丢失了。
3
重启节点并恢复数据
该文件块的三个副本中有两个丢失,其中一个位于脱机的节点上。离线节点的数据仍在本地磁盘上,并未被删除。重装节点后HDSF还能找到吗?所以我尝试将其脱机并将节点添加回集群。
1. 选择将新主机添加到CM 集群。
2. 等待一系列步骤完成
4. 重新添加到集群并启动角色后,请注意Block会自动恢复其三个副本。
如果您转到其他节点并搜索副本,您将看到它已被重新复制并在原始路径处生成。
分析:HDFS中的NameNode记录了块的名称以及存储块副本的节点。将节点重新添加到集群后,可以再次找到之前保存的块。没有数据丢失,但节点已离线,当您将其添加回集群时,您会注意到该块同时存在四个副本。一段时间后删除多余的副本。
四
分析定期解除认证和离线导致数据丢失的原因
1、同时离线的节点过多。如果副本数为3,我们建议最多同时停用2个数据节点进行离线操作。离线操作完成后,检查副本以确保没有问题,然后再使其他节点离线。
2、离线前数据拷贝不完整。我们建议您在离线之前和之后检查您的副本。有关更多信息,请参阅第5 章,如何在取消数据节点授权之前调整HDFS。
3、由于网络带宽的原因,集群内作业较多,带宽占用较高,导致副本无法复制到其他节点。如果有数据平衡操作,则必须停止数据平衡操作。数据平衡移动块的副本。
五
如何在退役DataNode 之前调整HDFS
1.减少同时离线的节点数量
我们建议并行停用少量DataNode。例如,如果副本数为3,建议您在进行离线操作时最多同时停用两个数据节点,并等待离线操作完成后再进行副本检查。
hdfs fsck/-list-corruptfileblocks -openforwrite -files -blocks -locations 21 /tmp/hdfs-fsck.txt 2、检查离线节点是否存在异常副本或块,如果存在则修复。
当DataNode 退役时,NameNode 确保DataNode 的每个块根据复制因子在整个集群中保持可用。此过程涉及从小批量地从DataNode 复制块。如果DataNode有数千个块,退役可能需要几个小时。在使用Cloudera Manager 停用DataNode 之前,您必须首先调整HDFS。
运行以下命令来确定HDFS 文件系统问题。
hdfs fsck/-list-corruptfileblocks -openforwrite -files -blocks -locations 21 /tmp/hdfs-fsck.txt #如果有丢失块,则运行hdfs fsck file_name -move #或hdfs fsck file_name -delete,主要增加以下内容参数。 HDFS平衡速度实际上加快了DataNodes的离线速度。
3. 增加DataNode堆栈大小。为了加快数据复制周期和每次最大数据传输速度,您必须将DataNode 堆大小配置为至少4 GB。
进入HDFS服务页面。单击“配置”选项卡,选择“数据节点范围”,选择“类别资源管理”,然后按照“DataNode Java 堆大小(字节)”属性中的建议设置数据Java 堆大小。单击“保存更改”以提交您的更改。 4. 设置DataNode平衡带宽并停止数据平衡操作。
选择Scope DataNode 并展开Category Performance 类别。根据自己的实际情况增加DataNode Balancing Bandwidth(默认10MB比较小)。当然,您可以将其设置为较低的值,以尽量减少退役对集群的影响,但代价是使退役时间更长。单击“保存更改”以提交您的更改。 5. 增加Maximum Iteration Size 参数(默认值为2,建议值为10)。
选择范围NameNode 并展开Category Advanced 类别。将每次迭代的复制工作乘数属性配置为值10(例如10)。单击“保存更改”以提交您的更改。 6. 增加最大复制线程数和最大复制线程的硬限制。
选择范围NameNode 并展开Category Advanced 类别。将数据节点上的最大复制线程数和数据节点上的复制线程数硬限制分别配置为50和100。当然,您可以减少线程数量(或使用默认值),以最大程度地减少退役对集群的影响,但代价是退役将花费更长的时间。单击“保存更改”以提交您的更改。 7. 重启HDFS服务使配置生效。
参考文章:
https://www.cloudera.com/documentation/enterprise/5-12-x/topics/cm_mc_decomm_host.html#concept_grc_1tw_cy
提示:您可以左右滑动查看代码块部分。
树立慈悲天地之心,确立生命与人的命运,传承历代圣人的独特教诲,创造万世太平。
注:如果在电脑上查看图片不清晰,请使用手机打开文章,点击文章中的图片即可查看原图的高分辨率放大图。
我们鼓励您在实践中关注Hadoop,并尽快分享更多Hadoop信息。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实践








