大數據之路week07--day05 (一個基於Hadoop的數據倉庫建模工具之一 HIve)


什么是Hive? 我來一個短而精悍的總結(面試常問

1:hive是基於hadoop的數據倉庫建模工具之一(后面還有TEZ,Spark)。

2:hive可以使用類sql方言,對存儲在hdfs上的數據進行分析和管理。

 

Hive 是建立在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL ),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL ,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的復雜的分析工作。

Hive是SQL解析引擎,它將SQL語句轉譯成M/R Job然后在Hadoop執行。

Hive的表其實就是HDFS的目錄,按表名把文件夾分開。如果是分區表,則分區值是子文件夾,可以直接在M/R Job里使用這些數據。

Hive相當於hadoop的客戶端工具,部署時不一定放在集群管理節點中,可以放在某個節點上。

 

Hive與傳統數據庫比較

 

 

 

Hive與傳統數據庫比較

1. 查詢語言。類 SQL 的查詢語言 HQL。熟悉 SQL 開發的開發者可以很方便的使用 Hive 進行開發。

2. 數據存儲位置。所有 Hive 的數據都是存儲在 HDFS 中的。而數據庫則可以將數據保存在塊設備或者本地文件系統中。

3. 數據格式。Hive 中沒有定義專門的數據格式。而在數據庫中,所有數據都會按照一定的組織存儲,因此,數據庫加載數據的過程會比較耗時。

4. 數據更新。Hive 對數據的改寫和添加比較弱化,0.1.4版本之后支持,需要啟動配置項。而數據庫中的數據通常是需要經常進行修改的。

5. 索引。Hive 在加載數據的過程中不會對數據進行任何處理。因此訪問延遲較高。數據庫可以有很高的效率,較低的延遲。由於數據的訪問延遲較高,決定了 Hive 不適合在線數據查詢。

6. 執行計算。Hive 中執行是通過 MapReduce 來實現的而數據庫通常有自己的執行引擎。

7. 數據規模。由於 Hive 建立在集群上並可以利用 MapReduce 進行並行計算,因此可以支持很大規模的數據;對應的,數據庫可以支持的數據規模較小。

 

Hive的存儲格式

Hive的數據存儲基於Hadoop HDFS。

Hive沒有專門的數據文件格式,目前主流使用有三種:

  TextFile

    默認格式,數據不做壓縮,磁盤開銷大,數據解析開銷大。 可結合Gzip、Bzip2使用(系統自動檢查,執行查詢時自動解壓),但使用這種方式,hive不會對數據進行切分。從而無法對數據進行並行操作。

  RCFile

    RCFILE是一種行列存儲相結合的存儲方式。首先,其將數據按行分塊,保證同一個record在一個塊上,避免讀一個記錄需要讀取多個block。其次,塊數據列式存儲,有利於數據壓縮和快速的列存取

  SequenceFile

    SequenceFile是Hadoop API提供的一種二進制文件支持,其具有使用方便、可分割、可壓縮的特點。

 

Hive操作客戶端

常用的2個:CLI,JDBC/ODBC

CLI,即Shell命令行 JDBC/ODBC 是 Hive 的Java,與使用傳統數據庫JDBC的方式類似。

Hive 將元數據存儲在數據庫中(metastore),目前只支持 mysql、derby。

Hive 中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等解釋器、編譯器、優化器完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計划(plan)的生成。生成的查詢計划存儲在 HDFS 中,並在隨后由 MapReduce 調用執行。

Hive 的數據存儲在 HDFS 中,大部分的查詢由 MapReduce 完成(包含 * 的查詢,比如 select * from table 不會生成 MapRedcue 任務,記住,其實這里的不產生mapreduce的原因是hive自己的數據抓取策略默認是不開啟mapreduce任務的,如果開啟可以設置,但是誰想變慢呢,所以一般默認就好

 

Hive的metastore

metastore是hive元數據的集中存放地。

metastore默認使用內嵌的derby數據庫作為存儲引擎

Derby引擎的缺點:一次只能打開一個會話

使用MySQL作為外置存儲引擎,多用戶同時訪問

元數據庫詳解見:查看mysql SDS表和TBLS表

可參考   https://blog.csdn.net/haozhugogo/article/details/73274832


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM