Hadoop基础之HDFS
HDFS是hadoop的分布式文件系统,是一个高度容错性的系统(做了冗余),适合部署在廉价的机器上。可以提供高吞吐量的数据访问,适合大规模数据集上的应用。
简单结构:DateNode+NameNode
设计思路:个人理解,首先从宏观来说,DN做集群,数据做冗余,这样使得hdfs的容错性增加,NN的设计有点类似jvm中的栈,以及Dubbo的注册中心,用于存放真正数据或者说组件和存放组件的详细信息(元数据)分离,这样数据请求要先在NN中找到自己想要的组数据信息(存在哪个DN?哪个Block?等)但是NN不转发请求,这样就减少了NN的压力,这种设计让整个框架变得更加灵活。有点像IOC的xml配置,想要动态增加组件,只需要分别增加组件实体和元数据即可。
整体框架:
Block作为hdfs的数据存储单元,每个文件按照大小切分成若干个Block,存储在不同节点上,默认情况下每个block都有三个副本,存放在不同的DN上。
NameNode接收客户端的读写服务,保存DN以及Block的详细信息。
DateNode存储block,并且在启动的时候向NN汇报block信息,通过向NN发送心跳保持与其联系,如果NN10分钟没有收到DN的心跳,则认为DN已经死掉,并copy其上的block到其他DN上。