文章目录
Hadoop
HDFS
概述
HDFS是一个分布式的文件系统,通过目录树来定位文件。
使用场景:一次写入,多次读出。(文件上传后只读不改)
优点
-
高容错性
数据会自动保存多个副本,同时当某个副本丢失后,可以自动恢复(从别的机器上复制)。
-
处理大数据
(1) 数据规模:可以处理GB、TB甚至PB级别的数据。
(2) 文件规模:可以处理百万规模以上的文件数量。
-
机器要求低
可以构建在廉价的机器上,因为存在着副本机制。
缺点
-
速度慢
-
无法高效存储大量小文件
(1)小文件会占用NameNode大量的内存来存储文件目录和块信息。
(2)寻址时间会超过读取时间
-
不支持并发写入和文件随机修改
文件只支持追加。
*组成架构
NameNode(nn)
负责管理
(1)管理HDFS名称空间
存储所有的元数据
(2)配置副本策略
每个文件的副本有几个
(3)管理数据块(Block)映射信息
即每个文件所在的位置
(4)处理客户端读写请求
DataNode
(1)存储实际的数据块
(2)执行数据块的读/写
Secondary NameNode
不是NameNode的热备份,当NameNode挂了之后,不能立刻替换Nam deNode提供服务。
(1)辅助NameNode,分担工作,会定期合并Fsimage(镜像文件)和Edits(编辑日志),然后推送给NameNode
(2)紧急情况时,可以辅助恢复NameNode,但是可能会丢失部分数据
Client
(1)文件切分
按照nn的文件块大小对文件进行切分
(2)与NameNode交互,获取文件的位置信息
(3)与DataNode交互,读取或写入数据
(4)通过命令管理HDFS,比如NameNode格式化
(5)通过命令访问HDFS,实现增删改查
文件块大小
默认文件块大小为128M(dfs.blocksize),如果存入1KB的文件,只占用1KB,剩余的空间还可以存储别的文件。
寻址时间为传输时间的1%时,为最佳状态。
Shell命令
上传
剪切 (moveFromLocal)
hadoop fs -moveFromLocal 本地路径 hdfs 路径
拷贝(moveFromLocal/put)
hadoop fs -put 本地路径 hdfs路径
hadoop fs -copyFromLocal 本地路径 hdfs路径
追加文件到文件末尾(appendToFile)
hadoop fs -appendToFile 本地路径 hdfs具体文件路径
下载
copyToLocal/get
hadoop fs -get hdfs文件路径 本地路径
HDFS内操作
-ls: 显示目录信息
hadoop fs -ls hdfs路径
-cat:显示文件内容
hadoop fs -cat 文件路径
-chgrp、-chmod、-chown:Linux文件系统中的用法一样,修改文件所属权限
hadoop fs -chmod 666 文件路径
-mkdir:创建路径
hadoop fs -mkdir 路径
-cp:从HDFS的一个路径拷贝到HDFS的另一个路径
hadoop fs -cp 文件路径 目的路径
-mv:在HDFS目录中移动文件
hadoop fs -mv 文件路径 目的路径
-tail:显示一个文件的末尾1kb的数据
hadoop fs -tail 文件路径
-rm:删除文件或文件夹
hadoop fs -rm 文件路径
-rm -r:递归删除目录及目录里面内容
hadoop fs -rm -r 文件路径
-du统计文件夹的大小信息
hadoop fs