SQL机器学习库MADlib技术解析
上QQ阅读APP看书,第一时间看更新

1.3 MADlib的安装与卸载

1.3.1 确定安装平台

MADlib 1.14可以安装在PostgreSQL、Greenplum和HAWQ中。在不同的数据库系统,安装过程不尽相同。这里以在HAWQ 2.1.1.0中安装MADlib为例,演示MADlib的安装与卸载过程。后面章节进行的一系列示例也都在此实验环境中进行的。HAWQ的安装部署过程从略。

机器学习需要数据库系统提供有效的存储、索引和查询处理支持。源于高性能并行计算的技术在处理海量数据集方面常常是重要的。分布式技术也能帮助处理海量数据,并且当数据不能集中到一起处理时更是至关重要。

比照以上机器学习对数据库系统提出的要求,我们不妨简单考量一下HAWQ。先提出一点,HAWQ目前不支持索引。对于存储在Hadoop集群上的“大数据”分析应用而言,实际执行的操作几乎都是表扫描,很少需要定位几行数据,因此传统的由用户定义的索引用在此场景下的作用非常有限。HAWQ使用的随机分布存储策略具有较好的数据本地化特性,优化器在制定查询计划时,内部实现已然利用了索引的思想。HAWQ使用专为HDFS量身打造的基于成本的查询优化框架来增强其性能,所采用的MPP架构使用户能够获益于优异的查询性能,同时有效利用HDFS的分布式存储、容错机制、机架感知等功能,兼顾了低延时与高扩展。由此看来,在HAWQ上运行MADlib是实现大数据机器学习比较合理的选择。

1.3.2 下载MADlib二进制压缩包

下载地址为https://network.pivotal.io/products/pivotal-hdb。2.1.1.0版本的HAWQ提供了四个MADlib安装文件,如图1-6所示。经过测试,本环境只有MADlib 1.10.0版本的文件可以正常安装。

图1-6 下载MADlib安装文件

1.3.3 安装MADlib

以下命令需要使用gpadmin用户、在HAWQ的Master主机上执行。

(1)解压缩

tar -zxvfmadlib-ossv1.10.0_pv1.9.7_hawq2.1-rhel5-x86_64.tar.gz

(2)安装MADlib的gppkg文件

gppkg -imadlib-ossv1.10.0_pv1.9.7_hawq2.1-rhel5-x86_64.gppkg

该命令在HAWQ集群的所有节点(Master和Segment)上创建MADlib的安装目录和文件,默认目录为/usr/local/hawq_2_1_1_0/madlib。gppkg是Greenplum的包管理器应用程序,用于在集群所有节点上安装Greenplum数据库扩展包及其依赖。

(3)在指定数据库中部署MADlib

$GPHOME/madlib/bin/madpack install -c /dm -s madlib -p hawq

该命令在HAWQ的dm数据库中建立madlib schema,-p参数指定平台为HAWQ。命令执行后可以查看在madlib schema中创建的数据库对象。

从查询结果可以看到,MADlib部署应用程序madpack首先创建数据库模式madlib,然后在该模式中创建数据库对象,包括一个表、一个序列、1324个普通函数、135个聚合函数。所有机器学习的模型、算法、操作和功能都是通过调用这些函数实际执行的。

(4)验证安装

$GPHOME/madlib/bin/madpack install-check -c /dm -s madlib -p hawq

该命令通过执行29个模块的77个案例验证所有模块都能正常工作。命令输出如下,如果看到所有案例都已经正常执行,就说明MADlib安装成功。这条命令需要执行较长时间。

[gpadmin@hdp3 Madlib]$ $GPHOME/madlib/bin/madpack install-check -c /dm -s
madlib -p hawq
madpack.py : INFO : Detected HAWQ version 2.1.
TEST CASE RESULT|Module: array_ops|array_ops.sql_in|PASS|Time: 1851
milliseconds
TEST CASE RESULT|Module: bayes|gaussian_naive_bayes.sql_in|PASS|Time: 24222
milliseconds
TEST CASE RESULT|Module: bayes|bayes.sql_in|PASS|Time: 70634 milliseconds

…

TEST CASE RESULT|Module: pca|pca.sql_in|PASS|Time: 523230 milliseconds
TEST CASE RESULT|Module: validation|cross_validation.sql_in|PASS|Time: 33685
milliseconds
[gpadmin@hdp3 Madlib]$

1.3.4 卸载MADlib

卸载过程基本上是安装的逆过程。

(1)删除madlib模式

方法1,使用madpack部署应用程序删除模式。

$GPHOME/madlib/bin/madpack uninstall -c /dm-s madlib -p hawq

方法2,使用SQL命令手工删除模式。

drop schema madlib cascade;

(2)删除其他遗留数据库对象

① 删除模式。如果模型验证过程中途出错,那么数据库中可能包含测试的模式(模式名称前缀都是madlib_installcheck_),只能手工执行SQL命令删除,例如:

drop schema madlib_installcheck_kmeanscascade;

② 删除用户。如果存在遗留的测试用户,就将其删除,例如:

drop user if existsmadlib_1100_installcheck;

(3)删除MADlib rpm包

查询包名:

gppkg -q --all

输出如下:

[gpadmin@hdp3 Madlib]$ gppkg -q --all
20170630:16:19:53:076493 gppkg:hdp3:gpadmin-[INFO]:-Starting gppkg with args:
-q --all
madlib-ossv1.10.0_pv1.9.7_hawq2.1

删除rpm包:

gppkg -rmadlib-ossv1.10.0_pv1.9.7_hawq2.1