Hadoop For Windows

Hadoop从一出生就只面向Linux操作系统,且一直未曾考虑支持Windows操作系统。但随着Hadoop的普及,微软不得不开始为Hadoop增加patch以推进Windows成为生产环境。经过各方努力,Apache Hadoop已经同意将这些windows patch融入到核心代码中( http://hortonworks.com/blog/hadoop-in-windows/ ),目前,Hadoop svn上已经增加了两个分支:branch-1-win和branch-trunk-win,且Hortonworks联合微软发布了Hadoop windows安装版( http://hortonworks.com/blog/installing-hadoop-on-windows/ )。

对于Hadoop平台支持问题,很多读者可能有这样的疑问:既然Hadoop是采用JAVA语言编写的,而JAVA具有跨平台特性,那么为什么官方只推荐Linux作为生产环境,而不推荐Windows呢? 在本文中,我将简单介绍目前Hadoop的哪些特性不能够得到windows平台的支持。

总体上讲,Hadoop中的以下几个特性无法得到windows平台的支持,换句话说,为了支持windows平台,必须修改这几个特性的实现(https://issues.apache.org/jira/browse/HADOOP-8079):

(1)管理脚本。 在Hadoop 1.0的安装目录中有一个bin目录,里面存放着各种shell管理脚本。很明显,对于Windows而言,无法运行直接这些shell脚本,需要对这些脚本进行修改。 在Hadoop Windows中,重新添加了后缀为.cmd的一系列管理脚本。

(2)HDFS权限管理。 HDFS的文件权限管理采用了Linux操作系统的权限管理,如果移植到Hadoop windows上,需要将对应的文件权限管理改为windows中的权限管理机制。

(3)Hadoop native library。 Hadoop中有一种native library机制,允许用户直接采用本地库(一般为C/C++编写)进行某种操作以优化性能,比如压缩解压库,Native IO等。如果将Hadoop移植到windows,这些对应的库需要跟着移植。

(4)Native TaskController。 TaskTracker启动时,会调用一个插拔式组件TaskController运行任务,TaskController一般会添加一些任务控制机制,比如设定任务启动用户。默认实现是DefaultTaskController,另外一个可使用的是LinuxTaskController,该TaskController将以提交用户的身份运行任务(默认情况下是以TaskTracker启动用户运行任务)。

(5)单元测试用例。原始的Hadoop很多测试用例无法再windows上运行通过,需要进行修改。

(6)其他零散问题。比如路径问题、资源泄露等(具体参考:https://issues.apache.org/jira/browse/HADOOP-8079)。

参考资料:

http://hortonworks.com/blog/hadoop-in-windows/

https://issues.apache.org/jira/browse/HADOOP-8079

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/mapreduce/hadoop-for-windows/

你可能感兴趣的:(linux,windows,hadoop,集群)