Spark MLlib系列(一):入门介绍

前言

最新的情况是国内BAT已经都上了spark,而且spark在hadoop上的应用,大有为大象插上翅膀的效果。个人估计在未来两到三年,spark大有代替hadoop的mapreduce的趋势。应该说spark的在使用上面的经济成本,性能优势,一站式解决能力,一定会使其大放异彩。
因为个人对spark很感兴趣,加上项目中需要使用它解决一些机器学习的问题,在网上搜集资料时发现,spark machine learning这块的资料确实太缺少了,所以决定写一spark machine learning的一系列博客(只涉及机器学习部分)。
目前考虑是,这个系列,先讲一些入门的知识,然后是一些真正的实战应用,可能涉及到推荐,聚类,分类等问题,理论涉及不会太多,分享一些接地气的干货,让大家能够真正感受到spark machine learning的魅力。

为什么使用MLlib
    
     MLlib 构建在apache spark之上,一个专门针对大量数据处理的通用的、快速的引擎
  • Speed.Spark has an advanced DAG execution engine that supports cyclic data flow and in-memory computing. Run programs up to 100x faster than Hadoop MapReduce in memory, or 10x faster on disk.
  • Ease of Use .Write applications quickly in Java, Scala or Python.
  • Generality.Combine SQL, streaming, and complex analytics.
  • Runs Everywhere.Spark runs on Hadoop, Mesos, standalone, or in the cloud. It can access diverse data sources including HDFS, Cassandra, HBase, S3.

Logistic regression in Hadoop and Spark

概述

MLlib 是spark的可以扩展的机器学习库,由以下部分组成:通用的学习算法和工具类,包括分类,回归,聚类,协同过滤,降维,当然也包括调优的部分


MLlib当前在非常活跃的开发情况下,所以那些被标记成 Experimental/DeveloperApi 在未来的发布种可能会被修改

依赖

MLlib使用了线性代数包 Breeze, 它依赖于netlib-javajblasnetlib-java 和 jblas 需要依赖native Fortran routines。所以你需要安装gfortran runtime library (安装方法在这个链接中),如果你的集群的节点中没有安装native Fortran routines。MLlib 会抛出一个link error,如果没有安装native Fortran routines。

如果你需要使用spark的python开发,你需要 NumPy version 1.4或以上版本.

当前最近版本1.2

个人认为当前1.2版本的最大的改进应该是发布了称为spark.ml的机器学习工具包,支持了pipeline的学习模式,即多个算法可以用不同参数以流水线的形式运行。在工业界的机器学习应用部署过程中,pipeline的工作模式是很常见的。新的ML工具包使用Spark的SchemaRDD来表示机器学习的数据集合,提供了Spark SQL直接访问的接口。此外,在机器学习的算法方面,增加了两个基于树的方法,随机森林和梯度增强树。还有貌似性能上有优化,看过一篇DataBricks的ppt,据说1.2版本的算法在性能上比1.1版本平均快了3倍


参考资料
 Machine Learning Library (MLlib) Programming Guide http://spark.apache.org/docs/latest/mllib-guide.html

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
现在需要求得一个数组的所有元素之和,之前感觉似乎不太可能,因为每个线程只处理一个元素,无法将所有元素联系起来,但是最近学习了一段代码可以实现,同时也对shared memory有了进一步的理解。 一、C++串行实现 串行实现的方法非常之简单,只要将所有元素依次相加就能够得到相应的结果,实际上我们注重的不是结果,而是运行的效率。那么代码如下: array_sum.cc: #includeiostream#includestdio.h#include "kmeans.h"using namespace std
学习DIP第37天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意。 有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!! 文章代码已托管,欢迎共同开发: https://github.com/Tony-Tan/DIPpro 开篇

pig 使用tez引擎 OutOfMemoryError - 2015-03-14 10:03:02

tez版本:0.5.3 pig版本:0.14.0  解决办法: 将 tez.task.scale.memory.reserve-fraction 设置的大点。如下: set tez.task.scale.memory.reserve-fraction 0.7d ; 报错详情见下: cause TezChild exit.:java.lang.OutOfMemoryError: Java heap space         at org.apache.tez.runtime.library.common.
软件: hadoop1.1.2、pietty( 在windows系统下登录到linux虚拟机的远程登录软件 )、winscp( 在本地与远程计算机间安全的复制文件 )、jdk-6u24-linux-i586.bin、virtualbox上安装的centos 系统(安装过程这里不说了) 安装步骤: 注:避免安装过程出现文件操作权限导致的问题,以下操作在root用户下进行。 1.安装ssh免密码登录 hadoop 运行过程需要远端管理hadoop 守护进程,linux 虚拟机没有ssh server,安装命令
学习DIP第29天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意。 有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!! 文章代码已托管,欢迎共同开发: https://github.com/Tony-Tan/DIPpro 开篇
在这篇blog中,我们将介绍Hbase的单机模式安装与伪分布式的安装方式,以及通过浏览器查看Hbase的用户界面。搭建hbase伪分布式环境的前提是我们已经搭建好了hadoop完全分布式环境,搭建hadoop环境请参考: 【Hadoop基础教程】4、Hadoop之完全分布式环境搭建 开发环境 硬件环境:Centos 6.5 服务器4台(一台为Master节点,三台为Slave节点) 软件环境:Java 1.7.0_45、Eclipse Juno Service Release 2、hadoop-1.2.1
学习DIP第43天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意。 有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!! 文章代码已托管,欢迎共同开发: https://github.com/Tony-Tan/DIPpro 开篇
devstack 安装openstack出现rabbitmq-server安装错误,因为修改过hostsname后,重新安装才导致这个错误,下面是解决办法. 问题: Starting rabbitmq-server: FAILED - check /var/log/rabbitmq/startup_log, _err   rabbitmq-server.   invoke-rc.d: initscript rabbitmq-server, action "start" failed.   dpkg: er
背景: hdfs文件系统有很多小文件,这些小文件会定期合并到大文件中,合并完成之后要删除这些小文件。但是有可能当前其他人正在读取这些小文件,此时如果将这些小文件删除,会导致当前用户无法正确获取到文件。 这一点hdfs做的有点恶心:最初我的理解是如果有线程A正在读取这个小文件,其他线程B删除这个小文件时应该会失败(至少应该要抛出异常)。但是测试发现不是这样的。实际的结果是:线程B默默的将小文件直接删除了,导致线程A只下载了这个文件的一部分,然后就卡在这里不动了。   针对这个问题的一个解决方案是:小文件被合
提供数字内容服务最基本也是最简单任务那就是在低于预算的前提下,实现低延迟,高可用性,耐用性,访问控制,以及数百万的并发浏览。此外,因为“尖峰”模式的,运营团队经常需要提供静态的硬件,网络,和管理资源,以支持预期的最大需要,但是在高峰时段以外则常常造成浪费。   AWS提供了一整套服务,专门为媒体服务提供了高性能。每个服务功能,都是在弹性的基础设施上按需付费,这意味着可以根据需求曲线放大和缩小服务规模,同时支付只有资源的使用。因为这个基础设施可编程的,它可以迅速作出反应。AWS API提供了基础设施对详细地