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數據庫,或MySQL數據庫)。是由Cloudera公司開發的新型查詢系統,它提供SQL語義,能查詢存儲在Hadoop的HDFS和HBase上的PB級大數據,在性能上比Hive高出3~30倍。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的可擴展的機器學習庫,由以下部分組成:通用學習算法和工具類,包括分類、迴歸、劇烈、協同過濾等。