Hadoop学习之HDFS
Hadoop学习
组成:
-
HDFS(分布式文件系统)
- 可以存储结构化和非结构化的数据
- MapReduce
- HBase
HDFS
HDFS为了做到可靠性创建了多份数据块的复制,并将它们防止在服务器群的计算节点中MapReduce就可以在它们所在的节点上处理这些数据了
比如在机器A和机器B上都有我要读取的数据,在要读取的时候机器A负载比较大,那么就使用机器B
1.1 两个节点
-
NameNode (文件越多.NameNode越大)(又称名字节点)
- 存储元数据 (元数据比文件内容小很多,比如文件名字等)
- 元数据保存在内存中
- 保存文件,block,datanode之间的映射关系
-
DataNode(比NameNode大很多) (又称数据节点)
- 存储文件内容
- 文件内容保存在磁盘
- 维护了block id 到datanode本地文件的映射关系
1.2 运行机制
- 一个名字节点和多个数据节点
- 数据复制(冗余机制) 存放的位置
- 故障检测
- 空间回收机制
1.3 Shell命令
ls, lsr
mkdir, rm cp
Chmod chown
cat, mv, put ,get ,tail
1.4 优点
1.5 缺点
不适合大量小文件(元数据过大) 如果小文件过多就要压缩
1.6 HDFS的架构
NameNode用于处理用户的请求(读文件,写文件,删除文件)
所有DataNode将数据存储在磁盘上 图中相同颜色的数据都是一样的,比如说黑色的数据存了三个副本,所以数据不易丢失,损坏一个硬盘都不是事
1.7 HDFS数据存储单元(block)
block不可变
副本数越多,磁盘利用率越低
1.8 HDFS设计思想
传入一个50GB的文件,它被切成n个block,每个block都有三个副本(三个一模一样的),这三个副本要存在不同的节点上,防止丢失,下图展示了前四个block的存储
假如一个磁盘挂掉了,系统将自动复制缺少的副本存放到空闲部分去.
只要三个磁盘不同时挂,数据就不会丢失
1.9 NameNode(NN)的介绍
- NameNode主要功能:接受客户端的读写服务
-
NameNode保存metadate信息包括
- 文件owership和permissions
- 文件包含哪些快
- Block保存在哪个DataNode(由DataNode启动的时候上报)
-
NameNode的metadate信息在启动后会加载到内存
- metadata存储到磁盘文件名为’fsimage’
- Block的位置信息不会保存到fsimage
- edits记录对metadata的操作日志
1.10 SecondaryNameNode(SNN)的介绍
1.11 SNN合并流程
每隔3600s(设置的fs.checkpoint.period),合并一次edits和fsimage
在这个操作的同事产生一个新的edits.new 记录正在合并的这个时间中用户的操作日志
合并完成后新合并的文件替换为fsimage文件
1.12 DataNode(DN)
主动向NameNode发送,如果10分钟不发,就默认为挂掉
1.12 Block的副本放置策略
同一个机架速度快一点(一般也是同一个交换机)
1.13 HDFS 读流程
一般读小的文件
从NameNode获取datanode的位置信息
通过FSData流并发的读
1.14 HDFS 读流程
返回切多少个block以及datanode的数据
然后通过溜把一个往其中的一个DataNode写一份,然后该DataNode产生线程再往其他datanode写
注意:是DataNode自己复制的,而不是客户端
1.15 HDFS文件权限
HDFS 不做密码的认证 , 用什么用户名, 就有什么权限
1.16 安全模式
刚刚启动的时候,进入一个安全模式时间段,相当于初始化阶段
上一篇: GitHub最有毒的仓库