1. 程式人生 > >大資料數倉之Hive入門《一》

大資料數倉之Hive入門《一》

一 、Hive 基本概念
1.1 什麼是 Hive
Hive:由 Facebook 開源用於解決海量結構化日誌的資料統計。它是基於 Hadoop 的一個數據倉庫工具,可以將結構化的資料檔案對映為一張表,並提供類 SQL 查詢功能。

本質就是:將HQL 轉化成 MapReduce 程式
1)Hive 處理的資料儲存在 HDFS
2)Hive 分析資料底層的實現是 MapReduce
3)執行程式執行在 Yarn 上

1.2 Hive 的優缺點
1.2.1 優點
1)操作介面採用類 SQL 語法,提供快速開發的能力(簡單、容易上手)
2)避免了去寫 MapReduce,減少開發人員的學習成本。
3)Hive 的執行延遲比較高,因此Hive 常用於資料分析,對實時性要求不高的場合;
4)Hive 優勢在於處理大資料,對於處理小資料沒有優勢,因為Hive 的執行延遲比較高。
5)Hive 支援使用者自定義函式,使用者可以根據自己的需求來實現自己的函式。

1.2.2缺點
1)Hive 的 HQL 表達能力有限
(1)迭代式演算法無法表達
(2)資料探勘方面不擅長

2)Hive 的效率比較低
(1)Hive 自動生成的 MapReduce 作業,通常情況下不夠智慧化
(2)Hive 調優比較困難,粒度較粗

接下來我將通過對比資料庫,來讓大家對Hive有更深刻的認識。

二 、Hive 和資料庫的對比
2.1 由於 Hive 採用了類似 SQL 的查詢語言 HQL(Hive Query Language),因此很容易將 Hive 理解為資料庫。其實從結構上來看,Hive 和資料庫除了擁有類似的查詢語言,再無類似之處。
2.2 資料儲存位置
Hive 是建立在 Hadoop 之上的,所有 Hive 的資料都是儲存在 HDFS 中的。而資料庫則可以將資料儲存在塊裝置或者本地檔案系統中。
2.3 資料更新
由於 Hive 是針對資料倉庫應用設計的,而資料倉庫的內容是讀多寫少的。因此,Hive 中不支援對資料的改寫和新增,所有的資料都是在載入的時候確定好的。而資料庫中的資料通常是需要經常進行修改的,因此可以使用 INSERT INTO … VALUES 新增資料,使用 UPDATE … SET 修改資料。
2.4 索引
Hive 在載入資料的過程中不會對資料進行任何處理,甚至不會對資料進行掃描,因此也沒有對資料中的某些 Key 建立索引。Hive 要訪問資料中滿足條件的特定值時,需要暴力掃描整個資料,因此訪問延遲較高。由於 MapReduce 的引入, Hive 可以並行訪問資料,因此即使沒有索引,對於大資料量的訪問,Hive 仍然可以體現出優勢。資料庫中,通常會針對一個或者幾個列建立索引,因此對於少量的特定條件的資料的訪問,資料庫可以有很高的效率,較低的延遲。由於資料的訪問延遲較高,決定了 Hive 不適合線上資料查詢。
2.5 執行
Hive 中大多數查詢的執行是通過 Hadoop 提供的 MapReduce 來實現的。而資料庫通常有自己的執行引擎。
2.6 執行延遲
Hive 在查詢資料的時候,由於沒有索引,需要掃描整個表,因此延遲較高。另外一個導致 Hive 執行延遲高的因素是 MapReduce 框架。由於 MapReduce 本身具有較高的延遲, 因此在利用 MapReduce 執行 Hive 查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即資料規模較小,當資料規模大到超過資料庫的處理能力的時候,Hive 的平行計算顯然能體現出優勢。
2.7 可擴充套件性
由於 Hive 是建立在 Hadoop 之上的,因此 Hive 的可擴充套件性是和 Hadoop 的可擴充套件性是一致的(世界上最大的Hadoop 叢集在Yahoo!,2009 年的規模在 4000 臺節點左右)。而資料庫由於ACID 語義的嚴格限制,擴充套件行非常有限。目前最先進的並行資料庫 Oracle 在理論上的擴充套件能力也只有 100 臺左右。
2.8 資料規模
由於 Hive 建立在叢集上並可以利用 MapReduce 進行平行計算,因此可以支援很大規模的資料;對應的,資料庫可以支援的資料規模較小。

好了,認識了什麼是hive,咱們就開始安裝:

三、Hive的安裝
3.1 首先去官網下載 hive安裝包
官網地址:http://hive.apache.org/
3.2 找到已經下載的安裝包,並解壓到指定目錄
tar -xvf apache-hive-1.2.1-bin.tar.gz -C 指定路徑
3.3 如果覺得名字太長看著不舒服,可以先修改一下名字
mv apache-hive-1.2.1-bin.tar.gz hive
3.4 進入hive下面的conf目錄並修改hive-env.sh.template 名稱為 hive-env.sh
mv hive-env.sh.template

hive-env.sh
3.5 配置hive-env.sh檔案
(a)配置 HADOOP_HOME 路徑
export HADOOP_HOME=/opt/module/hadoop-2.7.2
(b) 配置HIVE_CONF_DIR 路徑
export HIVE_CONF_DIR=/opt/module/hive/conf
3.6 啟動Hadoop叢集,並在HDFS上建立 /user/hive/warehouse/目錄
這是hive預設目錄,除此之外,還會自動生成一個/tmp目錄,當然,這個前提是你的hive安裝正確並啟動後才能發現。
3.7 建立目錄後千萬不要了給它賦許可權(注意!!!)
hdfs dfs -chmod g+w /user/hive/warehouse

先介紹這麼多吧,如果發現了哪裡有錯,歡迎在評論區指出!