一、hadoop四个核心模块
- hadoop common
- hadoop distributed file system(功能:对数据存储功能的访问)
分布式存储系统
提供了 高可靠性、高扩展性和高吞吐率的数据存储服务 - hadoop yarn(用于框架和集群管理)
分布式计算框架(计算向数据移动)
具有 易于编程、高容错性和高扩展性等优点。 - hadoop mapreduce( 实现数据的分析和处理)
hadoop 的思想理念
- 化整为零(大的文件,按照字节进行切割)
- 并行计算(将切割的文件,分发到多台服务器,到达分而自治)
二、Hadoop-HDFS
2.1、hadoop 架构模型
- 文件元数据MetaData,文件数据
- 元数据
- 数据本身
- (主)NameNode节点保存文件元数据:单节点 posix
- (从)DataNode节点保存文件Block数据:多节点
- DataNode与NameNode保持持续联通(每隔一段时间,ping一下),提交Block列表
- HdfsClient与NameNode交互元数据信息
- HdfsClient与DataNode交互文件Block数据
2.1、存储模型:字节(byte)
- 文件线性切割成块(Block):偏移量 offset (byte)
- Block分散存储在集群节点中
- 单一文件Block大小一致(最后一个切割的大小可以不一样),文件与文件可以不一致
- Block可以设置副本数(保证数据的完整性,最少三个),副本分散在不同节点中, 副本数不要超过节点数量
- 文件上传可以设置Block大小(最小1m,最大128m)和副本数
- 已上传的文件Block副本数可以调整,大小不变
- 只支持一次写入多次读取,同一时刻只有一个写入者 可以append追加数据
2.3、Block的副本放置策略
第一个副本:放置在上传文件的datanode中;如果是在集群外的话,则随机挑选一台磁盘不太满,CPU不太忙的节点。
第二个副本:放置在于第一个副本不同的机架的节点上。
第三个副本:与第二个副本相同机架的不同节点。
更多副本:随机节点
2.4、优缺点
HDFS优点:
- 高容错性
数据自动保存多个副本
副本丢失后,自动恢复 - 适合批处理
移动计算而非数据
数据位置暴露给计算框架(Block偏移量) - 适合大数据处理
GB 、TB 、甚至PB 级数据
百万规模以上的文件数量
10K+ 节点
- 可构建在廉价机器上
通过多副本提高可靠性
提供了容错和恢复机制
HDFS缺点: - 低延迟数据访问
比如毫秒级
低延迟与高吞吐率 - 小文件存取
占用NameNode 大量内存
寻道时间超过读取时间 - 并发写入、文件随机修改
一个文件只能有一个写者
仅支持append
2.5、NN和DN
NameNode(NN)
基于内存存储 :不会和磁盘发生交换
只存在内存中
持久化(NameNode的metadate信息在启动后会加载到内存;
metadata存储到磁盘文件名为”fsimage”;
Block的位置信息不会保存到fsimage
)
NameNode主要功能:
接受客户端的读写服务
收集DataNode汇报的Block列表信息
NameNode保存metadata信息包括
文件owership和permissions
文件大小,时间
(Block列表:Block偏移量),位置信息
Block每副本位置(由DataNode上报)
DataNode(DN)
本地磁盘目录存储数据(Block),文件形式
同时存储Block的元数据信息文件
启动DN时会向NN汇报block信息
通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其它DN