简介
HDFS(Hadoop Distributed File System)文件系统,用于存储文件,一次写入,多次读出操作
优点:容错性好,可以处理大规模数据,服务器要求低
缺点:数据访问低,大量小文件不容易存储,不支持并发写入
NameNode:Master,管理者,管理HDFS命名空间,管理数据块,存放元数据,处理客户端读写请求
DataNode:Slave,执行者,负责执行具体操作,存储实际数据块,执行数据库读写操作
文件安装固定大小(128M)切成若干后分布式存储在datanode节点上,每个存在不同的datanode上
Client:客户端,切分文件,与nameNode交互获取文件位置信息,和DataNodej交互读取或写入数据,管理HDFS
默认一个文件会有三个副本,然后这三个副本会随机的分配到不同的服务器;可能一个服务器有俩个副本,也可能是一个,随机的,散开的;好处是容错率性高
HDFS数据块太小增加寻址时间,太大影响磁盘传输时间,所以数据块的大小取决于磁盘传输速度
通俗易解的可以上这里看:https://juejin.im/post/5e5deb30e51d452700567740
使用
进入到hadoop的bin目录下面
查看命令
./hadoop fs
可以看到命令的的使用说明
查看文件
./hadoop fs -ls /
一开始一般都是没有文件的哦
创建目录
./hadoop fs -mkdir -p /test
从本地剪切粘贴到HDFS
./hadoop fs -moveFromLocal /t1.txt /d1
我先在根目录下创建了一个test.txt文件
然后将文件移动过来./hadoop fs -moveFromLocal /test.txt /test
查看文件是否过来了
./hadoop fs -ls /test
再查看根目录中的test.txt文件已经没有了,所以就要用到拷贝命令
拷贝到HDFS
./hadoop fs -copyFromLocal /test2.txt /test
这里我新建了一个test2.txt文件在根目录下
然后拷贝,查看
再回到根目录下面还可以看到test2.txt这个文件
显示文件内容
./hadoop fs -cat /test/test.txt
HDFS拷贝文件到本地
./hadoop fs -copyToLocal /test/test.txt /
-cp,-mv,-rm,-rmdir (自行尝试,与上面的语法一致)
拷贝,移动,删除,删除文件夹
显示一个文件的末尾(在标准输出中显示文件末尾的1KB数据)
./hadoop fs -tail /test/test.txt
统计文件夹的大小信息
./hadoop fs -du -h /test
设置复本数量
./hadoop fs -setrep 6 /test/test.txt