云/大数据      Hadoop2.7.0常用操作HDFS的Shell命令   
文章目录  [隐藏]

1.使用Shell

fs命令:

hadoop fs 为固定前缀,接着是-命令,后面根据情况可能是各种命令参数,如副指令、路径。

0)打印文件列表 ls

(1)标准写法

  -rw-r--r-- 2 root supergroup 4855027 2015-05-07 10:43 / dead_train.txt
  权限 副本数 用户 用户组 大小byte 创建日期 创建时间 路径 文件名
(2)简写

(3)打印指定子目录

(4)XXXXX

  drwxr-xr-x - root supergroup 0 2015-05-07 11:12 /
(5)最大单位打印

-rw-r–r– 2    root supergroup 4.6M 2015-05-07 10:43  /   dead_train.txt
权限   副本数 用户  用户组  大小  创建日期 创建时间 路径 文件名

(6)递归打印

(7)多个打印参数

1)上传文件/目录 put、copyFromLocal

从主机本地系统到集群HDFS系统。

(1)put

<1>上传新文件

<2>上传文件夹

<3>覆盖上传

(2)copyFromLocal

和put的用法雷同。
<1>上传文件并重命名

<2>覆盖上传

2)下载文件/目录 get、copyToLocal

从集群HDFS到本地文件系统。

(1)get

<1>拷贝文件到本地目录

<2>拷贝文件并重命名。可以简写

(2)copyToLocal

<1>拷贝文件到本地目录

<2>拷贝文件并重命名。可以简写

3)拷贝文件/目录 cp

<1>从本地到HDFS,同put

<2>从HDFS到HDFS

4)移动文件 mv

5)删除文件/目录 rm

<1>删除指定文件

<2>删除全部txt文件

<3>递归删除全部文件和目录

6)读取文件 cat

7)读取文件尾部 tail

8)创建空文件 touchz

9)写入文件 appendToFile

10)创建文件夹 mkdir

11)改变文件副本数 setrep

-R 递归改变目录下所有文件的副本数。
-w 等待副本数调整完毕后返回。可理解为加了这个参数就是阻塞式的了。

12)获取逻辑空间文件/目录大小 du

13)获取HDFS目录的物理空间信息 count

-q 查看全部信息,否则只显示后四项。


2.使用JavaAPI

以下jar都可以从%hadoop_home%/share/hadoop/中找到

本例使用
Eclipse IDE for Java Developers版eclipse-java-luna-SR2-linux-gtk-x86_64.tar.gz
下载
http://www.eclipse.org/downloads
在debian中安装
tar -zxvf eclipse-java-luna-SR2-linux-gtk-x86_64.tar.gz
注意,首先从shell启动HDFS。

对于shell的代码

错误:
Failed to replace a bad datanode on the existing pipeline due to no more good datanodes being available to try.
原因:无法写入;我的环境中有3个datanode,备份数量设置的是3。在写操作时,它会在pipeline中写3个机器。默认replace-datanode-on-failure.policy是DEFAULT,如果系统中的datanode大于等于3,它会找另外一个datanode来拷贝。目前机器只有3台,因此只要一台datanode出问题,就一直无法写入成功。

解决办法:修改hdfs-site.xml文件,添加或者修改如下两项:

修改xml文件的做法只对shell起作用,在eclipse中的代码还得用conf.set("","");

3.HDFS运行流程参考图



承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设