HBase put操作client端分析

2021-06-21 12:49:01 字數 2659 閱讀 9941

put通過生成乙個htable例項,並呼叫其put方法時,的執行流程,此部分分析分為client與regionserver兩個部分,

htable.put-->doput,如果是put乙個list時,會迭代呼叫doput

private

void

doput(put

put)

throwsinterruptedioexception,

retrie***haustedwithdetail***ception 對

put的內容進行檢查:

1.檢查

put中是否指定

cf,如果乙個都沒有,檢查不合法

2.檢查

put中所有的

kv中每乙個

kv的大小是否超過

hbase.client.keyvalue.maxsize

配置的值,預設

-1表示不限制大小

validateput

(put);

把當前put

的所有kv

的大小,包含類定義大小加入到

currentwritebuffersize中,

此屬性用來檢查當前

table

的buffer

中的put

大小是否超出了指定的

buffersize

currentwritebuffersize

+= put

.heapsize

();

把這次的

put新增到

writeasyncbuffer

列表中。

writeasyncbuffer

.add

(put);

如果當前

buffer

中的put

總大小超過了指定的

table

可儲存的

buffer

大小時,進行

flush,

不等待flush

完成操作。

在flush

過程中有可能

writeasyncbuffer

的資料清空後

submit

出現錯誤,會把錯誤的

put重新放入到此列表中。

while(

currentwritebuffersize

>

writebuffersize)

} hbase.client.max.total.tasks,default=100

private

void

backgroundflushcommits(

boolean

synchronous

)throws

interruptedioexception,retrie***haustedwithdetail***ception

while(

synchronous

&& !

writeasyncbuffer

.isempty

());

如果傳入的引數是

true,

表示需要等待

rpc呼叫結束

,flushcommits

或put

中上一次提交

error

時此引數為

true

等到taskssent

的值減去

tasksdone

的值等於

0,taskssent

表示提交的任務數,

tasksdone

表示完成的任務數

if(

synchronous)

部分資料提交失敗,也就是可能同時提交給兩個

regionserver,

有乙個成功,乙個失敗。

if(ap.

haserror

())

等到taskssent

的值減去

tasksdone

的值等於

0,taskssent

表示提交的任務數,

tasksdone

表示完成的任務數ap.

waituntildone

();

如果有部分資料提交失敗,同時沒有設定清空失敗的資料時,把資料重新新增到

writeasyncbuffer

列表中

if(!

clearbufferonfail)

retrie***haustedwithdetail***ceptione=

ap.geterrors

(); ap.

clearerrors

();

throwe;

} }finally}

} }

Hbase Put原始碼解析

size large b 原創文章,請各位多多指導,有錯誤希望各位能及時告訴我,感激不盡 b size 1 put put new put key 首先會構造put物件,以傳入的rowkey,如果未傳入時間戳,那麼就會預設為null,接下來就會判斷是否傳入的控制hbase事務的rowlock,如果傳...

簡單的TCP連線Server和Client

我們的一款unity開發的遊戲,之前一直在android上測試,這幾天我做了遊戲的windows phone 8版本匯出工作,經過一周摸索,終於成功打出了可以在wp8手機上正常執行的版本。wp8的.net庫是silverlight的乙個子集,很多.net 2.0的語法它不支援,socket的很多屬性...

只用 操作實現 , , 操作

減法 a b a b 乘法 a b相當於將a累加abs b 次 除法 相當於將abs a 減去 abs b 的次數 求lhs的反面值rhs,即求rhs使得lhs rhs 0 int negate int lhs return ret int abs int lhs 返回i的絕對值 lhs rhs l...