标签:
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 在未来的发布版本中可能会进行调整和改变,官方会在不同版本发布时提供迁移指南)。
标签:
原文地址:http://www.cnblogs.com/zlslch/p/5726346.html