整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

10.1.4HDFS工具

 

1. dfsadmin 工具

dfsadmin办工具用途较广,既可以査找HDFS状态信息,又可在HDFS上执 行管理操作。调用形式如下:•

hadoop dfsadmin

仅当用户具有超级用户权限,才可以使用这个工具修改HDFS的状态。

表10-2列举了部分的命令。要想进一步了解详情,可以使用-help 命令。

命令

说明

-help

显示指定命令的帮助,如果未指明命令,则显示所有命令的帮助

-report

显示文件系统的统计信息(类似于在网页界面上显示的内容), 以及所连接的各个datanode的信息

-metasave

将某些信息存储到Hadoop日志目录中的一个文件中,包括正 在被复制或删除的块的信息以及已连接的datanode列表

-safemode

改变或査询安全模式,参见10.1.2节对安全模式的讨论

-saveNamespace

将内存中的文件系统映像保存为一个新的/Wmage文件,重置 文件。该操作仅在安全模式下执行

-refreshNodes

更新允许连接到namenode的datanode列表,参见10.3.2节对委任和解除节点的讨论 •

-upgradeProgress

获取有关HDFS升级的进度信息或强制升级。参见10.3.3对升 级的讨论

-finalizeUpgrade

移除datanode和namenode的存储目录上的旧版本数据。这个 操作一般在升级完成而且集群在新版本下运行正常的情况下执 行。参见10.3.3节对升级的讨论

-setQuota

设置目录的配额,即设置以该目录为根的整个目录树最多包含 多少个文件和目录。这项配置能有效阻止用户创建大量小文 件,从而保护namenode的内存(文件系统中的所有文件、目录 和块的各项信息均存储在内存中)

-clrQuota

清理指定目录的配额

-setSpaceQuota

设置目录的空间配额,以限制存储在目录树中的所有文件的总 规模。分别为各用户指定有限的存储空间很有必要

-clrSpaceQuota

清理指定的空间配额

-refreshServiceAcl

刷新namenode的服务级授权策略文件

2. fsck工具

Hadoop提供力&工具来检査HDFS中文件的健康状况。该工具会查找那些 在所有datanode中均缺失的块以及过少或过多复本的块。下例演示如何检 查某个小型集群的整个文件系统:

