hadoop集群关闭命令顺序_Hadoop常见重要命令行操作及命令作用

Hadoop常见重要命令行操作及命令作用

关于Hadoop

[root@master ~]# hadoop --help

Usage: hadoop [--config confdir] COMMAND

where COMMAND is one of:

fs run a generic filesystem user client

version print the version

jar run a jar file

checknative [-a|-h] check native hadoop and compression libraries availability

distcp copy file or directories recursively

archive -archiveName NAME -p * create a hadoop archive

classpath prints the class path needed to get the

Hadoop jar and the required libraries

daemonlog get/set the log level for each daemon

or

CLASSNAME run the class named CLASSNAME

Most commands print help when invoked w/o parameters.

查看版本

[root@master ~]# hadoop version

Hadoop 2.2.0.2.0.6.0-101

Subversion git@github.com:hortonworks/hadoop.git -r b07b2906c36defd389c8b5bd22bebc1bead8115b

Compiled by jenkins on 2014-01-09T05:18Z

Compiled with protoc 2.5.0

From source with checksum 704f1e463ebc4fb89353011407e965

This command was run using /usr/lib/hadoop/hadoop-common-2.2.0.2.0.6.0-101.jar

运行jar文件

[root@master liguodong]# hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.2.0.2.0.6.0-101.jar pi 10 100

Number of Maps = 10

Samples per Map = 100

Wrote input for Map #0

Wrote input for Map #1

Wrote input for Map #2

...

Job Finished in 19.715 seconds

Estimated value of Pi is 3.14800000000000000000

检查Hadoop本地库和压缩库的可用性

[root@master liguodong]# hadoop checknative -a

15/06/03 10:28:07 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native

15/06/03 10:28:07 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library

Native library checking:

hadoop: true /usr/lib/hadoop/lib/native/libhadoop.so.1.0.0

zlib: true /lib64/libz.so.1

snappy: true /usr/lib64/libsnappy.so.1

lz4: true revision:43

bzip2: true /lib64/libbz2.so.1

文件归档 Archive

hadoop不适合小文件的存储,小文件本身就占用了很多metadata,就会造成namenode越来越大。

Hadoop Archives (HAR files)是在0.18.0版本中引入的,它的出现就是为了

缓解大量小文件消耗namenode内存的问题。

HAR文件是通过在HDFS上构建一个层次化的文件系统来工作。一个HAR文件是通过hadoop的archive命令来创建,而这个命令实际上也是运行了一个MapReduce任务来将小文件打包成HAR。对于client端来说,使用HAR文件没有任何影响。所有的原始文件都使用har://URL。但在HDFS端它内部的文件数减少了。

通过HAR来读取一个文件并不会比直接从HDFS中读取文件高效,而且实际上可能还会稍微低效一点,因为对每一个HAR文件的访问都需要完成两层读取,index文件的读取和文件本身数据的读取。并且尽管HAR文件可以被用来作为MapReduce job的input,但是并没有特殊的方法来使maps将HAR文件中打包的文件当作一个HDFS文件处理。

创建文件 hadoop archive -archiveName xxx.har -p /src /dest

查看内容 hadoop fs -lsr har:///dest/xxx.har

[root@master liguodong]# hadoop archive

archive -archiveName NAME -p *

[root@master liguodong]# hadoop fs -lsr /liguodong

drwxrwxrwx - hdfs hdfs 0 2015-05-04 19:40 /liguodong/output

-rwxrwxrwx 3 hdfs hdfs 0 2015-05-04 19:40 /liguodong/output/_SUCCESS-rwxrwxrwx 3 hdfs hdfs 23 2015-05-04 19:40 /liguodong/output/part-r-00000

[root@master liguodong]# hadoop archive -archiveName liguodong.har -p /liguodong output /liguodong/har

[root@master liguodong]# hadoop fs -lsr /liguodong

