Hadoop之hdfs1.x分布式存储系统学习
一、Hadoop创始人介绍
Doug cutting,就职Yahaoo期间开发了Hadoop项目,目前就职于Cloudera公司从事架构工作。Hadoop是其儿子的玩具大象,Doug cutting还编写了其情妇命名的lucene 。
二、Hadoop简介
1、分布式存储系统hdfs(存储)
2、分布式计算框架MapReduce(离线计算,spark内存计算,storm流式计算)
三、HDFS介绍
分布式存储系统,提供了高可靠性、高扩展性、高吞吐率的数据存储服务。
优点:
高容错性:
1、数据自动保存多个副本
2、副本丢失后,自动保存恢复(每个block副本都有相同的ID,副本不能在同一太机器上。)
适合批处理:
1、移动计算而非数据
2、数据位置暴露给计算框架如spark,MapReduce
适合大数据处理:
1、可以说hdfs存储内存没有上限,可以百万规模以上的文件数量,10k+节点。
可构建廉价机器上:
1、通过多副本提高可靠性。
2、提供了容错和恢复机制
缺点:
小文件存取:
1、占用nameNode大量内存。
2、寻到的时间超过读取时间
并发写入、文件随机修改:
1、一个文件只能有一个写者,仅支持append追加,修改成本很高(修改block,副本等)。
四、HDFS架构图
NameNode:主节点
SecondaryNode:辅助节点
DataNode:数据节点。
五、HDFS之DataNode
启动DN时会向NN汇报block位置信息。
通过向NN发送心跳与其保持联系3秒一次,如果超过10分钟没有心跳,NN则认为DN已经lost,并copy其上的block到其他DN(去副本copy,如果没有其他DN并且小于副本设置数量则报错)
hdfs数据存储单元格(block)。
文件被划分成固定大小的数据块:
1、默认64m,可配置。2、若文件大小不到64m,则单独存储成一个block
文件存储方式:
1、按照文件大小切分成若干个block,存储到不同的节点。
2、默认情况下每个block都有三个副本,可配置。
Block大小和副本的数通过Client端上传文件时设置(不设置系统默认),文件长传成功后副本数量可以变更,block的size不能改变。
六、HDFS之NameNode
主要功能:接收客户端的读写服务。
NameNode保存metadate信息(元数据)包括:文件的读写权限,文件包含哪些块,Block保存在哪个DataNode(由DataNode启动时上报位置信息)
NameNode的metadate信息(元数据)在启动后会加载到内存。
metadate存储到磁盘文件“fsimage”(每次操作会记录到内存由SecondaryNode完成更新)
Bolock位置信息不会保存到fsimage
edits记录对metadate信息(元数据)的操作日志。
七、HDFS之SecondaryNode
它不是NameNode的备份,主要工作是帮助NN合并edits,减少NN启动时间
SNN执行合并时机
1、根据配置文件设置的时间间隔fs.chenckpoint.period 默认3600秒
2、根据配置文件设置的edits log大小,fs.chenckpoint.size 规定最大默认值64m
Block副本策略
第一副本:放置在上传的DN
第二副本:放置在另一台机架上
第三副本:放置在第二副本同台机架上
第四副本:随机
八、HDFS写文件流程
1、Client上传文件通过Distributrd FileSystemAPI请求(文件信息,用户名等)到NameNode。
2、NN会根据Client设置的block大小等(绝大多数适用系统默认)返回给客户端空闲状态良好的DataNode和block大小。
3、Client获得NN返回的信息,通过FSDataOutputStreamAPI(字节流)写入文件(当写满block,写入到其他block)。
4、写出完成后关闭IO,block汇报NN修改元数据metadate。
副本:跟Client无关,到DN写完后会自动copy到其他副本(复制线程运行时,NN检查线程无法检查)
九、HDFS读文件流程
1、Client上传文件通过Distributrd FileSystemAPI请求(文件名,用户名等)到NameNode。
2、NN返回给客户端元数据metadate,NN会根据心跳检查副本健康状态返回良好的block副本位置。
3、Client获得NN返回的信息,通过FSDataOutputStreamAPI(字节流)读出文件(顺序读出)。4、读出完成后关闭IO
十、HDFS文件权限
十一、HDFS安全机制