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也不适合对低延时访问、大量小文件的存储及处理。java
更多精彩内容请关注:http://bbs.superwu.cn 微信 关注超人学院微信二维码: 并发 |