Hadoop之shell命令
Hadoop之shell命令
一、启动命令
启动hadoop:start-dfs.sh,start-yarn.sh
关闭hadoop:stop-dfs.sh,stop-yarn.sh
启动hdfs时可在任意节点,启动yarn得在相应yarn的主节点上执行
hadoop fs -命令(hadoop1.0的时候用的)
hdfs dfs -命令(hadoop2.0的时候用的)
hadoop/hdfs 启动hadoop的客户端,连接hadoop集群
fs/dfs 连接hadoop的文件系统的,filesystem的客户端
二、查看hdfs的目录结构
hadoop fs -ls -R hdfs的目录(查看给定的hdfs的目录的子目录)
-R 级联查看
hadoop fs -ls -R /
hadoop fs -lsr /
注意:在hdfs中所有的路径只有绝对路径的访问形式必须从/开始
三、创建文件夹
hadoop fs -mkdir -p 需要创建的目录
-p 级联创建
hadoop fs -mkdir -p /aa/bb/cc
hadoop fs -mkdir /testin
四、文件上传
hdfs不支持文件修改的,在hdfs不能先创建一个空文件在进行编辑,只能本地编辑完成文件再上传到hdfs存储或者将本地的文件进行直接存储在hdfs上。
文件上传:将本地的文件传到hdfs存储进行分布式存储的。
hadoop fs -copyFromLocal 本地文件路径 hdfs路径
将本地文件拷贝到hdfs上,对应API
hadoop fs -moveFromLocal 本地文件路径 hdfs路径
将本地文件移动到hdfs上
hadoop fs -put 本地文件路径 hdfs路径
同 -copyFromLocal 提倡
hadoop fs -put hadoop-2.7.7.tar.gz /testin
hadoop fs -moveFromLocal hadoop-2.7.7.tar.gz / 剪切|移动
注意: 本地路径指的是客户端所在本地
文件上传的时候如果给定的是hdfs的目录,将本地文件传到hdfs的给定目录下,如果给的是一个hdfs不存在的文件|目录,将本地文件传到hdfs上,但是会重命名,命名为给定的文件名。
五、文件下载
hadoop fs -copyToLocal|moveToLocal|get hdfs路径 本地路径
将hdfs文件下载到本地
hadoop fs -copyToLocal|get 将hdfs拷贝到本地
-get 推荐
hadoop fs -get /hadoop-2.7.7.tar.gz .
hadoop fs -moveToLocal 将hdfs的移动到本地(这个命令目前还是不支持的)
六、查看文件内容
hadoop fs -cat hdfs文件路径
hadoop fs -cat /hdfs-site.xml
查看hdfs文件的所有内容
hadoop fs -tail hdfs文件路径
hadoop fs -tail /hdfs-site.xml
查看hdfs给定文件的末尾1kb的数据
七、创建文件
hadoop fs -touchz hdfs文件名 创建空文件
hadoop fs -touchz /test_bd1901
注意:在hdfs中大小为0kb的文件不进行实际存储的datanode中不存储的,只在namenode中进行元数据存储。
八、删除文件或目录
hadoop fs -rm -f -r 需要删除hdfs的目录或文件
-f force 强制删除
-r 级联删除用于删除目录的时候
删除文件
hadoop fs -rm -f /hadoop-2.7.7.tar.gz
删除目录
hadoop fs -rm -r -f /aa
九、修改hdfs文件或目录的读写权限
chmod -R 777 文件或目录
-R 级联修改目录下的所有子文件的权限的
hadoop fs -chmod -R 777 /testin
十、修改文件所属用户和组
chown -R 用户:组 文件或目录
hadoop fs -chown -R 用户:组 文件或目录
hadoop fs -chown -R hadoop:hadoop /testin
十一、修改hdfs文件的副本个数
hdfs配置文件 hdfs-site中设置的副本个数 2。
假如有一个文件很重要,需要将这个文件的副本改成3个:
-setrep [-R] [-w] (set replication 修改副本的)
-R 级联修改目录下的所有文件
-w wait 等待新副本的复制完成|删除完成(阻塞方法)
hadoop fs -setrep 3 /hadoop6
只能修改hdfs上已经存在的文件或目录(对于上面的例子只修改hadoop6这个文件),对于新上传的文件副本个数 hdfs-site 配置文件中的作用的。
hdfs的存储文件的副本的修改:
(1)配置文件 全局
hdfs-default.xml 3
hdfs-site.xml 2
(2)命令单个文件或目录的
hadoop fs -setrep
(3)加载:
hdfs-default 3
---> hdfs-site 2
--->setrep 3
最后加载的最终生效
十二、查看磁盘占有情况
du df
hadoop fs -du -h hdfs目录
hadoop fs -du -h /
统计hdfs的每一个文件夹|文件的大小
hadoop fs -df -h hdfs目录
hadoop fs -df -h /
查看指定路径的磁盘占有率
十三、其他
(1)-appendToFile 追加 了解
hadoop fs -appendToFile 本地文件 hdfs文件
将本地文件 追加到指定的hdfs文件的末尾
hadoop fs -appendToFile hdfs-site.xml /slaves 不建议使用的
(2)-cp|-mv
用法:
hadoop fs -cp|-mv hdfs路径 hdfs路径
将hdfs的(目录)文件 拷贝 | 移动 hdfs另一个文件路径中
hadoop fs -cp /slaves /sl01 了解
hadoop fs -mv /slaves /sl02 重命名 掌握
(3)-getmerge 合并下载 归并下载
将hdfs上的多个文件 合并为一个文件下载
hadoop fs -getmerge hdfs路径1 hdfs路径2 … 本地路径
将hdfs的多个路径合并下载到本地
hadoop fs -getmerge /sl01 /sl02 /home/hadoop/testmetge
这个命令 默认将最后一个目录识别为本地路径
(4)-count 文件统计
(5)-text 将文件以文本显示
hadoop fs -text /hadoop6
十四、hdfs的所有路径权限定名
namenode的访问路径+需要访问的路径
core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hdp01:9000</value>
</property>
hdfs://hdp01:9000/
简写 /
全写:hadoop fs -ls hdfs://hdp01:9000/
hdfs --》 协议
hdp01 namenode 主节点
hdfs有两个端口:
9000:datanode和namenode通信访问的端口内部rpc协议的
50070:客户端访问web界面的http协议端口