三九宝宝网宝宝百科宝宝知识

如何利用Mahout和Hadoop处理大规模数据

05月26日 编辑 39baobao.com

[小规模纳税企业会计处理方法]【例1】某工业企业核定为小规模纳税企业,5月份购入原材料一批,按照增值税专用发票上记载的原材料成本为100万元,支付的增值税额为17万元,企业开出承兑的商业汇票,材料尚未到达。...+阅读

利用Mahout和Hadoop处理大规模数据

规模问题在机器学习算法中有什么现实意义?让我们考虑你可能需要部署Mahout来解决的几个问题的大小。

据粗略估计,Picasa三年前就拥有了5亿张照片。 这意味着每天有百万级的新照片需要处理。一张照片的分析本身不是一个大问题,即使重复几百万次也不算什么。但是在学习阶段可能需要同时获取数十亿张照片中的信息,而这种规模的计算是无法用单机实现的。

据报道,Google News每天都会处理大约350万篇新的新闻文章。虽然它的绝对词项数量看似不大,但试想一下,为了及时提供这些文章,它们连同其他近期的文章必须在几分钟的时间内完成聚类。

Netflix为Netflix Prize公布的评分数据子集中包含了1亿个评分。因为这仅仅是针对竞赛而公布的数据,据推测Netflix为形成推荐结果所需处理的数据总量与之相比还要大出许多倍。

机器学习技术必须部署在诸如此类的应用场景中,通常输入数据量都非常庞大,以至于无法在一台计算机上完全处理,即使这台计算机非常强大。如果没有 Mahout这类的实现手段,这将是一项无法完成的任务。这就是Mahout将可扩展性视为重中之重的道理,以及本书将焦点放在有效处理大数据集上的原因,这一点与其他书有所不同。

将复杂的机器学习技术应用于解决大规模的问题,目前仅为大型的高新技术公司所考虑。但是,今天的计算能力与以往相比,已廉价许多,且可以借助于 Apache Hadoop这种开源框架更轻松地获取。Mahout通过提供构筑在Hadoop平台上的、能够解决大规模问题的高质量的开源实现以期完成这块拼图,并可为所有技术团体所用。

Mahout中的有些部分利用了Hadoop,其中包含一个流行的MapReduce分布式计算框架。MapReduce被谷歌在公司内部得到广泛使用 ,而Hadoop是它的一个基于Java的开源实现。MapReduce是一个编程范式,初看起来奇怪,或者说简单得让人很难相信其强大性。 MapReduce范式适用于解决输入为一组"键 值对"的问题,map函数将这些键值对转换为另一组中间键值对,reduce函数按某种方式将每个中间键所对应的全部值进行合并,以产生输出。实际上,许多问题可以归结为MapReduce问题,或它们的级联。这个范式还相当易于并行化:所有处理都是独立的,因此可以分布到许多机器上。这里不再赘述 MapReduce,建议读者参考一些入门教程来了解它,如Hadoop所提供的

Hadoop实现了MapReduce范式,即便MapReduce听上去如此简单,这仍然称得上是一大进步。它负责管理输入数据、中间键值对以及输出数据的存储;这些数据可能会非常庞大,并且必须可被许多工作节点访问,而不仅仅存放在某个节点上。Hadoop还负责工作节点之间的数据分区和传输,以及各个机器的故障监测与恢复。理解其背后的工作原理,可以帮你准备好应对使用Hadoop可能会面对的复杂情况。Hadoop不仅仅是一个可在工程中添加的库。它有几个组件,每个都带有许多库,还有(几个)独立的服务进程,可在多台机器上运行。基于Hadoop的操作过程并不简单,但是投资一个可扩展、分布式的实现,可以在以后获得回报:你的数据可能会很快增长到很大的规模,而这种可扩展的实现让你的应用不会落伍。

鉴于这种需要大量计算能力的复杂框架正变得越来越普遍,云计算提供商开始提供Hadoop相关的服务就不足为奇了。例如,亚马逊提供了一种管理Hadoop集群的服务 Elastic MapReduce,该服务提供了强大的计算能力,并使我们可通过一个友好的接口在Hadoop上操作和监控大规模作业,而这原本是一个非常复杂的任务。

如何让Hadoop结合R语言做统计和大数据分析

1). RHadoop

RHadoop是一款Hadoop和R语言的结合的产品,由RevolutionAnalytics公司开发,并将代码开源到github社区上

面。RHadoop包含三个R包 (rmr,rhdfs,rhbase),分别是对应Hadoop系统架构中的,MapReduce, HDFS,

HBase 三个部分。

2). RHiveRHive是一款通过R语言直接访问Hive的工具包,是由NexR一个韩国公司研发的。

