针对例会中出现的split块的位置问题的解决方案

news/2024/5/20 5:09:33 标签: hdfs, fsck, 查看block块信息

本文作者:王婷婷
针对例会中出现的问题,本人提出的解决方案如下:
这里写图片描述
涉及到的具体技术实现细节包括hdfs fsck机制与脚本批量执行机制,先分别介绍。
1、hdfs fsck机制
在HDFS中,提供了fsck命令,用于检查HDFS上文件和目录的健康状态、获取文件的block块信息和位置信息等。
集群情况:

[root@hadoop11 local]# jps
28234 NameNode
28419 SecondaryNameNode
34256 Jps
[root@hadoop22 ~]# jps
9741 ResourceManager
38972 Jps
[root@hadoop33 finalized]# jps
24581 DataNode
12653 NodeManager
27061 Jps
[root@hadoop44 finalized]# jps
9988 NodeManager
46310 DataNode
48784 Jps
[root@hadoop55 finalized]# jps
11563 NodeManager
904 Jps
46774 DataNode
[root@hadoop66 finalized]# jps
4349 DataNode
10560 NodeManager
6833 Jps

HDFS文件系统中文件存储情况:

[root@hadoop11 local]# hadoop fs -ls /
Found 1 items
-rw-r--r--   3 root supergroup  319687975 2016-07-10 16:28 /hepmass.txt
[root@hadoop11 local]# hadoop fs -du -s -h /hepmass.txt
304.9 M  /hepmass.txt

上面的情况介绍完之后,将具体介绍hdfs fsck命令:

[root@hadoop11 local]# hdfs fsck
Usage: DFSck <path> [-list-corruptfileblocks | [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]]]
        <path>  start checking from this path
        -move   move corrupted files to /lost+found
        -delete delete corrupted files
        -files  print out files being checked
        -openforwrite   print out files opened for write
        -includeSnapshots       include snapshot data if the given path indicates a snapshottable directory or there are snapshottable directories under it
        -list-corruptfileblocks print out list of missing blocks and files they belong to
        -blocks print out block report
        -locations      print out locations for every block
        -racks  print out network topology for data-node locations

具体命令介绍:
-move: 移动损坏的文件到/lost+found目录下
-delete: 删除损坏的文件
-openforwrite: 输出检测中的正在被写的文件
-list-corruptfileblocks: 输出损坏的块及其所属的文件
-files: 输出正在被检测的文件
-blocks: 输出block的详细报告 (需要和-files参数一起使用)
-locations: 输出block的位置信息 (需要和-files参数一起使用)
-racks: 输出文件块位置所在的机架信息(需要和-files参数一起使用)

例如要查看HDFS中某个文件的block块的具体分布,可以这样写:
hadoop fsck /your_file_path -files -blocks -locations -racks
示例:

[root@hadoop11 local]# hdfs fsck /hepmass.txt  -files -blocks  -locations
Connecting to namenode via http://hadoop11:50070
FSCK started by root (auth:SIMPLE) from /10.187.84.50 for path /hepmass.txt at Sun Jul 10 19:13:03 CST 2016
/hepmass.txt 319687975 bytes, 3 block(s):  OK
0. BP-1987893578-10.187.84.50-1467446212499:blk_1073748824_8000 len=134217728 repl=3 [10.187.84.52:50010, 10.187.84.53:50010, 10.187.84.55:50010]
1. BP-1987893578-10.187.84.50-1467446212499:blk_1073748825_8001 len=134217728 repl=3 [10.187.84.53:50010, 10.187.84.55:50010, 10.187.84.52:50010]
2. BP-1987893578-10.187.84.50-1467446212499:blk_1073748826_8002 len=51252519 repl=3 [10.187.84.54:50010, 10.187.84.52:50010, 10.187.84.53:50010]

其中前面的0. 1. 2.代表该文件的block索引顺序;
BP-1987893578-10.187.84.50-1467446212499:blk_1073748824_8000表示block id;
len=134217728(128M)表示该文件块大小;
repl=3 表示该block块的副本数;

