Apache Spark MLlib的简介
MLlib 是构建在 Spark 上的分布式机器学习库,充分利用了 Spark 的内存计算和适合迭代型计算的优势,将性能大幅度提升。同时由于 Spark 算子丰富的表现力, 让大规模机器学习的算法开发不再复杂。
MLlib 是 一 些 常 用 的 机 器 学 习 算 法 和 库 在Spark 平台上的实现。MLlib 是 AMPLab 的在研机器学习项目 MLBase 的底层组件。
MLBase 是一个机器学习平台,详细见 http://www.cnblogs.com/zlslch/p/5726445.html
MLI 是一个接口层,提供很多结构, MLlib 是底层算法实现层,如图1 所示。

图 1 MLbase
MLlib 中包含分类与回归、聚类、协同过滤、数据降维组件以及底层的优化库,如图 2所示。

图 2 MLlib 组件图
通过图 2,我们可以对 MLlib 的整体组件和依赖库有一个宏观的把握。
底层组件简要介绍:
BLAS/LAPACK 层: LAPACK 是 用 Fortran 编 写 的 算 法 库, 顾 名 思 义, LinearAlgebra PACKage,是为了解决通用的线性代数问题的。另外必须要提的算法包是BLAS(Basic Linear Algebra Subprograms),其实 LAPACK 底层是使用了 BLAS 库的。不少计算机厂商都提供了针对不同处理器进行了优化的 BLAS/LAPACK 算法包。
Netlib-java(官 网 为: https://github.com/fommil/netlib-java/) 是 一 个 对 底 层 BLAS,LAPACK 封装的 Java 接口层。
Breeze(官网为: https://github.com/scalanlp/breeze)是一个 Scala 写的数值处理库,提供向量、矩阵运算等 API。
库依赖: MLlib 底层使用到了 Scala 书写的线性代数库 Breeze, Breeze 底层依赖netlib-java 库。 netlib-java 底层依赖原生的 Fortran routines。所以,当用户使用时需要
在 节 点 上 预 先 安 装 gfortran runtime library(下 载 地 址: https://github.com/mikiobraun/jblas/wiki/Missing-Libraries)。由于许可证(license)问题,官方的 MLlib 依赖集中没有
引入 netlib-java 原生库的依赖。如果运行时环境没有可用原生库,用户将会看到警告信息。如果程序中需要使用 netlib-java 的库,用户需要在项目中引入 com.github.fommil.netlib:all:1.1.2 的依赖或者参照指南(网址为: https://github.com/fommil/netlib-java/blob/master/README.md#machine-optimised-system-libraries)来建立用户自己的项目。如果用户需要使用 python 接口,则需要 1.4 或者更高版本的 NumPy(注意: MLlib 源码中注释有 Experimental/DeveloperApi 的 API 在未来的发布版本中可能会进行调整和改变,官方会在不同版本发布时提供迁移指南)。
Apache Spark MLlib的简介的更多相关文章
- 3 分钟学会调用 Apache Spark MLlib KMeans
Apache Spark MLlib是Apache Spark体系中重要的一块拼图:提供了机器学习的模块.只是,眼下对此网上介绍的文章不是非常多.拿KMeans来说,网上有些文章提供了一些演示样例程序 ...
- Apache Spark Shark的简介
Shark是构建在Spark和Hive基础之上的数据仓库. 目前,Shark已经完成学术使命,终止开发,但其架构和原理仍具有借鉴意义. 它提供了能够查询Hive中所存储数据的一套SQL接口,兼容现有的 ...
- Apache Spark Streaming的简介
Spark Streaming通过将流数据按指定时间片累积为RDD,然后将每个RDD进行批处理,进而实现大规模的流数据处理.其吞吐量能够超越现有主流流处理框架Storm,并提供丰富的API用于流数据计 ...
- Apache Spark GraphX的简介
简单地说,GraphX是大规模图计算框架. GraphX 是 Spark 中的一个重要子项目,它利用 Spark 作为计算引擎,实现了大规模图计算的功能,并提供了类似 Pregel 的编程接口. Gr ...
- Apache Spark Tachyon的简介
Tachyon是一个分布式内存文件系统,可以理解为内存中的HDFS. 为了提供更高的性能,将数据存储剥离Java Heap. 用户可以基于Tachyon实现RDD或者文件的跨应用共享,并提供高容错机制 ...
- Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学 ...
- Apache Spark源码走读之22 -- 浅谈mllib中线性回归的算法实现
欢迎转载,转载请注明出处,徽沪一郎. 概要 本文简要描述线性回归算法在Spark MLLib中的具体实现,涉及线性回归算法本身及线性回归并行处理的理论基础,然后对代码实现部分进行走读. 线性回归模型 ...
- 使用 Spark MLlib 做 K-means 聚类分析[转]
原文地址:https://www.ibm.com/developerworks/cn/opensource/os-cn-spark-practice4/ 引言 提起机器学习 (Machine Lear ...
- Spark MLlib FPGrowth关联规则算法
一.简介 FPGrowth算法是关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-tree),但仍保留项集关联信息.在算法中使用了一种称为频繁模式树(Frequent ...
随机推荐
- Python中的 isdigit()方法
Python isdigit()方法 sdigit()方法就是检测字符串是否只有数字组成, 如果字符串中是只有数字组成,则返回true, 如果字符串中有其他字符,则返回false. 语法格式是: s ...
- BZOJ 3143 游走(高斯消元)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3143 题意:一个无向连通图,顶点从1编号到n,边从1编号到m.小Z在该图上进行随机游走, ...
- java开发之关键字
abstract //抽象方法,抽象类的修饰符assert //断言条件是否满足boolean //布尔数据类型break //跳出循环或者label代码段byte //8-bit 有符号数据类型ca ...
- 【Todo】【转载】ES6的学习记录
粗略看了一遍React的内容,然后看了 ES6 的入门文章: http://es6.ruanyifeng.com/#docs/intro 通过这个链接可以查看浏览器对 ES6 的支持程度: http: ...
- 【转载】git命令和svn的对比
首先,要明确的是,git和svn是完全不同的两种管理方式.他们的命令不是完全对等的. 下面只是一些相似方法的参考,而已. 参考 http://blog.csdn.net/chen198746/arti ...
- bzoj3955
首先,最短路不同的两辆车一定不会发生堵塞 对于最短路相同的点,我们把属于最短路径上的边拎出来建图跑最大流即可 然后我TLE了…… 因为很明显建出来图很大,而真正流的流量很小 普通的初始标号都是0的sa ...
- Ionic开发中常见问题和解决方案记录
1npm按装包失败 更换源:npm config set registry https://registry.npm.taobao.org 或者使用cnpm sudo npm install -g c ...
- MVC的项目使用html编辑器UEditorMINI
一个MVC的项目中有个发布新闻的页面需要用到一个html的编辑器,网上看到UEditor评价貌似还不错, 因为我用到的功能比较简单,就下载了MINI版本的, 使用的过程在这里总结一下. 关于UEdit ...
- Apache Struts2 s2-020补丁安全绕过漏洞
CNVD-ID CNVD-2014-01552 发布时间 2014-03-11 危害级别 高 影响产品 Apache struts 2.0.0-2.3.16 BUGTRAQ ID 65999 CVE ...
- poj 1201 Intervals(差分约束)
做的第一道差分约束的题目,思考了一天,终于把差分约束弄懂了O(∩_∩)O哈哈~ 题意(略坑):三元组{ai,bi,ci},表示区间[ai,bi]上至少要有ci个数字相同,其实就是说,在区间[0,500 ...