Commands Of Hadoop

文章介绍了Hadoop中的DistCP命令用于文件拷贝的各种选项和使用场景,包括处理冲突、保留属性和错误处理。同时,详细阐述了HBase的hbck工具用于检查和修复HBase集群的一致性和完整性。还提到了HDFS的快照功能及迁移步骤,以及一些基本的HDFS和YARN命令。

序言

持续整理下常用的命令cuiyaonan2000@163.com

Command

文件拷贝

当从多个源拷贝时,如果两个源冲突,distcp会停止拷贝并提示出错信息,.

如果在目的位置发生冲突,会根据选项设置解决。

默认情况会跳过已经存在的目标文件(比如不用源文件做替换操作)。

每次操作结束时 都会报告跳过的文件数目,但是如果某些拷贝操作失败了,但在之后的尝试成功了, 那么报告的信息可能不够精确。

#这条命令会把master集群的/foo/bar目录下的所有文件或目录名展开并存储到一个临时文件中,这些文件内容的#拷贝工作被分配给多个map任务, 然后每个TaskTracker分别执行从master1到master2的拷贝操作。注意#distcp使用绝对路径进行操作。
 
hadoop distcp hdfs://master1:8020/foo/bar hdfs://master2:8020/bar/foo


#命令行中可以指定多个源目录,但是只能有1个目标地址
hadoop distcp hdfs://master1:8020/foo/a hdfs://master1:8020/foo/b hdfs://master2:8020/bar/foo


#-f的作用就是从srclist  这个文件中读取多个数据源地址,复制到目标地址
#比如srclist 的内容是
#hdfs://master1:8020/foo/a 
#hdfs://master1:8020/foo/b
hadoop distcp -f hdfs://master1:8020/srclist hdfs://master2:8020/bar/foo 

标识描述备注
-p[rbugp]Preserve
  r: replication number
  b: block size
  u: user
  g: group
  p: permission
修改次数不会被保留。并且当指定 -update 时,更新的状态会 被同步,除非文件大小不同(比如文件被重新创建)。
-i忽略失败就像在 附录中提到的,这个选项会比默认情况提供关于拷贝的更精确的统计, 同时它还将保留失败拷贝操作的日志,这些日志信息可以用于调试。最后,如果一个map失败了,但并没完成所有分块任务的尝试,这不会导致整个作业的失败。
-log <logdir>记录日志到 <logdir>DistCp为每个文件的每次尝试拷贝操作都记录日志,并把日志作为map的输出。 如果一个map失败了,当重新执行时这个日志不会被保留。
-m <num_maps>同时拷贝的最大数目指定了拷贝数据时map的数目。请注意并不是map数越多吞吐量越大。
-overwrite覆盖目标如果一个map失败并且没有使用-i选项,不仅仅那些拷贝失败的文件,这个分块任务中的所有文件都会被重新拷贝。 就像下面提到的,它会改变生成目标路径的语义,所以 用户要小心使用这个选项
-update如果源和目标的大小不一样则进行覆盖像之前提到的,这不是"同步"操作。 执行覆盖的唯一标准是源文件和目标文件大小是否相同;如果不同,则源文件替换目标文件。 像 下面提到的,它也改变生成目标路径的语义, 用户使用要小心。
-f <urilist_uri>使用<urilist_uri> 作为源文件列表这等价于把所有文件名列在命令行中。 urilist_uri 列表应该是完整合法的URI。

Hbase hbck

hbck工具可以检测hbase集群的region一致性完整性,同时可以修复损坏的集群数据

工作模式两种:一致性检测只读模式,和多阶段修复模

集群的一致性状态修复

  1. region一致性: 集群中所有region都被assign,且region在Master内存、ZK和hbase:meta表三个地方一致
  2. 表完整性: 集群中的任意一张表,每个rowkey都仅能存在于一个region区间中
  
#test 是表名
hbase hbck -fixMeta  -fixAssignments test

命令

hbase hbck

一般集群规模较大尽量不要直接执行,最好是对表进行扫描,直接在命令后加表名即可,多个表直接空格隔开

返回结果为Status: INCONSISTENT 或者Status: OK ;

如果region在move、split、merger时,执行命令是会显示有问题的,所以最好多次执行看