drwxr-xr-x - root hdfs 0 2015-06-03 11:15 /liguodong/har

drwxr-xr-x - root hdfs 0 2015-06-03 11:15 /liguodong/har/liguodong.har

-rw-r--r-- 3 root hdfs 0 2015-06-03 11:15 /liguodong/har/liguodong.har/_SUCCESS-rw-r--r-- 5 root hdfs 254 2015-06-03 11:15 /liguodong/har/liguodong.har/_index-rw-r--r-- 5 root hdfs 23 2015-06-03 11:15 /liguodong/har/liguodong.har/_masterindex-rw-r--r-- 3 root hdfs 23 2015-06-03 11:15 /liguodong/har/liguodong.har/part-0drwxrwxrwx - hdfs hdfs 0 2015-05-04 19:40 /liguodong/output

-rwxrwxrwx 3 hdfs hdfs 0 2015-05-04 19:40 /liguodong/output/_SUCCESS-rwxrwxrwx 3 hdfs hdfs 23 2015-05-04 19:40 /liguodong/output/part-r-00000

查看内容

[root@master liguodong]# hadoop fs -lsr har:///liguodong/har/liguodong.har

lsr: DEPRECATED: Please use 'ls -R' instead.

drwxr-xr-x - root hdfs 0 2015-05-04 19:40 har:///liguodong/har/liguodong.har/output

-rw-r--r-- 3 root hdfs 0 2015-05-04 19:40 har:///liguodong/har/liguodong.har/output/_SUCCESS-rw-r--r-- 3 root hdfs 23 2015-05-04 19:40 har:///liguodong/har/liguodong.har/output/part-r-00000

---------------------------------------------------------------[root@master liguodong]# hadoop archive -archiveName liguodong2.har -p /liguodong/output /liguodong/har

[root@master liguodong]# hadoop fs -lsr har:///liguodong/har/liguodong2.har

-rw-r--r-- 3 root hdfs 0 2015-05-04 19:40 har:///liguodong/har/liguodong2.har/_SUCCESS-rw-r--r-- 3 root hdfs 23 2015-05-04 19:40 har:///liguodong/har/liguodong2.har/part-r-00000

关于HDFS

[root@master /]# hdfs --help

Usage: hdfs [–config confdir] COMMAND

where COMMAND is one of:

dfs run a filesystem command on the file systems supported in Hadoop.

namenode -format format the DFS filesystem

secondarynamenode run the DFS secondary namenode

namenode run the DFS namenode

journalnode run the DFS journalnode

zkfc run the ZK Failover Controller daemon

datanode run a DFS datanode

dfsadmin run a DFS admin client

haadmin run a DFS HA admin client

fsck run a DFS filesystem checking utility

balancer run a cluster balancing utility

jmxget get JMX exported values from NameNode or DataNode.

oiv apply the offline fsimage viewer to an fsimage

oev apply the offline edits viewer to an edits file

fetchdt fetch a delegation token from the NameNode

getconf get config values from configuration

groups get the groups which users belong to

snapshotDiff diff two snapshots of a directory or diff the

current directory contents with a snapshot

lsSnapshottableDir list all snapshottable dirs owned by the current user

Use -help to see options

portmap run a portmap service

nfs3 run an NFS version 3 gateway

校验检查某个目录是否健康

[root@master liguodong]# hdfs fsck /liguodong

Connecting to namenode via http://master:50070

FSCK started by root (auth:SIMPLE) from /172.23.253.20 for path /liguodong at Wed Jun 03 10:43:41 CST 2015

...........Status: HEALTHY

Total size: 1559 B

Total dirs: 7

Total files: 11

Total symlinks: 0

Total blocks (validated): 7 (avg. block size 222 B)

...

The filesystem under path '/liguodong' is HEALTHY

更加详细的查看命令

[root@master liguodong]# hdfs fsck /liguodong -files -blocks

作用:

检查文件系统的健康状态

