首页 > 代码库 > Hadoop-04-分布式文件系统和HDFS

Hadoop-04-分布式文件系统和HDFS

1.分布式文件系统和HDFS

1.1产生原因

           数据量越来越多,在一个操作系统管辖的范围内存不下,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,由此产生了分布式文件管理系统。

1.2定义

           是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。

1.3特点

(1)通透性:

           让实际上通过网络来访问文件的动作,由程序与用户看来,就像是访问本地的磁盘一般;

(2)容错性:

           即使系统中有某些节点脱机,整体来说系统仍然可以持续运作而不会有数据损失。

1.4其它

分布式文件管理系统很多,hdfs只是其中的一种,适用于一次写入多次查询的情况,不支持并发写情况,小文件也不合适。

2.HDFS的shell操作

2.1.概述

(1)调用文件系统(FS)Shell命令应使用 bin/hadoopfs 的形式。

(2)所有的FS shell命令使用URI路径作为参数。

 URI格式是scheme://authority/path。HDFS的scheme是hdfs,对本地文件系统,scheme是file。其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认scheme。

 例如:/parent/child可以表示成hdfs://namenode:namenodePort/parent/child,或者更简单的/parent/child(假设配置文件是namenode:namenodePort)

(3)大多数FS Shell命令的行为和对应的UnixShell命令类似。

2.2常见HDFS fs命令介绍




2.3常见HDFS fs命令演示

(1)start-all.sh开启线程


(2) -ls/-lsr 查看目录下的文件信息

 hadoop fs -ls /     查看根目录下文件与文件夹

 hadoop fs -lsr /   递归查看根目录下所有文件与文件夹

 hadoop fs -ls         默认查看hdfs下的/user/<当前用户>  例如:/user/root  


(3)–touchz 创建文件

可以创建一个文件

 hadoop fs -touchz /hello  (创建一个hello文件)


(4)–mkdir 创建文件夹

创建一个或者多个文件夹(hadoop则不需要-p)

 hadoop fs -mkdir /user  (创建一个user文件夹)


说明:linux中创建多级目录 mkdir –p   p表示parents

(5)-text/-cat查看文件内容

 hadoop fs -text /hello

 hadoop fs -cat /hello

(6)-mv 移动/重命名

该命令选项表示移动 hdfs 的文件到指定的 hdfs 目录中。后面跟两个路径,第一个表示源文件,第二个表示目的目录

 hadoop fs -mv /hello /user(文件到文件夹:是移动)



hadoop fs -mv /hello /user/hello1 (文件到文件:是重命名)


(7) -cp 复制

该命令选项表示复制 hdfs 指定的文件到指定的 hdfs 目录中。后面跟两个路径,第

一个是被复制的文件,第二个是目的地

 hadoop fs -cp /user/hello /user/root


(8) -rm/-rmr 删除文件

-rm:删除文件/空白文件夹

该命令选项表示删除指定的文件或者空目录

 hadoop fs -rm /user/hello


-rmr:递归删除

该命令选项表示递归删除指定目录下的所有子目录和文件

 hadoop fs -rmr /user


(9) -put 上传文件

该命令选项表示把 linux 上的文件复制到 hdfs 中

 hadoop fs -put install.log /user 

将当前linux目录下的install.log文件,上传到/user(hdfs服务器上的user目录下)

hadoop fs -put install.log  /你叫起的名字(hello—文件名)

例如:hadoop fs -put install.log  /user


(10)-copyFromLocal 从本地复制

用法与-put一样

 hadoop fs -copyFromLocal anaconda-ks.cfg /user


(11) -moveFromLocal从本地移动

该命令表示把文件从 linux 上移动到 hdfs 中

hadoop fs -moveFromLocal test1.txt /test1


(12) -getmerge 合并下载到本地

该命令选项的含义是把 hdfs 指定目录下的所有文件内容合并到本地 linux 的文件中

hadoopfs –getmerge /demo/test1


(13) -setrep/-setrep -R/-setrep -R -w 设置副本数量

该命令选项是修改已保存文件的副本数量,后面跟副本数量,再跟文件路径

 hadoop fs -setrep 2 /demo/test1  设置/demo/test1副本数量为2


如果最后的路径表示文件夹,那么需要跟选项-R,表示对文件夹中的所有文件都修改副本

 hadoop fs -setrep -R 2 /demo  设置/demo下所有文件(不是文件夹)的副本数量为2


还有一个选项是-w,表示等待副本操作结束才退出命令

 hadoop fs -setrep -R -w 1 /demo/test1

(14) -du统计目录下个文件大小

 hadoop fs -du /    查看根目录下的各个文件的大小


 hadoop fs -dus /   汇总统计目录下所有文件的总大小(也就是当前文件夹的大小)


(15)-count统计文件(夹)数量

 hadoop fs -count /usr  递归统计当前文件下的所有信息:数字代表(文件夹总数量、文件总数量、文件总大小信息)

 hadoop fs -lsr /usr    验证信息


(16)–chmod/-chmod -R 修改文件权限

该命令选项的使用类似于 linux 的 shell 中的 chmod 用法,作用是修改文件的权限

  hadoop fs - chmod 777 /user/hehe.txt  修改该文件的权限


如果加上选项-R,可以对文件夹中的所有文件修改权限

  hadoopfs – chmod -R 777 /user  修改该文件夹下所有文件的权限


(17) hadoop jar 导jar在命令行运行

job.setJarByClass(WordCountApp.class);

在linux下 :

hadoop jar    /linux下路径/XXX.jar    /hadoop执行jar的文件或者文件夹    /hadoop下存放目录







Hadoop-04-分布式文件系统和HDFS