常用参数

  • -details 可以输出更详细的信息
  • -summary 只打印表和状态的的概要信息
  • -metaonly 只检查hbase:meta表的状态
  • -fixAssignments 用来修复region的分配,assign问题,如果有region没有assign或者同时assign到多台RS上等问题
  • -fixMeta 用来修复元数据,即HDFS上和元数据表中记录不一致问题,原则上是认为HDFS是正确的,即如果HDFS中有这个region,元数据表中没有,就在元数据表中添加,如果元数据表多了,就删除
  • ​ -noHdfsChecking 不从hdfs上检查region信息,即假设meta表示正确的
  • ​ -fixHdfsHoles 修复hdfs中的region黑洞,一般会和-fixAssignments -fixMeta参数一起用,或者使用
  • -repairHoles参数等同于 这三个参数同时使用
  • ​ -fixRITAssignment 修复长RIT region
  • ​ -repair 如果不知道用什么参数的话,就用这个参数,包含了常用的修复参数,也包含个高危操作

SNAPSHOT快照迁移

总体思路:

  1、启用快照配置 
  2、原集群执行快照,然后执行ExportSnapshot 导出到老集群。注意权限问题。 
  3、导出后,修改对应的权限,然后执行恢复即可

注意点:

  1、注意文件目录权限 
  2、注意配置各自的hostname和IP映射 
  3、注意压缩库是否都配置了

设置支持压缩

在hbase-env.sh中添加如下属性:

export JAVA_LIBRARY_PATH=/usr/lib/hadoop/lib/native/Linux-amd64-64:/usr/lib/hadoop/lib/native

启用快照 

  hbase-site.xml中添加 hbase.snapshot.enabled为true

生成快照

生成的快照默认在hbase目录的.hbase-snapshot文件加下cuiyaonan2000@163.com

 su - hbase
  hbase>create 'test_tmp_2017', {NAME => 'F', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW',COMPRESSION => 'SNAPPY'}hbase>flush ’test_tmp_2017'
  hbase>snapshot ’test_tmp_2017', ’test_tmp_2017_sp'
  hbase>list_snapshots
  hbase>delete_snapshot ’test_tmp_2017_sp'

修改新集群快照目录权限(hdfs用户执行) 

su - hdfs
hdfs dfs -chmod -R 777 /apps/hbase/data/.hbase-snapshot ;
hdfs dfs -chmod -R 777 /apps/hbase/data/archive ;

HDFS常用命令

#创建目录
hdfs dfs -mkdir /cuiyaonan2000@163.com/files


#查看指定目录下的文件
hdfs dfs -ls /path


#查看指定文件夹总大小
hdfs dfs -du -s -h /path

#查看指定目录下每一个文件夹的大小
hdfs dfs -du -h /path

#直接查看gz文件内容
hadoop fs -cat /xxxx/xxx.gz | gzip -d


#查看gz文件内容前几行
hadoop fs -cat /xxxx/xxx.gz | gzip -d | head -10

#移动文件
hdfs dfs -mv 源文件路径 目标路径

#删除hdfs文件夹
hdfs dfs -rm -r /path


#直接删除 不走回收站
hdfs dfs -rm -r -f -skipTrash /path

#上传文件
hdfs dfs -put /本地路径 /路径

#下载文件到本地
hdfs dfs -get /hdfs路径 /本地路径


#正则匹配OriginalFilePath目录下的文件(夹),批量上传到hdfs的targetFilePath目录下。其中-E表示告诉grep后面是一个正则表达式
ls /OriginalFilePath | grep -E "2020-09.*" | xargs -i hdfs dfs -put /OriginalFilePath/{} /targetFilePath



HDFS 文件夹权限命令


#  -R 可选项表示,递归设置权限,比如cuiyaonan2000@163.com目录下的子目录
hadoop fs -chmod [-R] u+x,o-x /cuiyaonan2000@163.com
  • +表示增加权限
  • -表示去掉权限
  • u,o 的含义,以及x的含义如下图所示

 

yarn常用命令

#查看yarn集群中正在运行的应用,可以看到各个应用的执行状态和进度(progress可能不准确,一直为10%)
yarn application -list


#根据应用id强行终止指定应用
yarn application -kill appid


#查看所有处于running状态的节点
yarn node -list


#查看所有节点
yarn node -list -all


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuiyaonan2000

给包烟抽吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值