可以查看一个文件所在的数据块

可以删除一个坏块。

可以查找一个缺失的块。

balancer磁盘均衡器

命令:hdfs balancer,也可以动过脚本启动均衡器。

Hadoop的HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,比如集群中添加新的数据节点。当HDFS出现不平衡状况的时候,将引发很多问题,比如MR程序无法很好地利用本地计算的优势,机器之间无法达到更好的网络带宽使用率,机器磁盘无法利用等等。可见,保证HDFS中的数据平衡是非常重要的。

[root@master liguodong]# hdfs balancer

hdfs dfsadmin

可以设置安全模式,如出现异常可以设置为只读模式。

[root@master liguodong]# hdfs dfsadmin

Usage: java DFSAdmin

Note: Administrative commands can only be run as the HDFS superuser.

[-report]

[-safemode enter | leave | get | wait]

[-allowSnapshot ]

[-disallowSnapshot ]

[-saveNamespace]

[-rollEdits]

[-restoreFailedStorage true|false|check]

[-refreshNodes]

[-finalizeUpgrade]

[-metasave filename]

[-refreshServiceAcl]

[-refreshUserToGroupsMappings]

[-refreshSuperUserGroupsConfiguration]

[-printTopology]

[-refreshNamenodes datanodehost:port]

[-deleteBlockPool datanode-host:port blockpoolId [force]]

[-setQuota ...]

[-clrQuota ...]

[-setSpaceQuota ...]

[-clrSpaceQuota ...]

[-setBalancerBandwidth ]

[-fetchImage ]

[-help [cmd]]

edits和fsimage文件查看器

edits和fsimage是两个至关重要的文件,其中edits负责保存自最新检查点后命名空间的变化,起着日志的作用,而fsimage则保存了最新的检查点信息。这个两个文件中的内容使用普通文本编辑器是无法直接查看的,幸运的是hadoop为此准备了专门的工具用于查看文件的内容,这些工具分别为oev和oiv,可以使用hdfs调用执行。

oiv(offline image viewer的缩写),用于将fsimage文件的内容转储到指定文件中以便于阅读,该工具还提供了只读的WebHDFS API以允许离线分析和检查hadoop集群的命名空间。oiv在处理非常大的fsimage文件时是相当快的,如果该工具不能够处理fsimage,它会直接退出。该工具不具备向后兼容性,比如使用hadoop-2.4版本的oiv不能处理hadoop-2.3版本的fsimage,只能使用hadoop-2.3版本的oiv。就像它的名称所提示的(offline),oiv也不需要hadoop集群处于运行状态。oiv具体语法可以通过在命令行输入hdfs oiv查看。

oiv支持三种输出处理器,分别为Ls、XML和FileDistribution,通过选项-p指定。

Ls是默认的处理器,该处理器的输出与lsr命令的输出极其相似,以相同的顺序输出相同的字段,比如目录或文件的标志、权限、副本数量、所有者、组、文件大小、修改日期和全路径等。与lsr不同的是,该处理器的输出包含根路径/,另一个重要的不同是该处理器的输出不是按照目录名称和内容排序的,而是按照在fsimage中的顺序显示。除非命名空间包含较少的信息,否则不太可能直接比较该处理器和lsr命令的输出。Ls使用INode块中的信息计算文件大小并忽略-skipBlocks选项。示例如下:

[root@master current]# pwd

/hadoop/hdfs/namenode/current

[root@master current]# hdfs oiv -i fsimage_0000000000000053234 -o fsimage.ls

[root@master current]# cat fsimage.ls

-rwxrwxrwx 3 oozie hdfs 890168 2015-04-28 17:41 /user/oozie/share/lib/pig/jaxb-impl-2.2.3-1.jar

-rwxrwxrwx 3 oozie hdfs 201124 2015-04-28 17:41 /user/oozie/share/lib/pig/jdo-api-3.0.1.jar

