HDFS作为一种新兴的并行文件系统,和现有的分布式文件系统相似,他们都是运行在普通硬件之上的分布式文件系统,然而HDFS与其他分布式文件系统也存在着一些差别。如HDFS具有高容错性,可以部署在低成本的硬件之上,同时放松了对POSIX的需求,使其可以以流的形式访问文件数据,非常适合大数据集的应用程序。分析研究HDFS与其他并行文件系统的相同点和不同点,能够深入了解HDFS系统的应用场景和设计理念。
(1)访问的透明性,用户能通过相同操作来访问本地文件和远程文件。HDFS可以做到这一点,但如果HDFS设置成本地文件系统,而不是分布式,那么HDFS的应用程序可以直接读写本地文件,只需要修改配置文件。可见,HDFS提供的访问透明性是不完全的,毕竟它构建于java之上,不能像NFS和Lustre那样去修改Unix内核,同时将本地文件和远程文件以一致地方式处理。
(2)并发控制,客户端对文件的读写不应该影响其他客户端对同一个文件的读写。要想实现这种单个文件拷贝语义,分布式文件系统需要做出复杂的交互,例如采用时间戳、采用互斥、原子操作等。而HDFS采用的机制非常简单,任何时间都只允许一个客户端进行写操作。当客户端需要写文件时,会对这个文件申请一个租约,只有这个租约被释放,别的客户端才能申请对这个文件的写操作。文件经创建并写入关闭之后不再改变,它的模型是“Write-Once-Read-Many”。
(3)资源移动策略,HDFS支持“移动计算到数据”。若一个Map任务是对某个数据块的操作,则这个操作必定是在存储这个数据块的节点上完成的,同时HDFS支持数据的多副本(默认为3个副本),存储任一副本的节点都可以执行Map任务的操作,JobTracker会把任务分配给距离客户端最近的,且存有副本的节点。
通过上面三方面的比较,可以深入的理解HDFS的优点和缺点,以及HDFS的设计应用场景。对于追求海量数据的高吞吐量、批量处理任务HDFS无疑能发挥巨大的威力,但是对文件的随机读写却并不适合。同时,HDFS也不适合对低延时访问、大量小文件的存储及处理。
更多精彩内容请关注:http://bbs.superwu.cn
关注超人学院微信二维码: