hive on hbas原理場景及效能分析

2021-10-19 13:38:37 字數 1158 閱讀 1412

熟悉大資料的同學應該都知道,hive是乙個分布式的資料倉儲,它能夠將海量資料,結構化儲存到hdfs上,然後通過sql的方式對這些海量資料進行業務處理。而且,hive學習成本很低,熟悉sql的同學,很快就能編寫乙個hive應用程式。

我們通過hive把資料載入到hbase表中時,資料來源可以是檔案,也可以是表。當hbase集群整合hive後,如果對hive表追加資料的同時,hbase表中的資料也會增加。在原生的hbase集群中,hbase表不支援連線查詢或是分組查詢等,但是我們可以通過hive on hbase的方式來讓hbase集群支援這些功能。比如,事先將資料載入到hive表中,然後通過hive sql的join、group by等語法來操作。

參考這:

point 4:hive over hbase 原理

hive與hbase利用兩者本身對外的api來實現整合,主要是靠hbasestoragehandler進行通訊,利用 hbasestoragehandler,hive可以獲取到hive表對應的hbase表名,列簇以及列,inputformat和 outputformat類,建立和刪除hbase表等。

hive訪問hbase中表資料,實質上是通過mapreduce讀取hbase表資料,其實現是在mr中,使用hivehbasetableinputformat完成對hbase表的切分,獲取recordreader物件來讀取資料。

對hbase表的切分原則是乙個region切分成乙個split,即表中有多少個regions,mr中就有多少個map;

讀取hbase表資料都是通過構建scanner,對錶進行全表掃瞄,如果有過濾條件,則轉化為filter。當過濾條件為rowkey時,則轉化為對rowkey的過濾;

scanner通過rpc呼叫regionserver的next()來獲取資料;

1、 map task

hive讀取hbase表,通過mr,最終使用hivehbasetableinputformat來讀取資料,在getsplit()方法中對 hbase表進行切分,切分原則是根據該錶對應的hregion,將每乙個region作為乙個inputsplit,即,該錶有多少個region,就 有多少個map task;

每個region的大小由引數hbase.hregion.max.filesize控制,預設10g,這樣會使得每個map task處理的資料檔案太大,map task效能自然很差;

參考:

KVO的實現原理及使用場景

kvo的實現原理 當某個類的物件第一次被觀察時,系統就會在執行時動態地建立該類的乙個派生類,在這個派生類中重寫原類中被觀察屬性的 setter方法,派生類在被重寫的 setter 方法實現真正的通知機制 person nskvonotifying person 派生類重寫了 class 方法以 欺騙...

loadrunner 執行場景 場景執行原理

執行場景 場景執行原理 by 授客qq 1033553122 執行原理 1 remote agent dispatcher process 執行controller 在負載機上開啟應用程式。2agent loadrunner agent 允許controller 和負載生成器 load genera...

五大濾波演算法原理 場景及實踐

在感測器採集資料的過程中,難免因為各種各樣的干擾產生異常值,濾波分為電路濾波和演算法濾波。電路濾波是從源頭上解決 緩解 問題,但是使用成本比較高,即使使用了電路濾波也是不能保證每次採集的資料都是準確的,因為在實際的工作狀態中遇到的干擾各種各樣,演算法濾波的成本比較低,基本思想是採集多次資料對這些採集...