云端磁盘:网络巨头如何存储数据(上)
jim 发表于:12年04月09日 09:21 [编译] 存储在线
Hadoop分布式文件系统(HDFS)
Hadoop是用Java开发的,作为Apache基金会的一个开源项目,它在网络公司和其他有“大数据”问题的公司间已经有了如下的口碑,它被称 之为“二十一世界的瑞士军刀”。所有这些宣传意味着,你很可能会发现你迟早要以某种形式用Hadoop处理问题而不是用其他的分布式文件系统——特别是当 微软开始将其列入Windows Server的扩展中的时候。
Hadoop是由开发者Doug Cutting在他儿子给一只玩具大象起名后用它命名的,“灵感”来自于GFS和谷歌的MapReduce分布式计算环境。在2004年,Cutting 和其他工作于Apache Nutch搜索引擎项目的人试图寻求一种可以将抓取器和索引带向“网络规模”的方式,Cutting阅读了谷歌关于GFS和MapReduce的论文并开 始动手开发自己的项目。虽然对于Hadoop的大多数热情来自于它由MapReduce启发的分布式处理管理衍生出的分布式数据处理能力,但使用 Hadoop分布式文件系统还是因为它能对大量数据进行处理。
Hadoop是在Apache许可证下开发的,有许多商业和自由发行版可用。我用的版本来自Cloudera公司(Doug Cutting现在的东家)——Cloudera发行版包括了Apache Hadoop(CDH),Cloudera企业平台的开源版本,和Cloudera服务和配置特别版,它可免费支持50个节点。
HortonWorks,该公司与微软合作帮助后者把Hadoop移植到Azure和Windows Server,有其自己的基于Hadoop和HortonWorks数据平台,是一个受限的“技术预览版”。同样还有Apache Core的Debian包,和许多其他开源的或商业的基于Hadoop的某种形式的产品。
HDFS可被用于支持在大量廉价硬件和大数据下广泛的应用。但由于其架构,它不完全适合于通用数据存储,并且放弃了一定的灵活性。HDFS必须废除 某些经常与文件系统有关的事情,以确保它能更好地处理在分布着数百甚至数千台物理机器上的大量数据——如对数据交互访问这种事情。
虽然Hadoop运行于Java上,但是除了它的Java API之外还有许多种方式和HDFS进行交互。有一种C语言版本的API,通过Hadoop的命令行界面,文件可以通过HTTP请求浏览。还有 MountableHDFS,一个基于FUSE的扩展,允许HDFS被大多数操作系统作为一个文件系统挂载。开发者们正在制作一个WebDAV接口,让系 统可以进行基于网络的数据写入。