Hadoop生态hive(一)介绍
一、Hive是什么
? ? ? 起源自facebook由Jeff Hammerbacher領導的團隊,構建在Hadoop上的數據倉庫框架。設計目的是讓SQL技能良好,但Java技能較弱的分析師可以查詢海量數據。2008年facebook把hive項目貢獻給Apache。
? ? ? ?由facebook開源,最初用于解決海量結構化的日志數據統計問題。ETL(Extraction-Transformation-Loading)數據抽取、加載、處理工具,構建在Hadoop之上的數據倉庫。數據計算使用MR,數據存儲使用HDFS。Hive 定義了一種類 SQL 查詢語言——HQL,類似SQL,但不完全相同。通常用于進行離線數據處理(采用MapReduce),可認為是一個HQL?MR的語言翻譯器。
? ? ? ?作為數據倉庫工具,可以把Hadoop下的原始結構化數據變成Hive中的表 ,支持一種與SQL幾乎完全相同的語言HiveQL。除了不支持更新、索引和事務,幾乎SQL的其它特征都能支持。可以看成是從SQL到Map-Reduce的映射器 。提供shell、JDBC/ODBC、Thrift、Web等接口。?
?
二、為什么使用Hive
簡單,容易上手,提供了類SQL查詢語言HQL。為超大數據集設計的計算/擴展能力 ,MR作為計算引擎,HDFS作為存儲系統 。統一的元數據管理(HCalalog) ,可與Pig、Presto等共享 。
(1)Hive優點與長處
95%的Facebook任務由Hive寫成,開發周期通常十分鐘
Hive的所有執行,最終是轉換為MapReduce
Hive的長處,在于數據統計如:pv,uv,ip的計算
group by,join
………………
精力放在數據邏輯上,優化數據結構和性能,而不再關注前人已經發明的輪子,不同同事之間的成果,可以方便的服用
(2)Hive缺點
Hive的HQL表達的能力有限:迭代式算法無法表達;有些復雜運算用HQL不易表達
Hive效率較低:Hive自動生成MapReduce作業,通常不夠智能;HQL調優困難,粒度較粗;可控性差
?
三、Hive架構
(1)Hive的基本架構
1)用戶接口
包括 CLI,JDBC/ODBC,WebUI
2)元數據存儲(metastore)
默認存儲在自帶的數據庫derby中,線上使用時一般換為MySQL
3)驅動器(Driver)
解釋器、編譯器、優化器、執行器
4)Hadoop
用 MapReduce 進行計算,用 HDFS 進行存儲
(2)Hive的數據存儲
1)Hive沒有專門的數據存儲格式,也沒有為數據建立索引,用戶可以非常自由的組織 Hive 中的表。
2)Hive 中所有的數據都存儲在 HDFS 中,Hive 中包含以下數據模型:Table,External Table,Partition,Bucket。
3)Hive 中的 Table 和數據庫中的 Table 在概念上是類似的,每一個 Table 在 Hive 中都有一個相應的目錄存儲數據。
例如表 tbl_pv放在目錄 /wh/tbl_pv中,這里wh為hive-site.xml中${hive.metastore.warehouse.dir} 指定的數據倉庫目錄。
4)Hive 表中的一個 Partition 對應于表下的一個目錄,所有的 Partition 的數據都存儲在對應的目錄中。
例如:tbl_pv 表中包含 ds 和 city 兩個 Partition,則對應于 ds = 20090801, ctry = US 的 HDFS 子目錄為:/wh/tbl_pv/ds=20090801/ctry=US;對應于 ds = 20090801, ctry = CA 的 HDFS 子目錄為/wh/pvs/ds=20090801/ctry=CA
5)Buckets 對指定列計算 hash,根據 hash 值切分數據,每一個 Bucket 對應一個文件。可用于采樣:
CREATE TABLE sales( id INT, name STRING)PARITIONED BY (ds STRING)CLUSTERED BY (id) INTO 32 BUCKETS; SELECT id FROM sales TABLESAMPLE (BUCKET 1 OUT OF 32);6)External Table 指向已經在 HDFS 中存在的數據,可以創建 Partition
?
?
?
總結
以上是生活随笔為你收集整理的Hadoop生态hive(一)介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京朝阳大悦城在哪里
- 下一篇: 带有苍字的成语有哪些