-rwxrwxrwx 3 oozie hdfs 130458 2015-04-28 17:41 /user/oozie/share/lib/pig/jersey-client-1.9.jar

XML处理器输出fsimage的xml文档,包含了fsimage中的所有信息,比如inodeid等。该处理器的输出支持XML工具的自动化处理和分析,由于XML语法格式的冗长,该处理器的输出也最大。

[root@master current]# hdfs oiv -i fsimage_0000000000000053234 -p XML -o fsimage.xml

[root@master current]# more fsimage.xml

FileDistribution是分析命名空间中文件大小的工具。为了运行该工具需要通过指定最大文件大小和段数定义一个整数范围[0,maxSize],该整数范围根据段数分割为若干段[0, s[1], …, s[n-1], maxSize],处理器计算有多少文件落入每个段中([s[i-1], s[i]),大于maxSize的文件总是落入最后的段中,即(s[n-1], maxSize)。输出文件被格式化为由tab分隔的包含Size列和NumFiles列的表,其中Size表示段的起始,NumFiles表示文件大小落入该段的文件数量。在使用FileDistribution处理器时还需要指定该处理器的参数maxSize和step,若未指定,默认为0。

[root@master current]# hdfs oiv -i fsimage_0000000000000053234 -o fsimage.fd -p FileDistribution 1000 step 5

Files processed: 1 Current: /app-logs/ambari-qa/logs/application_1430219478244_0003/slave2_45454

totalFiles = 534

totalDirectories = 199

totalBlocks = 537

totalSpace = 1151394477

maxFileSize = 119107289

[root@master current]# more fsimage.fd

Size NumFiles

0 22

2097152 491

4194304 13

6291456 2

8388608 1

10485760 3

12582912 0

oev是(offline edits viewer(离线edits查看器)的缩写),该工具只操作文件因而并不需要hadoop集群处于运行状态。该工具提供了几个输出处理器,用于将输入文件转换为相关格式的输出文件,可以使用参数-p指定。

目前支持的输出格式有binary(hadoop使用的二进制格式)、xml(在不使用参数p时的默认输出格式)和stats(输出edits文件的统计信息)。

该工具支持的输入格式为binary和xml,其中的xml文件为该工具使用xml处理器的输出文件。

由于没有与stats格式对应的输入文件,所以一旦输出为stats格式将不可���再转换为原有格式。比如输入格式为bianry,输出格式为xml,可以通过将输入文件指定为原来的输出文件,将输出文件指定为原来的输入文件实现binary和xml的转换,而stats则不可以。

[root@master current]# hdfs oev -i edits_0000000000000042778-0000000000000042779 -o edits.xml

[root@master current]# cat edits.xml

-47

OP_START_LOG_SEGMENT

42778

OP_END_LOG_SEGMENT

42779

在输出文件中,每个RECORD记录了一次操作,当edits文件破损进而导致hadoop集群出现问题时,保存edits文件中正确的部分是可能的,可以通过将原有的bianry文件转换为xml文件,并手动编辑xml文件然后转回bianry文件来实现。最常见的edits文件破损情况是丢失关闭记录的部分(OPCODE为-1),关闭记录如下所示。如果在xml文件中没有关闭记录,可以在最后正确的记录后面添加关闭记录,关闭记录后面的记录都将被忽略。

-1

关于yarn

[root@master liguodong]# yarn --help

Usage: yarn [--config confdir] COMMAND

where COMMAND is one of:

resourcemanager run the ResourceManager

nodemanager run a nodemanager on each slave

rmadmin admin tools

version print the version

jar run a jar file

application prints application(s) report/kill application

node prints node report(s)

logs dump container logs

classpath prints the class path needed to get the

Hadoop jar and the required libraries

daemonlog get/set the log level for each daemon

or

CLASSNAME run the class named CLASSNAME

Most commands print help when invoked w/o parameters.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值