`

R语言与hadoop之间的千万柔情

阅读更多
Hadoop的家族如此之强大,为什么还要结合R语言?
a. Hadoop家族的强大之处,在于对大数据的处理,让原来的不可能(TB,PB数据量计算),成为了可能。
b. R语言的强大之处,在于统计分析,在没有Hadoop之前,我们对于大数据的处理,要取样本,假设检验,做回归,长久以来R语言都是统计学家专属的工具。
c. 从a和b两点,我们可以看出,hadoop重点是全量数据分析,而R语言重点是样本数据分析。 两种技术放在一起,刚好是最长补短!
d. 模拟场景:对1PB的新闻网站访问日志做分析,预测未来流量变化
d1:用R语言,通过分析少量数据,对业务目标建回归建模,并定义指标。
d2:用Hadoop从海量日志数据中,提取指标数据
d3:用R语言模型,对指标数据进行测试和调优
d4:用Hadoop分步式算法,重写R语言的模型,部署上线
这个场景中,R和Hadoop分别都起着非常重要的作用。以计算机开发人员的思路,所有有事情都用Hadoop去做,没有数据建模和证明,”预测的结果”一定是有问题的。以统计人员的思路,所有的事情都用R去做,以抽样方式,得到的“预测的结果”也一定是有问题的。
所以让二者结合,是产界业的必然的导向,也是产界业和学术界的交集,同时也为交叉学科的人才提供了无限广阔的想象空间。

Mahout同样可以做数据挖掘和机器学习,和R语言的区别是什么?
a. Mahout是基于Hadoop的数据挖掘和机器学习的算法框架,Mahout的重点同样是解决大数据的计算的问题。
b. Mahout目前已支持的算法包括,协同过滤,推荐算法,聚类算法,分类算法,LDA, 朴素bayes,随机森林。上面的算法中,大部分都是距离的算法,可以通过矩阵分解后,充分利用MapReduce的并行计算框架,高效地完成计算任务。
c. Mahout的空白点,还有很多的数据挖掘算法,很难实现MapReduce并行化。Mahout的现有模型,都是通用模型,直接用到的项目中,计算结果 只会比随机结果好一点点。Mahout二次开发,要求有深厚的JAVA和Hadoop的技术基础,最好兼有 “线性代数”,“概率统计”,“算法导论” 等的基础知识。所以想玩转Mahout真的不是一件容易的事情。
d. R语言同样提供了Mahout支持的约大多数算法(除专有算法),并且还支持大量的Mahout不支持的算法,算法的增长速度比mahout快N倍。并且开发简单,参数配置灵活,对小型数据集运算速度非常快。
虽然,Mahout同样可以做数据挖掘和机器学习,但是和R语言的擅长领域并不重合。集百家之长,在适合的领域选择合适的技术,才能真正地“保质保量”做软件。

如何让Hadoop结合R语言?
从上一节我们看到,Hadoop和R语言是可以互补的,但所介绍的场景都是Hadoop和R语言的分别处理各自的数据。
一旦市场有需求,自然会有商家填补这个空白。
1). RHadoop
RHadoop是一款Hadoop和R语言的结合的产品,由RevolutionAnalytics公司开发,并将代码开源到github社区上面。 RHadoop包含三个R包 (rmr,rhdfs,rhbase),分别是对应Hadoop系统架构中的,MapReduce, HDFS, HBase 三个部分。
参考文章:
RHadoop实践系列之二:RHadoop安装与使用
RHadoop实践系列之四 rhbase安装与使用
2). RHive
RHive是一款通过R语言直接访问Hive的工具包,是由NexR一个韩国公司研发的。
参考文章:
R利剑NoSQL系列文章 之 Hive
用RHive从历史数据中提取逆回购信息
3). 重写Mahout
用R语言重写Mahout的实现也是一种结合的思路,我也做过相关的尝试。
参考文章:
用R解析Mahout用户推荐协同过滤算法(UserCF)
4).Hadoop调用R
上面说的都是R如何调用Hadoop,当然我们也可以反相操作,打通JAVA和R的连接通道,让Hadoop调用R的函数。但是,这部分还没有商家做出成形的产品。
我写了2个例子,大家可以自己尝试着结合,做出不一样的应用来。
参考文章:
Rserve与Java的跨平台通信
解惑rJava R与Java的高速通道

R和Hadoop在实际中的案例
R和Hadoop的结合,技术门槛还是有点高的。对于一个人来说,不仅要掌握Linux, Java, Hadoop, R的技术,还要具备 软件开发,算法,概率统计,线性代数,数据可视化,行业背景 的一些基本素质。
在公司部署这套环境,同样需要多个部门,多种人才的的配合。Hadoop运维,Hadoop算法研发,R语言建模,R语言MapReduce化,软件开发,测试等等。。。
所以,这样的案例并不太多。
我做过一些尝试和努力,已经整理成文章的有3个项目,文章中仅仅是实现思路。
参考文章:
RHadoop实践系列之三 R实现MapReduce的协同过滤算法
RHadoop实验 – 统计邮箱出现次数
用RHive从历史数据中提取逆回购信息
展位未来
对于R和Hadoop的结合,在近几年,肯定会生成爆发式的增长的。但由于跨学科会造成技术壁垒,人才会远远跟不上市场的需求。
所以,肯定会有更多的大数据工具,被发明!机会就在我们的手中,也许明天你的创新,就是我们追逐的方向!!
加油!!

参考自http://blog.fens.me/r-hadoop-intro/
分享到:
评论

相关推荐

    r语言使用hadoop的模块rhadoop安装脚本

    在IT行业中,大数据处理是一个关键领域,而Hadoop作为开源的大数据处理框架,因其分布式、容错性以及可扩展性而备受青睐。...rhadoop不仅简化了R与Hadoop之间的交互,也为数据分析提供了更多可能性。

    R语言为Hadoop注入统计血脉 _ 粉丝日志_files

    R语言为Hadoop注入统计血脉 _ 粉丝日志_files

    hadoop1.x与hadoop2.x配置异同

    接下来,我们将详细讨论Hadoop的安装过程,以及Hadoop1.x与Hadoop2.x之间的配置差异。 ### Hadoop的安装 #### Hadoop1.x安装 1. **下载Hadoop**:从Apache官方网站(http://www.us.apache.org/dist/hadoop/common)...

    hadoop2.7.3 Winutils.exe hadoop.dll

    Winutils.exe是Hadoop在Windows系统上的一个实用工具,它提供了与Linux系统中bin/hadoop脚本类似的功能。这个工具主要用于执行Hadoop相关的操作,如配置HDFS(Hadoop分布式文件系统)设置、管理HDFS上的文件和目录,...

    Big Data Analytics with R and Hadoop

    本书《Big Data Analytics with R and Hadoop》就致力于解决这一问题,介绍如何利用R语言和Hadoop平台进行高效的大数据处理和分析。 R语言是一种广泛用于统计分析、图形表示和报告的编程语言,它提供了丰富的包来...

    hadoop winutils hadoop.dll

    在Windows环境下,Hadoop的使用与Linux有所不同,因为它的设计最初是针对Linux操作系统的。"winutils"和"hadoop.dll"是Hadoop在Windows上运行的关键组件。 **winutils.exe** 是一个用于Windows环境的实用工具,它...

    R and Hadoop

    然而,为了使R语言程序员能够更容易地与Hadoop数据存储进行交互并编写MapReduce程序,就需要一些特别的项目动机。这包括了提供一种简单的方式,使R程序员能够在不需要了解底层基础设施的情况下,就在大规模分布式...

    hadoop的dll文件 hadoop.zip

    在Hadoop的上下文中,这个dll文件可能包含了与Hadoop通信、数据处理或系统交互所需的特定功能。 Hadoop的核心组件主要包括两个:HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一个分布式文件系统,...

    Hadoop2.6.0 winutils 与 hadoop.dll

    在window连接虚拟机Hadoop集群时遇到如下问题: Unable to load native-hadoop library for your platform… using builtin-Java classes where applicable 即缺少 winutils.exe 与 hadoop.dll

    Hadoop下载 hadoop-2.9.2.tar.gz

    Hadoop 是一种分析和处理大数据的软件平台,是一个用 Java 语言实现的 Apache 的开源软件框架,在大量计算机组成的集群中实现了对海量数据的分布式计算。 Hadoop 采用 MapReduce 分布式计算框架,根据 GFS 原理开发...

    《Hadoop系统搭建及项目实践》课件02Hadoop安装与配置管理.pdf

    《Hadoop系统搭建及项目实践》课件02Hadoop安装与配置管理.pdf《Hadoop系统搭建及项目实践》课件02Hadoop安装与配置管理.pdf《Hadoop系统搭建及项目实践》课件02Hadoop安装与配置管理.pdf《Hadoop系统搭建及项目实践...

    R语言.zip以及相关的资源和教程

    "R语言与大数据.doc"可能涉及到R在大数据处理中的应用,例如使用Hadoop框架,这与标签中的"Hadoop"有关。 【大数据处理】:R语言可以结合Hadoop框架,通过"5-1-rhadoop简介、安装及配置.pdf"这样的教程,学习如何在...

    hadoop.dll、winutils.exe

    `winutils.exe` 对于在Windows上搭建和管理Hadoop集群是必不可少的,因为它帮助解决了Windows系统与Hadoop之间的兼容性问题。 在下载的压缩包`hadoop2.6.3_windows_bin`中,除了`hadoop.dll` 和 `winutils.exe`,...

    RHadoop安装配置(基于HADOOP2.2)

    标题 "RHadoop安装配置(基于HADOOP2.2)" 涉及的是将R语言与Apache Hadoop框架集成的RHadoop项目,这是一项在大数据处理领域中的重要技术。RHadoop允许用户利用R的强大统计分析功能处理存储在Hadoop分布式文件系统...

    hadoop2.7.3的hadoop.dll和winutils.exe

    在配置和运行Hadoop的Java应用程序时,这个DLL文件是必不可少的,因为它提供了与Hadoop分布式文件系统(HDFS)以及其他Hadoop服务通信的接口。 其次,`winutils.exe`是Hadoop在Windows上的一个实用工具程序,它提供...

    Hadoop3.1.3.rar

    9. **改进的工具和API**:Hadoop 3.1.3提供了改进的命令行工具和API,使得开发人员和管理员能更高效地与Hadoop集群交互。 10. **社区支持**:作为开源项目,Hadoop 3.1.3有活跃的开发者社区提供持续的更新和支持,...

    hadoop几个实例

    6. **Hadoop的安装与配置**:实例可能涵盖Hadoop环境的搭建,包括配置Hadoop的环境变量、初始化HDFS、启动MapReduce服务等步骤。 7. **编程接口**:Hadoop提供了Java API来编写MapReduce程序,但也有如Hadoop ...

    hadoop2.6 hadoop.dll+winutils.exe

    `hadoop.dll`确保Hadoop可以在Windows环境下正常工作,弥补了Linux系统调用与Windows API之间的差异。 `winutils.exe` 是Hadoop在Windows上的实用工具程序,类似于Linux环境下的`hadoop`命令行工具。它提供了许多...

Global site tag (gtag.js) - Google Analytics