% hadoop fsck /
……………………Status: HEALTHY
Total size:     511799225 B
Total dirs:     10
Total files:     22
Total blocks (validated):     22 (avg. block size 23263601 B)
Minimally replicated blocks:     22 (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
The filesystem un  der path ‘/’ is HEALTHY

     工具从给定路径(本例是文件系统的根目录)开始循环遍历文件系统的命 名空间,并检査它所找到的所有文件。对于检査过的每个文件,都会打印 一个点。在此过程中,该工具获取文件数据块的元数据并找出问题或 检查它们是否一致。注意,/scA工具只是从namenode获取信息,并不与任 何datanode进行交互,因此并不真正获取块数据。

fsck 输出文件的大部分内容都容易理解,以下仅说明部分信息。

    •过多复制的块指复本数超出最小复本级别的块。严格意义上讲, 这并非一个大问题,HDFS会自动删除多余复本。

    •仍需复制的块指复本数目低于最小复本级别的块。HDFS会自动 为这些块创建新的复本,直到达到最小复本级别。可以调用 hadoop dfsadmin -metasave指令了解正在复制的(或等待复制 的)块的信息。    

    •错误复制的块是指违反块复本放置策略的块(参见第72页的“复 本的放置”小节)。例如,在最小复本级别为3的多机架集群中, 如果一个块的三个复本都存储在一个机架中,则可认定该块的复本 放置错误,因为一个块的复本要分散在至少两个机架中,以提高可 靠性。 .

    •损坏的块指所有复本均已损坏的块。如果虽然部分复本损坏,但 至少还有一个复本完好,则该块就未损坏;namenode将创建新的复 本,直到达到最小复本级别。

•缺失的复本指在集群中没有任何复本的块。

损坏的块和缺失的块是最需要考虑的,因为这意味着数据已经丢失了。默 认情况下,力以不会对这类块进行任何操作,但也可以让执行如下某 一项操作。    

•移动使用-move选项将受影响的文件移到HDFS/lost+found 目录。这些受影响的文件会分裂成连续的块链表,可以帮助用户挽回 损失。

•删除使用-delete选项删除受影响的文件。在删除之后,这些文件无法恢复。

•查找一个文件的数据块。力cA:工具能够帮助用户轻松找到属于特定文件的数据块。例如:

% hadoop fsck /user/tom/part-00007 -files -blocks -racks
/user/tom/part-00007 25582428 bytes, 1 block(s): OK
0. blk_-3724870485760122836_1035 len=25582428 repl=3 [/default-rack/10.251.43.2:50010, /default-rack/10.251.27.178:50010, 
/default-rack/10.251.123.163:50010]

输出内容表示文件包含一个块,该块的三个复本存储 在不同datanode。所使用的三个选项的含义如下:

    •  -files选项显示第一行信息,包括文件名称、大小、块数量和健 康状况(是否有缺失的块)

    •   blocks选项描述文件中各个块的信息,每个块一行    

    •   racks选项显示各个块的机架位置和datanode的地址

如果不指定任何参数,运行hadoop fsck命令会显示完整的使用说明。

3. datanode块扫描器

各个datanode运行一个块扫描器,定期检测本节点上的所有块,从而在客 户端读到坏块之前及时地检测和修复坏块。可以依靠DataBlockScanner 所维护的块列表依次扫描块,查看是否存在校验和错误。扫描器还使用节 流机制,来维持datanode的磁盘带宽(换句话说,块扫描器工作时仅占用一 小部分磁盘带宽)。

在默认情况下,块扫描器每隔三周(目卩504小时)就会检测块,以应对可能的 磁盘故障,该周期由dfs.datanode.scan.period.hours属性设置。损 坏的块被报给namenode,并被及时修复。.

用户可以访问 datanode 的网页来 获取该datanode的块检测报告。以下是一份报告的范例,很容易理解:

Total Blocks     :  21131
Verified in last hour     :  70
Verified in last  day    :  1767
Total Blocks     :  21131
Verified in last hour    :     70
Verified in last ay:   1767
Verified in last week    :   7360
Verified in last four weeks    :  20057
Verified in SCAN_—PERIOD    :  20057
Not yet verified     :    1074
Verified since restart    :  35912
Scans since restart    :    6541
Scan errors since restart    :   0
Transient scan errors    :   0
Current scan rate limit KBps    :    1024
Progress this period    :   109%
Time left in cur period     : 53.08%

过指定 Ustblocks 参数,http://clatcmode:50075/blockScamerReport?Listblocks  在报告中列出该datanode上所有的块及其最新验证状态。下面节选部分内 容(由于页面宽度限制,报告中的每行内容被显示成两行):

blk_6035596358209321442     : status : ok type : none scan time : 0
not yet verified
blk—3065580480714947643    : status : ok type : remote scan time : 1215755306400
2008-07-11 05:48:26,400
blk_8729669677359108508     : status : ok type : local scan time : 1215755727345
2008-07-11 05:55:27,345

第一列是块ID,接下来是一些键/值对。块的状态(status)要么是failed(损 坏的),要么是ok(良好的),由最近一次块扫描是否检测到校验和来决定。 扫描类型(type)可以是local(本地的)、remote(远程的)或none(没有)。如 果扫描操作由后台线程执行,则是local;如果扫描操作由客户端或其他 datanode执行,则是remote;如果针对该块的扫描尚未执行,则是 none。最后一项信息是扫描时间,从1970年1月1号午夜开始到扫描时间 为止的毫秒数,另外也提供更易读的形式。

4. 均衡器

随着时间推移,各个datanode上的块分布会越来越不均衡。不均衡的集群 会降低MapReduce的本地性,导致部分datanode相对更加繁忙。应避免出 现这种情况。

均衡器(balancer)程序是_•个Hadoop守护进程,它将块从忙碌的datanode 移到相对空闲的datanode,从而重新分配块。同时坚持块复本放置策略, 将复本分散到不同机架,以降低数据损坏率(参见3.6.3节)。它不断移动 块,直到集群达到均衡,即每个datanode的使用率(该节点上已使用的空间 与空间容量之间的比率)和集群的使用率(集群中已使用的空间与集群的空间容量之间的比率)非常接近,差距不超过给定的阀值。可调用下面指令启动 均衡器:

% start-balancer.sh

threshold参数指定阈值(百分比格式),以判定集群是否均衡。该标记是 可选的;若不使用,默认阈值是1〇%。在任何时刻,集群中都只运行一个均 衡器。

均衡器会一直运行,直到集群变得均衡为止;之后,均衡器不会移动任何 块,将失去与namenode的联络。均衡器在标准日志目录中创建一个日志文 件,记录它所执行的每轮重新分配过程(每轮次输出一行)。以下是针对一个 小集群的日志输出: •

Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved 
Mar 18, 2009 5:23:42 PM 0     0 KB 219.21 MB  150.29 MB
Mar 18, 2009 5:27:14 PM 1     195.24 MB 22.45 MB   150.29 MB
The cluster is balanced. Exiting...
Balancing took 6.072933BB3333B33 minutes

为了降低集群负荷、避免干扰其他用户,均衡器被设计为在后台运行。在 不同节点之间复制数据的带宽也是受限的。默认值是很小的1 MB/s,可以 通过如e.xm/文件中的dfs.balance.bandwidthPerSec属性重新设

转载请注明:全栈大数据 » 10.1.4HDFS工具

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址