一、起源
说到HDFS,不得不说一下google的三驾马车:GFS、MapReduce和BigTable。其中HDFS是GFS的一个实现方案,MapReduce对应于MapReduce,HBase对应于BigTable。HDFS的全名为Hadoop Distributed File System,它是一个分布式的文件存储系统。
二、结构与作用
HDFS中存在着一些角色,他们有着各自不同的作用:client,namenode,secondarynamenode,datanode。在分布式的系统中,总是有这么一个概念:在一个集群中包含着一个master,多个slave。在HDFS中,一个namenode对应多个datanode。
1、namenode的作用:①负责存储HDFS中的元数据(metadata)②client进行交互,处理读写请求(然而实际的操作并不是由它完成)③存储文件数据目录
2、datanode的作用:①存储实际的数据块 ②执行数据块的读写操作 ③响应namenode的创建、删除和复制块的命令 ④定期向namdnode发送心跳消息
3、client的作用:①将文件按照block的大小将文件进行切分成一个或多个block(hadoop 在2.x之后默认block大小为128M) ②与namenode进行交互,获取元数据信息 ③与datanode进行读写操作
4、secondary namenode的作用:首先要了解一点,secondary namenode并不是namenode的备份。①负责定期合并namenode的edit logs到fsimage文件中
在上面提到的edit logs和fsimage解释一下:
edit logs是namenode启动后,对文件系统的改动序列
fsimage是namenode启动时对整个文件系统的快照
三、HDFS的优缺点
1、优点:①高容错性,由于备份机制,使得数据更加安全 ②适合大规模的数据处理 ③可以部署在廉价的机器上面
2、缺点:①不适合小文件的存储 ②不适合低延迟的数据访问 ③不能并发写,但是可以并发的读