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 ...
随机推荐
- VC6.0下string不能用pusk_back,可用+=代替
2013-09-11 21:14:32 在VS下运行正确的代码,拿到VC6.0下,编译出错,提示: error C2039: 'push_back' : is not a member of 'bas ...
- fil_space_t
typedef struct fil_space_struct fil_space_t; /** Tablespace or log data space: let us call them by a ...
- BZOJ2693: jzptab
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2693 题意:同2154 多组数据 题解:按2154再往后转化一下就可以把n,m放到一边儿,然后 ...
- OK335xS PMIC(TPS65910A3A1RSL) reset
/*********************************************************************** * OK335xS PMIC(TPS65910A3A1 ...
- I.MX6 android 设置 默认 动态桌面
/************************************************************************ * I.MX6 android 设置 默认 动态桌面 ...
- Data Binding(数据绑定)用户指南
1)介绍 这篇文章介绍了如何使用Data Binding库来写声明的layouts文件,并且用最少的代码来绑定你的app逻辑和layouts文件. Data Binding库不仅灵活而且广泛兼容- 它 ...
- CSS的伪元素(二)
随便聊聊CSS的伪元素,虽然它们在项目开发中用的并不多,但确实很有用,在项目中不用它,是因为大家不能了解它们,下面是一个工作场景,如有四个按钮,分别是建立,编辑,删除和修改,而我们要求这在前台显示的汉 ...
- delphi 当月的第一天, 当月的最后一天
//取当月的第一天function TDealWithXML.FDOM(Date: TDateTime): TDateTime;var Year, Month, Day: Word;begin Dec ...
- 【转】让apache支持中文路径或者中文文件
本帖最后由 狂人阿川 于 2013-4-12 19:13 编辑 今天在给一美国VPS客户调试他的程序的时候.发现他的网站有中文名称.貌似apache无法认识中文路径,火狐下面能下载他的文件,IE下面不 ...
- mybatis返回HashMap结果类型与映射
<!-- 返回HashMap结果 类型--> <!-- 如果想返回JavaBean,只需将resultType设置为JavaBean的别名或全限定名 --> <!-- T ...