A. hadoop常用shell命令怎么用
一、常用的hadoop命令
1、hadoop的fs命令
#查看hadoop所有的fs命令
1
hadoop fs
#上传文件(put与FromLocal都是上传命令)
1
2
hadoop fs -put jdk-7u55-linux-i586.tar.gz hdfs://hucc01:9000/jdk
hadoop fs -FromLocal jdk-7u55-linux-i586.tar.gz hdfs://hucc01:9000/jdk
#下载命令(get与ToLocal都是下载命令)
1
2
hadoop fs -get hdfs://hucc01:9000/jdk jdk1.7
hadoop fs -ToLocal hdfs://hucc01:9000/jdk jdk1.7
#将本地一个或者多个文件追加到hdfs文件中(appendToFile)
1
hadoop fs -appendToFile install.log /words
#查询hdfs的所有文件(ls)
1
hadoop fs -ls /
#帮助命令(help)
1
hadoop fs -help fs
#查看hdfs文件的内容(cat和text)
1
2
hadoop fs -cat /words
hadoop fs -text /words
#删除hdfs文件(rm)
1
hadoop fs -rm -r /words
#统计hdfs文件和文件夹的数量(count)
1
hadoop fs -count -r /
#合并hdfs某个文件夹的文件,并且下载到本地(getmerge)
1
hadoop fs -getmerge / merge
#将本地文件剪切到hdfs,相当于对本地文件上传后再删除(moveFormLocal)
1
hadoop fs -moveFromLocal words /
#查看当前文件系统的使用状态(df)
1
hadoop fs -df
二、常用的hdfs命令(这个用的比较多)
用法跟hadoop命令一样,推荐2.0之后使用hdfs命令
1
hdfs dfs
B. 如何快速从hdfs上检索需要的文本
A1.该索引叫FsImage, 但没有对外提供api, 参考 附录的链接1
整个文件系统的名字空间,包括数据块到文件的映射、文件的属性等,都存储在一个称为FsImage的文件中,这个文件也是放在Namenode所在的本地文件系统上。
A2. FS Shell, 详细请参考链接2
1)hadoop fs -ls
功能跟shell 的 ls 命令相同
2)hadoop fs -lsr
ls命令的递归版本。类似于Unix中的ls -R。
如果要实现复杂的查找功能,可以考虑用下述方式
hadoop fs -lsr / | awk/sed/grep .....
C. hadoop中命令经常含有-fs,-dfs,fs和dfs有什么区别作用是什么
You can see definitions of the two commands (hadoop fs & hadoop dfs) in
可以看一下hadoop的源代码
$HADOOP_HOME/bin/hadoop
...elif [ "$COMMAND" = "datanode" ] ; then CLASS='org.apache.hadoop.hdfs.server.datanode.DataNode' HADOOP_OPTS="$HADOOP_OPTS $HADOOP_DATANODE_OPTS"elif [ "$COMMAND" = "fs" ] ; then CLASS=org.apache.hadoop.fs.FsShell HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"elif [ "$COMMAND" = "dfs" ] ; then CLASS=org.apache.hadoop.fs.FsShell HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"elif [ "$COMMAND" = "dfsadmin" ] ; then CLASS=org.apache.hadoop.hdfs.tools.DFSAdmin HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"...
So, they are exactly the same.
所以,发现两者是完全一样的功能。
谢谢
D. 何时使用hadoop fs,hadoop dfs与hdfs dfs命令
hadoop hdfs dfs基本操作
本文主要参考:
http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-common/FileSystemShell.html
根据上面官方文档的提示我们能够知道可以通过shell的方式访问hdfs中的数据,对数据进行操作。那么首先让我们看一下hdfs的版本,使用命令hdfs version。
好,下面上货:
1、查询
使用命令:
hdfs dfs -ls / 这条执行会列出/目录下的文件和目录
hdfs dfs -ls -R /这条会列出/目录下的左右文件,由于有-R参数,会在文件夹和子文件夹下执行ls操作。
2、添加文件夹
使用命令;
hdfs dfs -mkdir -p /xytest/testdata001/
这里需要注意的是,root用户是否拥有hdfs 的权限,如果有,我们可以继续操作,如果没有,我们可以直接使用hdfs用户,默认安装完cdh后,用户hdfs拥有所有的权限。如果对于权限有不明白的,推荐看一下我的另一篇文章:
http://blog.csdn.net/wild46cat/article/details/69664376
3、增加文件
使用命令:
hdfs dfs -FromLocal ~/123.txt /xytest/testdata001/
4、查看hdfs文件中的内容
使用命令:
hdfs dfs -cat /xytest/testdata001/123.txt
或者,可以把hdfs中的文件到本地
使用命令:
hdfs dfs -ToLocal /xytest/testdata001/123.txt ~/222.txt
5、删除文件
使用命令:
hdfs dfs -rm -f /xytest/testdata001/123.txt
6、删除文件夹
使用命令:
hdfs dfs -rm -r /xytest/testdata001
E. 怎么查看hdfs linux 路径
可以fdisk -l 看到 但是它本身是自己的文件系统 就是hdfs 你从linux本地是看不到的 想看里面的文件可以使用如下命令 hadoop fs -ls
F. hdfs怎么查看目录路径
用ls命令, 如果返回一行说明是文件,如果多行则表示目录
hadoop fs -ls $path | grep $path | wc -l
G. hdfs命令查找文件所在路径
指令
hadoop fsck /user/hadoop/filename -files -blocks -locations -racks
-files 文件分块信息,
-blocks 在带-files参数后才显示block信息
-locations 在带-blocks参数后才显示block块所在datanode的具体IP位置,
-racks 在带-files参数后显示机架位置
注意:此命令只能在namenode里输入,在datanode里输入会报错的
H. 怎么查看hdfs 某个文件夹的文件块
这种情况比较复杂!如果文件小于64MB,存储按该文件的块大小等于该文件的大小。
读取时是根据存在namenode上面的映射表来读取的。
按实际存储的大小来读取,不是从硬盘上面读取的,是从HDFS
上面读取的。
另外,在文件上传时,就会根据块的大小将各个块分布到各个
datanode节点上面的。如果文件已经上传,需要修改默认块的大小,
那么需要执行一条语句将HDFS上面的原有文件重新分块并存储。
I. hadoop怎么查看本地文件
命令:hadoop fs -ls /
webUI:namenode节点:50070
如果是要看节点上的文件的话,是看不到的,毕竟是一个分布式文件系统,你要看本地文件,你也得知道是在哪个主机上呀