Hadoop:Hadoop基本命令

Hadoop 专栏收录该内容
6 篇文章 0 订阅

http://blog.csdn.net/pipisorry/article/details/51223877

常用命令

启用hadoop

start-dfs.sh

start-hbase.sh

停止hadoop

stop-hbase.sh
stop-dfs.sh

Note:

start-dfs.sh启动出错

出错:Exception in thread "main" java.net.ConnectException: Call From ubuntu-BDMS/127.0.0.1 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
原因:可能是ctrl+c关闭但是并没有关闭进程?或者进程还在运行的时候突然关机把文件损坏了?或者因为在tmp中没有生成对应的pid?
解决方案1:
查看Master是否启动,打开http://master:50070打开网页后看master 的端口
NameNode 'localhost:9000'
将Eclipse 中Hadoop Location 中HDFS的端口更改为正确的端口。
解决方案2:
hadoop namenode -format?

解决方案3:

重启操作系统

文件管理

hdfs读取的文件是dfs文件系统内部的,如String file= "hdfs://localhost:9000/hw1/README.txt";
README.txt并不是主机本地文件系统中的文件,而是copy到hdfs文件系统中的文件。
通过-put可以将主机本地文件copy到hdfs文件系统中$ hdfs dfs -put tpch/orders.tbl /hw1

查看hdfs分布式文件系统中的文件
$ hdfs dfs -ls /
hadoop fs -ls  /
查看hbase中的table
进入hbase: hbase shell
hbase(main):001:0> list
TABLE                                                                           
Result                                                                          
1 row(s) in 3.2030 seconds
=> ["Result"]

HBaseAdmin类中使用下面代码删除table
hAdmin.disableTable(tableName);
hAdmin.deleteTable(tableName);

hbase配置文件在安装目录下的conf目录下

皮皮blog

hdfs dfs基本命令

1,-mkdir
创建目录
Usage:hdfs dfs -mkdir [-p] < paths>
选项:-p
很像Unix mkdir -p,沿路径创建父目录。

2,-ls
查看目录下内容,包括文件名,权限,所有者,大小和修改时间
Usage:hdfs dfs -ls [-R] < args>
选项:-R
递归地显示子目录下的内容。

选项:-h

以k/m/G方式显示文件容量大小。

输出结果格式和linux系统上的ls命令差不多:[  权限  ][连结][拥有者][群组][文件容量bytes][  修改日期 ][ 文件名] [linux:文件及目录管理]  

3,-put
将本地文件或目录上传到HDFS中的路径
Usage:hdfs dfs -put < localsrc> … < dst>

Note: 如果put的路径不存在会出错提示找不到文件或目录。所以需要先mkdir -p。

上传文件:hadoop dfs -put local_file hdfs_file

上传多个文件到文件夹:hdfs dfs -put localfile1 localfile2 hadoopdir 

上传整个文件夹: hadoop dfs -put local_dir hdfs_dir

3 如果不想直接put覆盖而是追加,则使用加appendToFile
Usage: hdfs dfs -appendToFile <localsrc> ... <dst>

Append single src, or multiple srcs from local file system to the destination file system. Also reads input from stdin and appends to destination file system.

hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile
hdfs dfs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile
hdfs dfs -appendToFile localfile hdfs://nn.example.com/hadoop/hadoopfile
hdfs dfs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin.
Exit Code:

Note: 一般多次追加前,如果需要,则通过rm删除之前的文件。 

3 上传本地文件到hive

[hive 中上传数据的三种方式]

4,-get
将文件或目录从HDFS中的路径拷贝到本地文件路径
Usage:hdfs dfs -get [-ignoreCrc] [-crc] < src> < localdst>
选项:
-ignorecrc选项复制CRC校验失败的文件。
-crc选项复制文件和CRC。

Note: 如果get的local文件存在,会出错提示文件已存在,所以要先删除:

if os.path.exists(local_file):
    os.remove(local_file)

示例:

hdfs dfs -get hdfs_file local_dir

hdfs dfs -get hdfs_dir local_dir   #此时会产生local_dir/hdfs_dir/文件s

