hive效能優化指南 初級篇

2021-07-12 06:37:16 字數 2332 閱讀 9165

這個標題也是用血的教訓換來的,希望對剛進入hive圈的童鞋和正在hive圈爬坑的童鞋有所幫助。打算分以下幾個部分去描述:

這篇文章只是起個頭,為描述其他部分做下準備。下面我贅述下hive的結構和一些基本的操作。

首先,我來說說什麼是hive(what is hive?),請看下圖:

由於是在retina下截的屏,為避免網路原因顯示不出,這裡為也用文字描述以下。這個和介紹中描述的內容大致是一致的,hive構建在hadoop的hdfs和mapreduce之上,用於管理和查詢結構化/非結構化資料的資料倉儲。

那麼這裡不禁會引發乙個疑問?hive是如何應用的呢?請看下圖:

中關於用hive實現計算的描述,這裡不做過多的贅述。

hive 的結構可以分為以下幾部分:

1、 使用者介面主要有三個:cli,client 和 wui。其中最常用的是 cli,cli 啟動的時候,會同時啟動乙個 hive 副本。client 是 hive 的客戶端,使用者連線至 hive server。在啟動 client 模式的時候,需要指出 hive server 所在節點,並且在該節點啟動 hive server。 wui 是通過瀏覽器訪問 hive。

2、 hive 將元資料儲存在資料庫中,如 mysql、derby。hive 中的元資料報括表的名字,表的列和分割槽及其屬性,表的屬性(是否為外部表等),表的資料所在目錄等。

3、 直譯器、編譯器、優化器完成 hql 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計畫的生成。生成的查詢計畫儲存在 hdfs 中,並在隨後有 mapreduce 呼叫執行。

hive 的資料儲存在 hdfs 中,大部分的查詢由 mapreduce 完成(包含 * 的查詢,比如 select * from tbl 不會生成 mapredcue 任務)。

hive

rdbms

查詢語句

hqlsql

資料儲存

hdfs

raw device or local fs

索引1.0.0版本支援

有執行延遲高低

處理資料規模

大(或海量)小執行

mapreduce

excutor

截止本篇文章完成時,hive對外發布的1.0.0版本已支援索引的建立,下面引用官方部分原話:

repro steps:

create database skewtest;

use skewtest;

create table skew (

id bigint, acct string) skewed by (acct) on ('

cc','ch'

);create index skew_indx on table skew (

id) as '

org.apache.hadoop.hive.ql.index.compact.compactindexhandler

' with deferred rebuild;

hive 將元資料儲存在 rdbms 中,一般常用的有mysql和derby。由於derby只支援單客戶端登入,所以一般採用mysql來儲存元資料。

注:關於如何安裝配置hive,請參考我寫的hive的安裝部署

。首先,hive 沒有專門的資料儲存格式,也沒有為資料建立索引,使用者可以非常自由的組織 hive 中的表,只需要在建立表的時候告訴 hive 資料中的列分隔符和行分隔符,hive 就可以解析資料。

其次,hive 中所有的資料都儲存在 hdfs 中,hive 中包含以下資料模型:table,external table,partition,bucket。

external table 指向已經在 hdfs 中存在的資料,可以建立 partition。它和 table 在元資料的組織上是相同的,而實際資料的儲存則有較大的差異。

external table 只有乙個過程,載入資料和建立表同時完成(create external table ……location),實際資料是儲存在 location 後面指定的 hdfs 路徑中,並不會移動到資料倉儲目錄中。當刪除乙個 external table 時,僅刪除hive的元資料,不會刪除hdfs上對應的檔案。

這篇就描述到這裡,其他部分後面整理好資料後在與各位分享;若有疑問可**討論,或是發郵件給我,我會盡我所能給予幫助,與君共勉!

Spark效能優化指南 初級篇

我們使用spark submit提交乙個spark作業之後,這個作業就會啟動乙個對應的driver程序。該程序是向集群管理器 yarn,k8s 申請執行spark作業需要使用的資源,這裡的資源指的就是executor程序。yarn集群管理器會根據我們為spark作業設定的資源引數,在各個工作節點上,...

unity效能優化初級入門篇

渲染優化的幾種手段 draw call statistics面板 資源優化標準 shader要減少複雜的數 算 texture長度要小於1024 減少discard操作 其他 貼圖優化 模型優化 資源監測與分析,我們可以在開始專案時就對資源進行嚴格的把控。也可以在打包後,利用第三方分析工具對asse...

hive 優化指南

任務任務優化 1分割槽表,掃瞄指定的檔案數,減少處理的檔案 2.對map reduce的輸出進行壓縮,map和reduce,壓縮可以減少io和網路傳輸的時間 set mapred.compress.map.output true 3.桶 4.並行化操作 引數 set hive.exce.parall...