- SQL機器學習庫MADlib技術解析
- 王雪迎
- 1224字
- 2020-06-29 18:08:04
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