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下存放目录