3). 重写Mahout用R语言重写Mahout的实现也是一种结合的思路,我也做过相关的尝试。

4).Hadoop调用R

上面说的都是R如何调用Hadoop,当然我们也可以反相操作,打通JAVA和R的连接通道,让Hadoop调用R的函数。但是,这部分还没有商家做出成形的产品。

5. R和Hadoop在实际中的案例

R和Hadoop的结合,技术门槛还是有点高的。对于一个人来说,不仅要掌握Linux, Java, Hadoop, R的技术,还要具备

软件开发,算法,概率统计,线性代数,数据可视化,行业背景

的一些基本素质。在公司部署这套环境,同样需要多个部门,多种人才的的配合。Hadoop运维,Hadoop算法研发,R语言建模,R语言

MapReduce化,软件开发,测试等等。所以,这样的案例并不太多。

如何让Hadoop结合R语言做大数据分析

R语言和Hadoop让我们体会到了,两种技术在各自领域的强大。很多开发人员在计算机的角度,都会提出下面2个问题。问题1: Hadoop的家族如此之强大,为什么还要结合R语言?问题2: Mahout同样可以做数据挖掘和机器学习,和R语言的区别是什么?下面我尝试着做一个解答:问题1: 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去做,以抽样方式,得到的“预测的结果”也一定是有问题的。所以让二者结合,是产界业的必然的导向,也是产界业和学术界的交集,同时也为交叉学科的人才提供了无限广阔的想象空间。问题2: 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 三个部分。2). RHiveRHive是一款通过R语言直接访问Hive的工具包,是由NexR一个韩国公司研发的。3). 重写Mahout用R语言重写Mahout的实现也是一种结合的思路,我也做过相关的尝试。4).Hadoop调用R 上面说的都是R如何调用Hadoop,当然我们也可以反相操作,打通JAVA和R的连接通道,让Hadoop调用R的函数。但是,这部分还没有商家做出成形的产品。

5. R和Hadoop在实际中的案例 R和Hadoop的结合,技术门槛还是有点高的。对于一个人来说,不仅要掌握Linux, Java, Hadoop, R的技术,还要具备 软件开发,算法,概率统计,线性代数,数据可视化,行业背景 的一些基本素质。在公司部署这套环境,同样需要多个部门,多种人才的的配合。Hadoop运维,Hadoop算法研发,R语言建模,R语言MapReduce化,软件开发,测试等等。所以,这样的案例并不太多。

以下为关联文档:

信息、数据和数据处理数据库技术是现代社会的重要基础技术之一,是计算机科学领域中发展最为迅速的重要分支。随着计算机应用的普及和深入,数据库技术越来越重要。了解、掌握数据库系统的基本概念和...

如何利用Excel制作数据库库存表这个要看你怎么要求,如果每次是手动的,那比较简单: 你可以在EXCEL里把入库的表格先制定好,比如,序号,名称,编号,数量,入库日期,出库日期等等 这样入库的时候你可以手动填加,出库的时候...

如何利用excel学数据挖掘一、Excel中的函数每人不断地存储在电脑中的数据,不能直接分析,需要进行“统计和分析处理”。数据挖掘之前,需要求出数据的平均值、总和、最大值、最小值。开始挖掘之后,为厂得...

如何做好数据的处理和归纳关键词:数据监管、数据统计、数据指导、数据时效性、数据螺旋式 印证、数据共享 在质量管理体系中, 数据处理作为所有质量目标达成的横向尺码, 是生产状况评价的风向标, 通过的...

如何利用excel的数据制作折线图表选择数据区域,在“插入”选项下的“图表”中,选择折线图。 在已经生成的折线图上,单击鼠标右键,“选择数据”,在“选择数据源”中,单击“切换行列”,即可。 详见附图...

如何利用大数据推进教学变革改革教育教学方式和方法一、现代教育理论和思想的学习是课堂教学改革的灵魂 在教学活动中,教师是教育者、影响者、变革者和促进学生发展的实践者,是教的活动的主体,同时,教师的教又要以学生为出发点,教...

如何利用大数据如何利用大数据,大数据在生活中如何应用:电商等企业需要大数据服务和支持,帮助企业做出有参考的决定。 大数据将来会应用到每个人的衣食住行方面,越来越能呈现一个人的过往历史,...

如何利用大数据做出正确的判断如何利用大数据做出正确的判断,如何用大数据做好企业运营:大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强...

小规模免税企业的财务处理小规模免税企业的财务处理,小型微利企业减免所得税应该如何做分录:根据财政部、国家税务总局(94)财税字第74号《关于减免及返还的流转税并入企业利润征收所得税的通知》,现对企业...

推荐阅读
图文推荐