hdfs dfs -get hdfs_dir/* local_dir   #此时会产生local_dir/文件s

5,-du
显示给定目录中包含的文件和目录的大小或文件的长度,用字节大小表示,文件名用完整的HDFS协议前缀表示,以防它只是一个文件。
Usage:hdfs dfs -du [-s] [-h] URI [URI …]
选项:
-s选项将显示文件长度的汇总摘要,而不是单个文件。
-h选项将以“人类可读”的方式格式化文件大小(例如64.0m而不是67108864)

6,-dus
显示文件长度的摘要。
Usage:hdfs dfs -dus < args>
注意:不推荐使用此命令。而是使用hdfs dfs -du -s。

7,-mv
在HDFS文件系统中,将文件或目录从HDFS的源路径移动到目标路径。不允许跨文件系统移动文件。
Usage: hdfs dfs -mv URI [URI …] < dest>

8,-cp
在HDFS文件系统中,将文件或目录复制到目标路径下
Usage:hdfs dfs -cp [-f] [-p | -p [topax] ] URI [ URI …] < dest>
选项:
-f选项覆盖已经存在的目标。
-p选项将保留文件属性[topx](时间戳,所有权,权限,ACL,XAttr)。如果指定了-p且没有arg,则保留时间戳,所有权和权限。如果指定了-pa,则还保留权限,因为ACL是一组超级权限。确定是否保留原始命名空间扩展属性与-p标志无关。

示例:hdfs dfs -cp hdfs://dir1 hdfs://dir2  #将dir1中的目录全部cp到dir2,dir1目录名是没有的

9,-copyFromLocal
从本地复制文件到hdfs文件系统(与-put命令相似)
Usage: hdfs dfs -copyFromLocal < localsrc> URI
选项:
如果目标已存在,则-f选项将覆盖目标。

10,-copyToLocal
复制hdfs文件系统中的文件到本地 (与-get命令相似)
Usage: hdfs dfs -copyToLocal [-ignorecrc] [-crc] URI < localdst>

11,-rm
删除一个文件或目录
Usage:hdfs dfs -rm [-f] [-r|-R] [-skipTrash] URI [URI …]
选项:
如果文件不存在,-f选项将不显示诊断消息或修改退出状态以反映错误。
-R选项以递归方式删除目录及其下的任何内容。
-r选项等效于-R。
-skipTrash选项将绕过垃圾桶(如果已启用),并立即删除指定的文件。当需要从超配额目录中删除文件时,这非常有用。

12,-cat
显示文件内容到标准输出上。
Usage:hdfs dfs -cat URI [URI …]

随机返回指定行数的样本数据 hadoop fs -cat *| shuf -n 5

返回前几行的样本数据 hadoop fs -cat * | head -100

返回最后几行的样本数据 hadoop fs -cat * | tail -5

查看文本行数 hadoop fs -cat * |wc -l 

13,-text
Usage: hdfs dfs -text
获取源文件并以文本格式输出文件。允许的格式为zip和TextRecordInputStream。

14,-touchz
创建一个零长度的文件。
Usage:hdfs dfs -touchz URI [URI …]

15,-stat
显示文件所占块数(%b),文件名(%n),块大小(%n),复制数(%r),修改时间(%y%Y)。
Usage:hdfs dfs -stat URI [URI …]

16,-tail
显示文件的最后1kb内容到标准输出
Usage:hdfs dfs -tail [-f] URI
选项:
-f选项将在文件增长时输出附加数据,如在Unix中一样。

17,-count
统计与指定文件模式匹配的路径下的目录,文件和字节数
Usage: hdfs dfs -count [-q] [-h] < paths>

18,-getmerge
将源目录和目标文件作为输入,并将src中的文件连接到目标本地文件(把两个文件的内容合并起来)
Usage:hdfs dfs -getmerge < src> < localdst> [addnl]
注:合并后的文件位于当前目录,不在hdfs中,是本地文件

19,-grep
从hdfs上过滤包含某个字符的行内容
Usage:hdfs dfs -cat < srcpath> | grep 过滤字段

[Apache Hadoop 2.4.1]

[Hadoop hdfs dfs常用命令的使用]

用户命令

1、archive命令

(1).什么是Hadoop archives?
Hadoop archives是特殊的档案格式。一个Hadoop archive对应一个文件系统目录。 Hadoop archive的扩展名是*.har。Hadoop archive包含元数据(形式是_index和_masterindx)和数据文件(part-*)。_index文件包含了档案中的文件的文件名和位置信息。

(2).如何创建archive?
用法:hadoop archive -archiveName NAME <src>* <dest>
命令选项:
-archiveName NAME 要创建的档案的名字。
src 源文件系统的路径名。
dest 保存档案文件的目标目录。
范例:
例1.将/user/hadoop/dir1和/user/hadoop/dir2归档到/user/zoo/文件系统目录下–/user/zoo/foo.har。
hadoop@ubuntu:~/ hadoop archive -archiveName foo.har /user/hadoop/dir1 /user/hadoop/dir2 /user/zoo/
当创建archive时,源文件foo.har不会被更改或删除。

(3).如何查看archives中的文件?
archive作为文件系统层暴露给外界。所以所有的fs shell命令都能在archive上运行,但是要使用不同的URI。另外,archive是不可改变的。所以创建、重命名和删除都会返回错误。Hadoop Archives的URI是har://scheme-hostname:port/archivepath/fileinarchive。
如果没提供scheme-hostname,它会使用默认的文件系统。这种情况下URI是这种形式har:///archivepath/fileinarchive。
范例:
例1.archive的输入是/dir,该dir目录包含文件filea和fileb,现把/dir归档到/user/hadoop/foo.bar。
hadoop@ubuntu:~/ hadoop archive -archiveName foo.har /dir /user/hadoop
例2.获得创建的archive中的文件列表
hadoop@ubuntu:~/hadoop dfs -lsr har:///user/hadoop/foo.har
例3.查看archive中的filea文件
hadoop@ubuntu:~/hadoop dfs -cat har:///user/hadoop/foo.har/dir/filea

2、distcp
说明:用于集群内部或者集群之间拷贝数据的常用命令(顾名思义: dist即分布式,分布式拷贝是也。)。
用法:hadoop distcp [选项] src_url dest_url 
命令选项:
-m 表示启用多少map
-delete 删除已经存在的目标文件,不会删除源文件。这个删除是通过FS Shell实现的。所以如果垃圾回收机制启动的话,删除的目标文件会进入trash。
-i 忽略失败。这个选项会比默认情况提供关于拷贝的更精确的统计,同时它还将保留失败拷贝操作的日志,这些日志信息可以用于调试。最后,如果一个map失败了,但并没完成所有分块任务的尝试,这不会导致整个作业的失败。
-overwrite 覆盖目标。如果一个map失败并且没有使用-i选项,不仅仅那些拷贝失败的文件,这个分块任务中的所有文件都会被重新拷贝。 所以这就是为什么要使用-i参数。
范例:
例1.
hadoop@ubuntu:~/ hadoop distcp "hdfs://A:8020/user/foo/bar" "hdfs://B:8020/user/foo/baz"

3、fs
说明:运行一个常规的文件系统客户端。
用法:hadoop fs [GENERIC_OPTIONS] [COMMAND_OPTIONS]
各种命令选项可以参考HDFS Shell指南。

4、fsck
说明:用来检查整个文件系统的健康状况,但是要注意它不会主动恢复备份缺失的block,这个是由NameNode单独的线程异步处理的。
用法:hadoop fsck [GENERIC_OPTIONS] [-move|-delete|-openforwrite] [-files [-blocks [-locations | -racks]]]
参数选项:
<path> 检查这个目录中的文件是否完整
-move 破损的文件移至/lost+found目录
-delete 删除破损的文件
-openforwrite 打印正在打开写操作的文件
-files 打印正在check的文件名
-blocks 打印block报告(需要和-files参数一起使用)
-locations 打印每个block的位置信息(需要和-files参数一起使用)
-racks 打印位置信息的网络拓扑图(需要和-files参数一起使用)
范例:
例1.
hadoop@ubuntu:~/hadoop-1.1.1/bin$ hadoop fsck /
Warning: $HADOOP_HOME is deprecated.

FSCK started by hadoop from /192.168.11.156 for path / at Sat Dec 29 19:33:40 PST 2012
.Status: HEALTHY
Total size: 4 B
Total dirs: 9
Total files: 1
Total blocks (validated): 1 (avg. block size 4 B)
Minimally replicated blocks: 1 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 1 #缺省的备份参数1
Average block replication: 1.0
Corrupt blocks: 0 #破损的block数0
Missing replicas: 0 (0.0 %)
Number of data-nodes: 1
Number of racks: 1
FSCK ended at Sat Dec 29 19:33:40 PST 2012 in 4 milliseconds


The filesystem under path '/' is HEALTHY
hadoop@ubuntu:~/hadoop-1.1.1/bin$

5、jar
说明:运行jar文件。用户可以把他们的Map Reduce代码捆绑到jar文件中,使用这个命令执行。
用法:hadoop jar <jar> [mainClass] args…
范例:
例1.在集群上运行Map Reduce程序,以WordCount程序为例
hadoop jar /home/hadoop/hadoop-1.1.1/hadoop-examples.jar wordcount input output
描述:
hadoop jar:执行jar命令
/home/hadoop/hadoop-1.1.1/hadoop-examples.jar: WordCount所在jar
wordcount:程序主类名
input output:输入输出文件夹

6、job
说明:用于和Map Reduce作业交互和命令。
用法:hadoop job [GENERIC_OPTIONS] [-submit ] | [-status ] | [-counter ] | [-kill ] | [-events <#-of-events>] | [-history [all] ] | [-list [all]] | [-kill-task ] | [-fail-task ]
参数选项:
-submit <job-file>:提交作业
-status <job-id>:打印map和reduce完成百分比和所有计数器。
-counter <job-id> <group-name> <counter-name>:打印计数器的值。
-kill <job-id>:杀死指定作业。
-events <job-id> <from-event-#> <#-of-events>:打印给定范围内jobtracker接收到的事件细节。
-history [all] :-history 打印作业的细节、失败及被杀死原因的细节。更多的关于一个作业的细节比如成功的任务,做过的任务尝试等信息可以通过指定[all]选项查看。 
-list [all]:-list all显示所有作业。-list只显示将要完成的作业。
-kill-task <task-id>:杀死任务。被杀死的任务不会不利于失败尝试。
-fail-task <task-id>:使任务失败。被失败的任务会对失败尝试不利。

7、pipes
说明:运行pipes作业。
用法:hadoop pipes [-conf ] [-jobconf , , ...] [-input ] [-output ] [-jar ] [-inputformat ] [-map ] [-partitioner ] [-reduce ] [-writer ] [-program ] [-reduces ]
参数选项:
-conf <path>:作业的配置
-jobconf <key=value>, <key=value>, …:增加/覆盖作业的配置项
-input <path>:输入目录
-output <path>:输出目录
-jar <jar file>:Jar文件名
-inputformat <class>:InputFormat类
-map <class>:Java Map类
-partitioner <class>:Java Partitioner
-reduce <class>:Java Reduce类
-writer <class>:Java RecordWriter
-program <executable>:可执行程序的URI
-reduces <num>:reduce个数

8、version
说明:打印版本信息。
用法:hadoop version

9、CLASSNAME
说明:hadoop脚本可用于调用任何类。
用法:hadoop CLASSNAME
描述:运行名字为CLASSNAME的类。

管理命令

hadoop集群管理员常用的命令。

1、balancer
说明:运行集群平衡工具。管理员可以简单的按Ctrl-C来停止平衡过程。
用法:hadoop balancer [-threshold ]
参数选项:
-threshold <threshold>:磁盘容量的百分比。这会覆盖缺省的阀值。

2、daemonlog
说明:获取或设置每个守护进程的日志级别。
用法:hadoop daemonlog -getlevel <host:port> <name>
用法:hadoop daemonlog -setlevel <host:port> <name> <level>
参数选项:
-getlevel <host:port> <name>:打印运行在<host:port>的守护进程的日志级别。这个命令内部会连接http://<host:port>/logLevel?log=<name>
-setlevel <host:port> <name> <level>:设置运行在<host:port>的守护进程的日志级别。这个命令内部会连接http://<host:port>/logLevel?log=<name>

3、datanode
说明:运行一个HDFS的datanode。
用法:hadoop datanode [-rollback]
参数选项:
-rollback:将datanode回滚到前一个版本。这需要在停止datanode,分发老的hadoop版本之后使用。

4、dfsadmin
说明:运行一个HDFS的dfsadmin客户端。
用法:hadoop dfsadmin [GENERIC_OPTIONS] [-report] [-safemode enter | leave | get | wait] [-refreshNodes] [-finalizeUpgrade] [-upgradeProgress status | details | force] [-metasave filename] [-setQuota ...] [-clrQuota ...] [-help [cmd]]
参数选项:
-report:报告文件系统的基本信息和统计信息。

5、jobtracker
说明:运行MapReduce job Tracker节点。
用法:hadoop jobtracker

6、namenode
说明:运行namenode。
用法:hadoop namenode [-format] | [-upgrade] | [-rollback] | [-finalize] | [-importCheckpoint]
参数选项:
-format:格式化namenode。它启动namenode,格式化namenode,之后关闭namenode。
-upgrade:分发新版本的hadoop后,namenode应以upgrade选项启动。
-rollback:将namenode回滚到前一版本。这个选项要在停止集群,分发老的hadoop版本后使用。 
-finalize:finalize会删除文件系统的前一状态。最近的升级会被持久化,rollback选项将再不可用,升级终结操作之后,它会停掉namenode。
-importCheckpoint 从检查点目录装载镜像并保存到当前检查点目录,检查点目录由fs.checkpoint.dir指定。

7、secondarynamenode
说明:运行HDFS的secondary namenode。
用法:hadoop secondarynamenode [-checkpoint [force]] | [-geteditsize]
参数选项:
-checkpoint [force]:如果EditLog的大小 >= fs.checkpoint.size,启动Secondary namenode的检查点过程。 如果使用了-force,将不考虑EditLog的大小。
-geteditsize:打印EditLog大小。

8、tasktracker
说明:运行MapReduce的task Tracker节点。
用法:hadoop tasktracker

[hadoop命令详解]

from: http://blog.csdn.net/pipisorry/article/details/51223877

ref:hadoop高级命令详解

Hadoop Shell命令r1.0.4 : fs shell使用指南

Hadoop 2.7.2: FileSystem Shell

  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值