本节书摘来自华章出版社《R与Hadoop大数据分析实战》一书中的第2章,第2.5节,作者 (印)Vignesh Prajapati,更多章节内容可以访问云栖社区“华章计算机”公众号查看
2.5 在R环境中编写Hadoop MapReduce程序的方式
我们知道对将R工具用于分析的统计学家、网络分析师以及产品经理来说,用MapReduce进行Hadoop大数据处理是一件非常重要的事,因为补充MapReduce的编程知识对于用Hadoop将分析整合到MapReduce来说是必要的。并且,我们知道R是一个一直以来普及程度逐步提升的工具;为了整合R,有许多程序包和函数库一直在改进。因此为了研发基于R和Hadoop计算能力运行的MapReduce算法程序,我们需要R和Hadoop的中间软件。RHadoop、RHIPE以及Hadoop streaming是帮助在R中开发和执行HadoopMapReduce的中间接口软件。在最后一部分,我们将会讨论RHadoop、RHIPE并且介绍Hadoop streaming,并且直到最后一章节为止,我们将用这些程序包开发MapReduce。
2.5.1 RHadoop
Rhadoop是一个的很棒的R开源软件框架,用于通过R函数用Hadoop平台执行数据分析。Revolution Analytics研发了Rhadoop,它是基于开源R项目用于统计计算的软件和服务的主要商业供应商。RHadoop项目有3个R程序包:rhdfs、rmr以及rhbase。所有的这些程序包的应用和测试是在Cloudera Hadoop分配的CDH3、CDH4以及R 2.15.0上执行的。并且,这些是用Revolution Analytics分配的R4.3版本、5.0版本以及6.0版本测试的。
这3个不同的R程序包是在Hadoop的两个主要功能HDFS以及MapReduce上设计而成的:
rhdfs:这是一个用于向R提供所有Hadoop HDFS接口的R程序包。所有分配的文件可以用R函数进行管理。
rmr:这是一个用于向R提供所有Hadoop MapReduce开发接口的R程序包。在这个程序包的帮助下,研发Map执行单元和Reduce执行单元变得很容易。
rhbase:这是一个通过R用于在HBase分布式数据库里处理数据的R程序包。
2.5.2 RHIPE
R和Hadoop综合程序设计环境(RHIPE)是一项免费、开源的项目。RHIPE广泛用于大数据的分析和D&R分析。D&R分析用于将大型数据分类,同时在分布式的网络中并行处理数据,产生中间结果,最后将中间所有的输出数据组成一组。RHIPE在Hadoop平台上进行D&R复杂的大数据分析。RHIPE是由SaptarshiJoy Guha(Mozilla公司的数据分析员)和她的团队根据她在普渡大学统计学的博士论文开发出来的。
2.5.3 Hadoop streaming
Hadoop streaming能实现Hadoop分配。你可以像Map执行单元或是Reduce执行单元一样根据任何可执行的脚本来开发和运行一个MapReduce作业。R、Python、Ruby、Bash、Perl等软件均支持这项工作。我们使用R语言执行bash脚本。
同时,一种叫HadoopStreaming的R程序包被研发出来,用于在R脚本的帮助下,在Hadoop集群上进行数据分析,这是R和Hadoop streaming进行数据传输的接口。另外,MapReduce任务可以在没有Hadoop的情况下运行。David Rosenberg开发了这个程序包,他是SenseNetworks的首席科学家。他在机器学习和数据建模方面是专家。