您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“hbase中cache與batch是什么意思”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“hbase中cache與batch是什么意思”這篇文章吧。
cache:
在默認情況下,如果你需要從hbase中查詢數據,在獲取結果ResultScanner時,hbase會在你每次調用ResultScanner.next()操作時對返回的每個Row執行一次RPC操作。即使你使用ResultScanner.next(int nbRows)時也只是在客戶端循環調用RsultScanner.next()操作,你可以理解為hbase將執行查詢請求以迭代器的模式設計,在執行next()操作時才會真正的執行查詢操作,而對每個Row都會執行一次RPC操作。
因此顯而易見的就會想如果我對多個Row返回查詢結果才執行一次RPC調用,那么就會減少實際的通訊開銷。這個就是hbase配置屬性“hbase.client.scanner.caching”的由來,設置cache可以在hbase配置文件中顯示靜態的配置,也可以在程序動態的設置。
cache值得設置并不是越大越好,需要做一個平衡。cache的值越大,則查詢的性能就越高,但是與此同時,每一次調用next()操作都需要花費更長的時間,因為獲取的數據更多并且數據量大了傳輸到客戶端需要的時間就越長,一旦你超過了maximum heap the client process 擁有的值,就會報outofmemoryException異常。當傳輸rows數據到客戶端的時候,如果花費時間過長,則會拋出ScannerTimeOutException異常。
batch:
在cache的情況下,我們一般討論的是相對比較小的row,那么如果一個Row特別大的時候應該怎么處理呢?要知道cache的值增加,那么在client process 占用的內存就會隨著row的增大而增大。在hbase中同樣為解決這種情況提供了類似的操作:Batch。可以這么理解,cache是面向行的優化處理,batch是面向列的優化處理。它用來控制每次調用next()操作時會返回多少列,比如你設置setBatch(5),那么每一個Result實例就會返回5列,如果你的列數為17的話,那么就會獲得四個Result實例,分別含有5,5,5,2個列。
RPCs=(Rows* Cols per Row) / Min(Cols per Row, Batch size) / Scanner caching
以上是“hbase中cache與batch是什么意思”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。