hive是基於hadoop的資料倉儲軟體,使用類sql的hiveql語言實現資料查詢功能,可以查詢和管理pb級別的分布式資料,所有hive的資料都儲存在hdfs中
特點:靈活方便的(etl提取/轉換/載入)
支援mapreduce,tez,spark等多種計算引擎。
可直接訪問hdfs檔案以及hbase。
易用易程式設計
hive 的設計特點有:
支援索引,加快資料查詢
不同的儲存型別 例如,純文字檔案
可以直接使用儲存在hdfs上
內建大量函式
類sql 的查詢方式,將sql 查詢轉換為mapreduce 的job 在hadoop集群上執行
與傳統資料倉儲比較
hive 傳統資料倉儲
儲存:hdfs,理論上是無限拓展 集群儲存,容量有上限,適用於資料量小的商業應用
執行引擎:有mr/tez/spark等 可以選擇高效的的演算法執行查詢,也可以優化提高速度
方式:hql sql
速度:依賴集群,易拓展,快於普通的資料倉儲 複雜查詢效能高於hive,簡單大規模(百tb級資料)查詢效能較hive弱
複雜的關聯交叉運算其速度很慢,
索引:低效 高效
可靠性:資料儲存在hdfs,可靠性高,容錯性高 可靠性較低,一次查詢失敗需要重新開始
依賴:依賴硬體較低 依賴於高效能的商業伺服器
資料集市和資料倉儲的區別
資料集市
資料集市(data mart) ,也叫資料市場,資料集市就是滿足特定的部門或者使用者的需求,
按照多維的方式進行儲存,包括定義維度、需要計算的指標、維度的層次等,生成面向決策分析需求的資料立方體。
資料倉儲
為滿足各類零散分析的需求,通過資料分層和資料模型的方式,並以基於業務和應用的角度將資料進
行模組化的儲存。
分層的優點
複雜問題簡單化
將任務分解成多個步驟完成,每一層只處理單一的步驟,比較簡單,並且方便定位問題。
減少重複開發
規範資料分層,通過中間層資料,減少最大的重複計算,增加一次計算結果的復用性。
隔離原始資料
避免資料異常或者資料敏感,使真實資料與統計資料解耦。
優點:高可靠、高容錯
類sql
可擴充套件多介面 1.beeline 2.jdbc 3.thrift 4.python 5.odbc
缺點:延遲較高 預設mr為執行引擎。 mr延遲較高
不支援物化檢視
不適用oltp 暫不支援列級別的資料新增、更新、刪除操作。
暫不支援儲存過程
架構:hive分為三個角色hiveserver、metastore、webhcat。
hiveserver 將使用者提交的hql語句進行編譯,解析成對應的yarn任務、spark任務或者hdfs操作,從而完成資料的提取、轉換、分析。
metastore 提供元資料服務。
webhcat 對外提供基於https協議的元資料訪問、ddl查詢等服務
hive資料儲存模型
資料庫:建立表時如果不指定資料庫,則預設為default資料庫。
表:物理概念,實際對應hdfs上的乙個目錄。
分割槽:對應所在表所在目錄下的乙個子目錄。 數量不固定 ,可在分割槽下再有分割槽或者桶
桶:對應表或分割槽所在路徑的乙個檔案。每個桶是乙個檔案,在建表時可以指定桶的個數並可以排序
傾斜資料:資料集中於個別字段值的場景,比如按照城市分割槽時,80%的資料都來自某個大城市。
正常資料:不存在傾斜的資料
內部表和外部表
預設建立內部表 hive會將資料移動到資料倉儲目錄
建立外部表,這時hive會到倉庫目錄以外的位置訪問資料
區別:一般載入資料的表我們用外部表
匯入資料時:內部表資料移到倉庫目錄 外部表匯入時資料位置不移動
刪除表時:內部表元資料和資料會被一起刪除 而刪除外部表時只刪除元資料
hive調優
資料傾斜
資料傾斜指計算資料的時候,資料的分散度不夠,導致大量的資料集中到了一台或者幾台機器上計算,這些資料的計算速度遠遠低於平均計算速度,導致整個計算過程過慢。
日常使用過程中,容易造成資料傾斜的原因可以歸納為如下幾點:
group by
distinct count(distinct xx)
join
hive增強特性
同分布:將存在關聯關係的資料或可能要進行關聯操作的資料儲存在相同的儲存節點上
列加密 指定相應的加密列
hbase記錄批量刪除 fusioninsight hd hive提供了對hbase表的單條資料的刪除功能,通過特定的語法,hive可以將hbase表中符合條件的一條或者多條資料批量清除。
流控特性 當前已經建立的總連線數閾值控制。 每個使用者已經建立的連線數閾值控制。 單位時間內所建立的連線數閾值控制。
避免客戶端請求數過多,對服務端造成重啟
指定行分割符
hive基本操作
ddl:對錶結構的操作 有:建表,修改表,刪表,分割槽,資料型別
dml:資料裝載 資料匯入匯出
dql:對資料的分析 簡單查詢
複雜查詢 group by分組排序
order by全域性排序
sort by:分割槽排序
join
left join
righ join
full join
Hive總結(五)hive日誌
日誌記錄了程式執行的過程,是一種查詢問題的利器。hive中的日誌分為兩種 1.系統日誌,記錄了hive的運 況,錯誤狀況。2.job 日誌,記錄了hive 中job的執行的歷史過程。系統日誌儲存在什麼地方呢 在hive conf hive log4j.properties 檔案中記錄了hive日誌的...
Hive總結(五)hive日誌
日誌記錄了程式執行的過程,是一種查詢問題的利器。hive中的日誌分為兩種 1.系統日誌,記錄了hive的運 況,錯誤狀況。2.job 日誌,記錄了hive 中job的執行的歷史過程。系統日誌儲存在什麼地方呢 在hive conf hive log4j.properties 檔案中記錄了hive日誌的...
HIVE精煉筆記總結 建導篇
hive中有乙個預設的庫 庫名 default 庫目錄 hdfs hdp20 01 9000 user hive warehouse 新建庫 create database db order 庫建好後,在hdfs中會生成乙個庫目錄 hdfs hdp20 01 9000 user hive wareh...