HDSF新手须知,全面的HDFS命令

1 篇文章 0 订阅
1 篇文章 0 订阅

本人也是一名新手,正在学习星环的大数据产品系列。

敲击hdfs -help,会得到以下结果;

  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
  oiv_legacy                  apply the offline fsimage viewer to an legacy 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 userUse -help to see options
  portmap                      run a portmap service
  nfs3                             run an NFS version 3 gateway
  cacheadmin                 configure the HDFS cache 

现在网上比较多的其实是hdfs dfs 下的一些命令,实际内容要多得多。其实以上每个选项都可以单独去看,每个选项下对应若干命令参数,就拿dfsadmin来说吧,它是一个多任务的工具,我们可以使用它来获取HDFS的状态信息,以及在HDFS上执行的一系列管理操作。其参数如下:

-report:查看文件系统的基本信息和统计信息。
-safeadmin enter | leave | get | wait:安全模式命令。
[-report [-live] [-dead] [-decommissioning]]
[-saveNamespace]
[-rollEdits]
[-restoreFailedStorage true|false|check]
[-refreshNodes]:重新读取hosts和exclude文件,使新的节点或需要退出集群的节点能够被NameNode重新识别。这个命令在新增节点或注销节点时用到。
[-setQuota <quota> <dirname>...<dirname>]:为每个目录<dirname>设定配额<quota>。目录配额是一个长整形整数,强制设定目录树下的名字个数。
[-clrQuota <dirname>...<dirname>]:为每个目录<dirname>清除配额设定。 
[-setSpaceQuota <quota> <dirname>...<dirname>]
[-clrSpaceQuota <dirname>...<dirname>]
[-finalizeUpgrade]:终结HDFS的升级操作。DataNode删除前一个版本的工作目录,之后NameNode也这样做。
[-rollingUpgrade [<query|prepare|finalize>]]
[-refreshServiceAcl]
[-refreshUserToGroupsMappings]
[-refreshSuperUserGroupsConfiguration]
[-refreshCallQueue]
[-refresh <host:ipc_port> <key> [arg1..argn]
[-printTopology]
[-refreshNamenodes datanodehost:port]
[-deleteBlockPool datanodehost:port blockpoolId [force]]
[-setBalancerBandwidth <bandwidth>]
[-fetchImage <local directory>]
[-allowSnapshot <snapshotDir>]
[-disallowSnapshot <snapshotDir>]
[-shutdownDatanode <datanode_host:ipc_port> [upgrade]]
[-getDatanodeInfo <datanode_host:ipc_port>
-upgradeProgress status | details | force:请求当前系统的升级状态 | 升级状态的细节 | 强制升级操作

而网络上常常出现的,属于hdfs dfs 下的参数,如下:

moveFromLocal :与put相类似,命令执行后源文件 local src 被删除,也可以从从键盘读取输入到hdfs file中
copyFromLocal
moveToLocal copyToLocal
rm [-r]
cp:目标文件不能存在,否则命令不能执行,相当于给文件重命名并保存,源文件还存在
setrep:改变一个文件在hdfs中的副本个数,上述命令中数字3为所设置的副本个数,-R选项可以对一个人目录下的所有目录+文件递归执行改变副本个数的操作
stat:返回对应路径的状态信息
tail:在标准输出中显示文件末尾的1KB数据
archive :压缩文件
lsr <path>行为类似于-ls,但递归显示路径的所有子目录项。
distcp:用来在两个HDFS之间拷贝数据
dus <path>
类似-du,但打印路径中的所有文件/目录的磁盘使用情况的摘要。
test -[ezd] <path>
返回1,如果路径存在;长度为零;或者是一个目录,否则为0。
chmod [-R] mode,mode,... <path>...
变化符合路径标识的一个或多个对象关联的文件权限....递归执行变更与R.模式是3位八进制模式,或{augo}+/-{rwxX}。假设如果没有指定范围,则不适用umask。
chown [-R] [owner][:[group]] <path>...
设置拥有用户和/或组标识路径的文件或目录....设置所有者递归,如果指定-R。
chgrp [-R] group <path>...
设置所属组标识路径的文件或目录....设置组递归,如果指定-R。
expunge
使用方法:hadoop fs -expunge
清空回收站。
getmerge
使用方法:hadoop fs -getmerge <src> <localdst> [addnl]
接受一个源目录和一个目标文件作为输入,并且将源目录中所有的文件连接成本地目标文件。addnl是可选的,用于指定在每个文件结尾添加一个换行符。
rmr
使用方法:hadoop fs -rmr URI [URI …]
delete的递归版本。
setrep
使用方法:hadoop fs -setrep [-R] <path>
改变一个文件的副本系数。-R选项用于递归改变目录下所有文件的副本系数。
示例:
hadoop fs -setrep -w 3 -R /user/hadoop/dir1
返回值:
成功返回0,失败返回-1。
text
使用方法:hadoop fs -text <src>
将源文件输出为文本格式。允许的格式是zip和TextRecordInputStream。
touchz
使用方法:hadoop fs -touchz URI [URI …]
创建一个0字节的空文件。
balancer:如果管理员发现某些DataNode保存数据过多,某些DataNode保存数据相对较少,可以使用上述命令手动启动内部的均衡过程
dfsadmin:-help|report -safemode < enter | leave | get | wait > 管理员可以通过dfsadmin管理HDFS,用法可以通过上述命令查看
mv:目标文件不能存在,否则命令不能执行,相当于给文件重命名并保存,源文件不存在 跨文件系统的移动(local到hdfs或者反过来)都是不允许的
count:统计hdfs对应路径下的目录个数,文件个数,文件总计大小
du:[-s h]:显示hdfs对应路径下每个文件夹和文件的大小
text:将文本文件或某些格式的非文本文件通过文本格式输出
FSCK
Fsck参数使用
$ hdfs fsck <path> 必填参数
然后是一堆的可选参数:
-move: 移动损坏的文件到/lost+found目录下
-delete: 删除损坏的文件
-files: 输出正在被检测的文件
-openforwrite: 输出检测中的正在被写的文件
-includeSnapshots: 检测的文件包括系统snapShot快照目录下的
-list-corruptfileblocks: 输出损坏的块及其所属的文件
-blocks: 输出block的详细报告
-locations: 输出block的位置信息
-racks: 输出block的网络拓扑结构信息
-storagepolicies: 输出block的存储策略信息
-blockId: 输出指定blockId所属块的状况,位置等信息
用这个命令可以检查整个文件系统的健康状况,但是要注意它不会主动恢复备份缺失的block,这个是由NameNode单独的线程异步处理的。
Default replication factor: 3 缺省的备份参数3
Corrupt blocks: 0 破损的block数0
Number of data-nodes: 107
Number of racks: 4
若有毁损则显示:
Status: CORRUPT
fsck 是只跟 metadata 有关的操作,其需要的资讯,都可从 NameNode 取得,因此不必和 cluster 所有的 NameNode 沟通。
需要注意的是在执行fsck命令行的客户端必选在hadoop-site.xml中配置dfs.http.address项,即namenode的http地址。否则会抛出java.net.ConnectException: Connection refused异常。其原因是fsck是namenode的一个servlet。而fsck命令对应的类DFSck其实是封装了一个http连接,简单的说就是抓取一个网页。而这个网页URL就是dfs.http.address配置项的value后面接上fsck,如http://10.249.65.1:50070/fsck。也就是说用浏览器打开这个网页和命令行执行fsck效果是一样的。通常每天在集群较空闲的时候执行一次以查看数据状况。另外由于任何用户都可以在命令行或浏览器中执行fsck操作,因此可以考虑对该操作进行 权限控制,防止被误操作。
检测缺失块
1 hdfs fsck -list-corruptfileblocks
1 hdfs fsck / | egrep -v '^\.+$' | grep -v eplica
查看上面某一个文件的情况
1 hdfs fsck /path/to/corrupt/file -locations -blocks -files
解决方法
如果文件不重要,可以直接删除此文件;或删除后重新复制一份到集群中
如果不能删除,需要从上面命令中找到发生在哪台机器上,然后到此机器上查看日志

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值