溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

hbase中cache與batch是什么意思

發(fā)布時間:2021-12-08 15:18:00 來源:億速云 閱讀:235 作者:小新 欄目:云計(jì)算

這篇文章主要為大家展示了“hbase中cache與batch是什么意思”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“hbase中cache與batch是什么意思”這篇文章吧。

cache:
     在默認(rèn)情況下,如果你需要從hbase中查詢數(shù)據(jù),在獲取結(jié)果ResultScanner時,hbase會在你每次調(diào)用ResultScanner.next()操作時對返回的每個Row執(zhí)行一次RPC操作。即使你使用ResultScanner.next(int nbRows)時也只是在客戶端循環(huán)調(diào)用RsultScanner.next()操作,你可以理解為hbase將執(zhí)行查詢請求以迭代器的模式設(shè)計(jì),在執(zhí)行next()操作時才會真正的執(zhí)行查詢操作,而對每個Row都會執(zhí)行一次RPC操作。
 
     因此顯而易見的就會想如果我對多個Row返回查詢結(jié)果才執(zhí)行一次RPC調(diào)用,那么就會減少實(shí)際的通訊開銷。這個就是hbase配置屬性“hbase.client.scanner.caching”的由來,設(shè)置cache可以在hbase配置文件中顯示靜態(tài)的配置,也可以在程序動態(tài)的設(shè)置。
 
     cache值得設(shè)置并不是越大越好,需要做一個平衡。cache的值越大,則查詢的性能就越高,但是與此同時,每一次調(diào)用next()操作都需要花費(fèi)更長的時間,因?yàn)楂@取的數(shù)據(jù)更多并且數(shù)據(jù)量大了傳輸?shù)娇蛻舳诵枰臅r間就越長,一旦你超過了maximum heap the client process 擁有的值,就會報(bào)outofmemoryException異常。當(dāng)傳輸rows數(shù)據(jù)到客戶端的時候,如果花費(fèi)時間過長,則會拋出ScannerTimeOutException異常。
 
batch:
     在cache的情況下,我們一般討論的是相對比較小的row,那么如果一個Row特別大的時候應(yīng)該怎么處理呢?要知道cache的值增加,那么在client process 占用的內(nèi)存就會隨著row的增大而增大。在hbase中同樣為解決這種情況提供了類似的操作:Batch??梢赃@么理解,cache是面向行的優(yōu)化處理,batch是面向列的優(yōu)化處理。它用來控制每次調(diào)用next()操作時會返回多少列,比如你設(shè)置setBatch(5),那么每一個Result實(shí)例就會返回5列,如果你的列數(shù)為17的話,那么就會獲得四個Result實(shí)例,分別含有5,5,5,2個列。

RPCs=(Rows* Cols per Row) / Min(Cols per Row, Batch size) / Scanner caching

以上是“hbase中cache與batch是什么意思”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI