生产HDFS Block损坏恢复最佳实践

本文详细介绍了HDFS中数据块的健康状态检查、手动及自动修复过程,包括删除损坏块、手动修复命令使用及自动修复机制触发条件,为HDFS维护人员提供实用指导。

一.文件opencv_bigdata.md

上传:
-bash-4.2$ hdfs dfs -mkdir /blockrecover
-bash-4.2$ echo "www.opencv_bigdata.com" > opencv_bigdata.md

-bash-4.2$ hdfs dfs -put opencv_bigdata.md /blockrecover
-bash-4.2$ hdfs dfs -ls /blockrecover
Found 1 items
-rw-r--r--   3 hdfs supergroup         18 2019-03-03 14:42 /blockrecover/opencv_bigdata.md
-bash-4.2$ 

校验: 健康状态
-bash-4.2$ hdfs fsck /
Connecting to namenode via http://yws76:50070/fsck?ugi=hdfs&path=%2F
FSCK started by hdfs (auth:SIMPLE) from /192.168.0.76 for path / at Sun Mar 03 14:44:44 CST 2019
...............................................................................Status: HEALTHY
 Total size:    50194618424 B
 Total dirs:    354
 Total files:   1079
 Total symlinks:                0
 Total blocks (validated):      992 (avg. block size 50599413 B)
 Minimally replicated blocks:   992 (100.0 %)
 Over-replicated blocks:        0 (0.0 %)
 Under-replicated blocks:       0 (0.0 %)
 Mis-replicated blocks:         0 (0.0 %)
 Default replication factor:    3
 Average block replication:     3.0
 Corrupt blocks:                0
 Missing replicas:              0 (0.0 %)
 Number of data-nodes:          3
 Number of racks:               1
FSCK ended at Sun Mar 03 14:44:45 CST 2019 in 76 milliseconds

The filesystem under path '/' is HEALTHY
-bash-4.2$ 

二.直接DN节点上删除文件一个block的一个副本(3副本)

删除块和meta文件:
[root@yws87 subdir135]# rm -rf blk_1075808214 blk_1075808214_2068515.meta

直接重启HDFS,直接模拟损坏效果,然后fsck检查:
-bash-4.2$ hdfs fsck /
Connecting to namenode via http://yws77:50070/fsck?ugi=hdfs&path=%2F
FSCK started by hdfs (auth:SIMPLE) from /192.168.0.76 for path / at Sun Mar 03 16:02:04 CST 2019
.
/blockrecover/ruozedata.md:  Under replicated BP-1513979236-192.168.0.76-1514982530341:blk_1075808214_2068515. Target Replicas is 3 but found 2 live replica(s), 0 decommissioned replica(s), 0 decommissioning replica(s).
...............................................................................Status: HEALTHY
 Total size:    50194618424 B
 Total dirs:    354
 Total files:   1079
 Total symlinks:                0
 Total blocks (validated):      992 (avg. block size 50599413 B)
 Minimally replicated blocks:   992 (100.0 %)
 Over-replicated blocks:        0 (0.0 %)
 Under-replicated blocks:       1 (0.10080645 %)
 Mis-replicated blocks:         0 (0.0 %)
 Default replication factor:    3
 Average block replication:     2.998992
 Corrupt blocks:                0
 Missing replicas:              1 (0.033602152 %)
 Number of data-nodes:          3
 Number of racks:               1
FSCK ended at Sun Mar 03 16:02:04 CST 2019 in 148 milliseconds


The filesystem under path '/' is HEALTHY
-bash-4.2$ 

三.手动修复hdfs debug

-bash-4.2$ hdfs |grep debug
没有输出debug参数的任何信息结果!
故hdfs命令帮助是没有debug的,但是确实有hdfs debug这个组合命令,切记。

修复命令:
-bash-4.2$ hdfs debug  recoverLease  -path /blockrecover/opencv_bigdata.md -retries 10
recoverLease SUCCEEDED on /blockrecover/ruozedata.md
-bash-4.2$ 

直接DN节点查看,block文件和meta文件恢复:
[root@yws87 subdir135]# ll
total 8
-rw-r--r-- 1 hdfs hdfs 56 Mar  3 14:28 blk_1075808202
-rw-r--r-- 1 hdfs hdfs 11 Mar  3 14:28 blk_1075808202_2068503.meta
[root@yws87 subdir135]# ll
total 24
-rw-r--r-- 1 hdfs hdfs 56 Mar  3 14:28 blk_1075808202
-rw-r--r-- 1 hdfs hdfs 11 Mar  3 14:28 blk_1075808202_2068503.meta
-rw-r--r-- 1 hdfs hdfs 18 Mar  3 15:23 blk_1075808214
-rw-r--r-- 1 hdfs hdfs 11 Mar  3 15:23 blk_1075808214_2068515.meta

四.自动修复

当数据块损坏后,DN节点执行directoryscan操作之前,都不会发现损坏;
也就是directoryscan操作是间隔6h
dfs.datanode.directoryscan.interval : 21600

