分析挖掘(大資料):hive、impala、 Spark MLlib概述、原理
hive
Hive是一個構建於Hadoop頂層的資料倉庫工具,支援大規模資料儲存、分析,具有良好的可擴充套件性。某種程度上可以看作是使用者程式設計介面,本身不儲存和處理資料。依賴分散式檔案系統HDFS儲存資料,依賴分散式平行計算模型MapReduce處理資料。
定義了簡單的類似SQL 的查詢語言——HiveQL,使用者可以通過編寫的HiveQL語句執行MapReduce任務,可以很容易把原來構建在關係資料庫上的資料倉庫應用程式移植到Hadoop平臺上。(是一個可以提供有效、合理、直觀組織和使用資料的分析工具)
(1)Hive與傳統資料庫的區別
對比專案 | Hive | 傳統資料庫 |
資料插入 | 支援批量匯入 | 支援單條 和批量匯入 |
資料更新 | 不支援 | 支援 |
索引 | 支援 | 支援 |
分割槽 | 支援 | 支援 |
執行延遲 | 高 | 低 |
擴充套件性 | 好 | 有限 |
(2)Hive系統架構
使用者介面模組、驅動模組、元資料儲存模組。
使用者介面模組包括CLI、HWI、JDBC、ODBC、Thrift Server。
驅動模組(Driver)包括編譯器、優化器、執行器等,負責把HiveSQL語句轉換成一系列MapReduce作業。
元資料儲存模組(Metastore)是一個獨立的關係型資料庫(自帶derby資料庫,或MySQL資料庫)。是由Cloudera公司開發的新型查詢系統,它提供SQL語義,能查詢儲存在Hadoop的HDFS和HBase上的PB級大資料,在效能上比Hive高出3~30倍。
(自帶derby資料庫,或Impala
Impala是Cloudera公司主導開發的新型查詢系統,它提供SQL語義,能查詢儲存在Hadoop的HDFS和HBase中的PB級大資料,已有的Hive系統雖然也提供了SQL語義,但由於Hive底層執行使用的是MapReduce引擎,仍然是一個批處理過程,難以滿足查詢的互動性。相比之下,Impala的最大特點也是最大賣點就是它的快速。
Impala與hive對比:
相同點:(1)Hive與Impala使用相同的儲存資料池,都支援把資料儲存於HDFS和HBase中。
(2)Hive與Impala使用相同的元資料。
(3)Hive與Impala中對SQL的解釋處理比較相似,都是通過詞法分析生成執行計劃。
不同點:
(1)Hive適合於長時間的批處理查詢分析,而Impala適合於實時互動式SQL查詢。
(2)Hive依賴於MapReduce計算框架,Impala把執行計劃表現為一棵完整的執行計劃樹,直接分發執行計劃到各個Impalad執行查詢。
(3)Hive在執行過程中,如果記憶體放不下所有資料,則會使用外存,以保證查詢能順序執行完成,而Impala在遇到記憶體放不下資料時,不會利用外存,所以Impala目前處理查詢時會受到一定的限制。
總結:
(1)Impala的目的不在於替換現有的MapReduce工具
(2)把Hive與Impala配合使用效果最佳
(3)可以先使用Hive進行資料轉換處理,之後再使用Impala在Hive處理後的結果資料集上進行快速的資料分
Spark Mlib
park Mlib是基於Spark的可擴充套件的機器學習庫,由以下部分組成:通用學習演算法和工具類,包括分類、迴歸、劇烈、協同過濾等。