Status: HEALTHY
 Total size:    319687975 B
 Total dirs:    0
 Total files:   1
 Total symlinks:                0
 Total blocks (validated):      3 (avg. block size 106562658 B)
 Minimally replicated blocks:   3 (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:          4
 Number of racks:               1
FSCK ended at Sun Jul 10 19:13:03 CST 2016 in 0 milliseconds

The filesystem under path '/hepmass.txt' is HEALTHY

我们随后在各个NodeManager节点上进行数据核对:

[root@hadoop33 finalized]# pwd
/usr/local/hadoop/tmp/dfs/data/current/BP-1987893578-10.187.84.50-1467446212499/current/finalized
[root@hadoop33 finalized]# du -sh *
128M    blk_1073748824
1.1M    blk_1073748824_8000.meta
128M    blk_1073748825
1.1M    blk_1073748825_8001.meta
49M     blk_1073748826
392K    blk_1073748826_8002.meta
[root@hadoop44 finalized]# du -sh *
128M    blk_1073748824
1.1M    blk_1073748824_8000.meta
128M    blk_1073748825
1.1M    blk_1073748825_8001.meta
49M     blk_1073748826
392K    blk_1073748826_8002.meta
[root@hadoop55 finalized]# du -sh *
49M     blk_1073748826
392K    blk_1073748826_8002.meta
[root@hadoop66 finalized]# du -sh *
128M    blk_1073748824
1.1M    blk_1073748824_8000.meta
128M    blk_1073748825
1.1M    blk_1073748825_8001.meta

经过验证:fsck命令输出的结果是正确的。
2、批脚本执行机制
利用完hdfs fsck机制之后,我们相当于间接确定了block块的位置,接下来我们将对应的block数据上传到hdfs中。

[root@hadoop33 finalized]# du -sh *
128M    blk_1073748824
1.1M    blk_1073748824_8000.meta
128M    blk_1073748825
1.1M    blk_1073748825_8001.meta
49M     blk_1073748826
392K    blk_1073748826_8002.meta
[root@hadoop33 finalized]# hadoop fs -put blk_1073748824  /
[root@hadoop33 finalized]# hadoop fs -put blk_1073748825  /
[root@hadoop33 finalized]# hadoop fs -put blk_1073748826  /

编写脚本文件:

[root@hadoop11 local]# more app1.sh
#!/bin/sh
#执行三个wordcount任务
hadoop jar /usr/local/WordCount.jar  /blk_1073748824  /dirpart1/
hadoop jar /usr/local/WordCount.jar  /blk_1073748825  /dirpart2/
hadoop jar /usr/local/WordCount.jar  /blk_1073748826  /dirpart3/
#查看其中的一个结果:
hadoop fs -cat  /dirpart3/part-r-00000

http://www.niftyadmin.cn/n/1159699.html

相关文章

音频编码PCM

PCM简介 pcm也被称为 脉码编码调制&#xff0c;是音频中没经过压缩的原始数据。 在声音采集中经过抽样&#xff0c;量化&#xff0c;最后编码。 采样:对声音进行一定频率的采集&#xff0c;频率越高&#xff0c;间隔时间越小&#xff0c;声音更接近真实。常用的采样率有8khz&am…

采样率的转换

一、高变低 例如16k转换为8k&#xff0c;就是将16k降为8k&#xff0c;也就是每采集的16k两次数据变为1次&#xff0c;采用两个数据求平均除以2 二、低变高 例如 8k变为16k升频。将8k的每个数据变为两个&#xff0c;也就是后一个数据减去前一个数据除以2&#xff0c;加上前一个…

Hadoop与之对应的Hbase版本问题

转载网址&#xff1a;http://blog.csdn.net/caoshichaocaoshichao/article/details/13096279

HBase Shell输入命令无法删除问题的解决技巧

问题&#xff1a;通过SecureCRT对hbase进行shell操作时&#xff0c;命令行无法删除。 解决方案&#xff1a; 问题得到解决&#xff01;

ios编译webrtc错误

FAILED: gen/examples/AppRTCMobile_generate_info_plist.plist 或者 FAILED: gen/examples/ObjCNativeAPIDemo_generate_info_plist.plist note: Compile and copy ObjCNativeAPIDemo via ninja ninja: Entering directory . [1/12] ACTION //examples:ObjCNativeAPIDemo_g…

SQLite: sqlite_master

SQLite数据库中一个特殊的名叫 SQLITE_MASTER 上执行一个SELECT查询以获得所有表的索引。每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表&#xff0c; 它定义数据库的模式。 SQLITE_MASTER 表看起来如下&#xff1a; CREATE TABLE sqlite_master (type TEXT,name TEXT,tbl…

linux 安装rpm包时遇到error:Failed dependencies解法方法

转载网址&#xff1a;http://blog.sina.com.cn/s/blog_80b4fe5c01018sgr.html

ffmpeg 用于转换视频格式的各种命令行

常用参数说明&#xff1a; 命令格式&#xff1a; ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件] ffmpeg [[options][-i input_file]]... {[options] output_file}... (1) h264: 表示输出的是h264的视频裸流 (2) mp4: 表示输出的是mp4的视频 (3…