在DN向NN进行blockreport前,都不会恢复数据块;
也就是blockreport操作是间隔6h
dfs.blockreport.intervalMsec : 21600000

当NN收到blockreport才会进行恢复操作。

具体参考生产上HDFS(CDH5.12.0)对应的版本的文档参数:查看网址

总结:

生产上一般倾向于使用 手动修复方式,但是前提要手动删除损坏的block块。
切记,是删除损坏block文件和meta文件,而不是删除hdfs文件。
当然还可以先把文件get下载,然后hdfs删除,再对应上传。
切记删除不要执行: hdfs fsck / -delete 这是删除损坏的文件, 那么数据不就丢了嘛;除非无所谓丢数据,或者有信心从其他地方可以补数据到hdfs!

考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
<think>好的,我现在需要帮助用户了解HDFS存储文件的功能以及解决相关问题。首先,用户提到了如何在HDFS中存储文件或者最佳实践,我需要结合提供的引用内容来组织回答。 首先,根据引用[1],HDFS的架构是主从结构,包括NameNode和DataNode。NameNode管理元数据,DataNode存储实际数据块。存储文件时,文件会被分割成块,默认大小是128MB(Hadoop 3.x)。这里要确保提到文件分块和副本机制,副本数由dfs.replication控制,引用[2]提供了设置副本数的两种方法,一种是修改hdfs-site.xml,另一种是用命令行setrep,这个需要详细说明。 然后,用户可能需要具体操作步骤,比如使用hdfs dfs -put命令上传文件,这部分虽然引用中没有直接提到,但属于常见操作,需要包含进去。另外,引用[3]提到文件以block存储,路径在DataNode的本地目录,比如/home/hadoop-3.3.3/etc/hadoop/hdfs-site.xml中配置的存储路径,这部分可以解释如何查看存储位置。 最佳实践方面,需要强调副本数的设置、监控存储均衡、避免小文件、定期维护等。引用[2]中的方法二可以动态调整副本数,不需要重启,这对生产环境很重要。同时,引用[3]中的文件块存储位置可以帮助用户理解数据分布,确保集群的可靠性和性能。 还要注意回答的结构要清晰,分步骤说明存储流程,然后列出最佳实践。最后生成相关问题,需要围绕HDFS存储机制、配置调整、问题排查等展开。 需要确保所有技术术语正确,比如NameNode、DataNode、block大小、副本数设置方法等。同时,引用标记要正确对应,比如引用[1]对应架构,引用[2]对应副本设置,引用[3]对应存储位置。 现在整理回答的结构: 1. HDFS存储文件的基本原理:分块、副本、主从架构。 2. 存储步骤:命令上传、分块存储、副本创建。 3. 关键配置:副本数设置方法(配置文件和命令行)。 4. 最佳实践:副本数、监控、小文件处理、维护。 5. 查看存储位置的方法:配置文件中的路径。 然后生成相关问题,如存储机制、修改副本、解决小文件问题等。</think>### HDFS文件存储功能及最佳实践 #### 1. HDFS存储文件的基本原理 HDFS(Hadoop Distributed File System)采用主从架构,由**NameNode**(管理元数据)和多个**DataNode**(存储数据块)组成[^1]。文件会被分割为固定大小的块(默认128MB),每个块在集群中存储多个副本(默认3个),通过冗余机制保障数据可靠性[^2]。 #### 2. 存储文件的具体步骤 - **上传文件**:使用`hdfs dfs -put`命令将本地文件上传至HDFS。 ```bash hdfs dfs -put local_file.txt /user/hadoop/input/ ``` - **分块存储**:文件自动拆分为多个Block,例如1GB文件会被分为8个128MB块。 - **副本创建**:每个Block根据配置的副本数(`dfs.replication`)复制到不同DataNode,确保容错[^2]。 #### 3. 关键配置项 - **修改副本数**: - **方法一**:在`hdfs-site.xml`中静态配置: ```xml <property> <name>dfs.replication</name> <value>2</value> <!-- 设置为2个副本 --> </property> ``` - **方法二**:通过命令行动态调整(无需重启): ```bash hdfs dfs -setrep -R 2 /user/hadoop/input # 修改指定目录的副本数 ``` 此方法适用于生产环境实时优化。 #### 4. 最佳实践 - **合理设置副本数**:根据集群规模和数据重要性调整,例如小型集群可设为2,关键数据设为3。 - **避免小文件**:合并小文件(如使用HAR或SequenceFile),减少NameNode内存压力。 - **存储均衡监控**:定期检查`hdfs dfsadmin -report`,确保DataNode存储分布均匀。 - **数据维护**:清理临时文件(`hdfs dfs -expunge`)和修复损坏块(`hdfs fsck / -delete`)。 #### 5. 查看文件存储位置 - **Block物理路径**:在DataNode的本地目录中,路径由`hdfs-site.xml`的`dfs.datanode.data.dir`配置,例如: ```bash /data/hadoop/hdfs/datanode/current/BP-123456789/current/finalized/ ``` 可通过`hdfs fsck <file_path> -files -blocks -locations`查询具体Block位置[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值