精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

HBase如何合理設置客戶端Write Buffer

數(shù)據(jù)庫 其他數(shù)據(jù)庫
本文將結(jié)合HBase相關(guān)源碼,對其進行深入介紹,分析如何在實際項目中合理設置和使用它。

 HBase客戶端API提供了Write Buffer的方式,即批量提交一批Put對象到HBase服務端。

1. 什么時候需要Write Buffer?

默認情況下,一次Put操作即要與Region Server執(zhí)行一次RPC操作,其執(zhí)行過程可以被拆分為以下三個部分:

T1:RTT(Round-Trip Time),即網(wǎng)絡往返時延,它指從客戶端發(fā)送數(shù)據(jù)開始,到客戶端收到來自服務端的確認,總共經(jīng)歷的時延,不包括數(shù)據(jù)傳輸?shù)臅r間;

T2:數(shù)據(jù)傳輸時間,即Put所操作的數(shù)據(jù)在客戶端與服務端之間傳輸所消耗的時間開銷,當數(shù)據(jù)量大的時候,T2的時間開銷不容忽略;

T3:服務端處理時間,對于Put操作,即寫入WAL日志(如果設置了WAL標識為true)、更新MemStore等。

其中,T2和T3都是不可避免的時間開銷,那么能不能減少T1呢?假設我們將多次Put操作打包起來一次性提交到服務端,則可以將T1部分的總時間從T1 * N降低為T1,其中T1指的是單次RTT時間,N為Put的記錄條數(shù)。

正是出于上述考慮,HBase為用戶提供了客戶端緩存批量提交的方式(即Write Buffer)。假設RTT的時間較長,如1ms,則該種方式能夠顯著提高整個集群的寫入性能。

那么,什么場景下適用于該種模式呢?下面簡單分析一下:

如果Put提交的是小數(shù)據(jù)(如KB級別甚至更小)記錄,那么T2很小,因此,通過該種模式減少T1的開銷,能夠明顯提高寫入性能。

如果Put提交的是大數(shù)據(jù)(如MB級別)記錄,那么T2可能已經(jīng)遠大于T1,此時T1與T2相比可以被忽略,因此,使用該種模式并不能得到很好的性能提升,不建議通過增大Write Buffer大小來使用該種模式。

2. 如何配置使用Write Buffer?

如果要啟動Write Buffer模式,則調(diào)用HTable的以下API將auto flush設置為false:

  1. void setAutoFlush(boolean autoFlush) 

默認配置下,Write Buffer大小為2MB,可以根據(jù)應用實際情況,通過以下任意方式進行自定義:

1)  調(diào)用HTable接口設置,僅對該HTable對象起作用:

  1. void setWriteBufferSize(long writeBufferSize) throws IOException 

2)  在hbase-site.xml中配置,所有HTable都生效(下面設置為5MB):

  1. <property> 
  2. <name>hbase.client.write.buffer</name> 
  3. <value>5242880</value> 
  4. </property> 

該種模式下向服務端提交的時機分為顯式和隱式兩種情況:

1)  顯式提交:用戶調(diào)用flushCommits()進行提交;

2)  隱式提交:當Write Buffer滿了,客戶端會自動執(zhí)行提交;或者調(diào)用了HTable的close()方法時無條件執(zhí)行提交操作。

3. 如何確定每次flushCommits()時實際的RPC次數(shù)?

客戶端提交后,所有的Put操作可能涉及不同的行,然后客戶端負責將這些Put對象根據(jù)row key按照 region server分組,再按region server打包后提交到region server,每個region server做一次RPC請求。如下圖所示:

4. 如何確定每次flushCommits()時提交的記錄條數(shù)?

下面我們先從HBase存儲原理層面“粗略”分析下HBase中的一條Put記錄格式:

HBase中Put對象的大小主要由若干個KeyValue對的大小決定(Put繼承自org/apache/hadoop/hbase/client/Mutation.java,具體見Mutation的代碼所示),而KeyValue類中自帶的字段占用約50~60 bytes(參考源碼:org/apache/hadoop/hbase/KeyValue.java),那么客戶端Put一行數(shù)據(jù)時,假設column qualifier個數(shù)為N,row key長度為L1 bytes,value總長度為L2 bytes,則該Put對象占用大小可按以下公式預估:

Put Size = ((50~60) + L1) * N + L2) bytes

下面我們通過對HBase的源碼分析來進一步驗證以上理論估算值:

HBase客戶端執(zhí)行put操作后,會調(diào)用put.heapSize()累加當前客戶端buffer中的數(shù)據(jù),滿足以下條件則調(diào)用flushCommits()將客戶端數(shù)據(jù)提交到服務端:

1)每次put方法調(diào)用時可能傳入的是一個List<Put>,此時每隔DOPUT_WB_CHECK條(默認為10條),檢查當前緩存數(shù)據(jù)是否超過writeBufferSize,超過則強制執(zhí)行刷新;

2)autoFlush被設置為true,此次put方法調(diào)用后執(zhí)行一次刷新;

3)autoFlush被設置為false,但當前緩存數(shù)據(jù)已超過設定的writeBufferSize,則執(zhí)行刷新。

  1. private void doPut(final List<Put> puts) throws IOException { 
  2.        int n = 0; 
  3.        for (Put put : puts) { 
  4.            validatePut(put); 
  5.            writeBuffer.add(put); 
  6.            currentWriteBufferSize += put.heapSize(); 
  7.            // we need to periodically see if the writebuffer is full instead  
  8.            // of waiting until the end of the List 
  9.            n++; 
  10.            if (n % DOPUT_WB_CHECK == 0 
  11.                    && currentWriteBufferSize > writeBufferSize) { 
  12.                flushCommits(); 
  13.            } 
  14.        } 
  15.        if (autoFlush || currentWriteBufferSize > writeBufferSize) { 
  16.            flushCommits(); 
  17.        } 
  18.    } 

由上述代碼可見,通過put.heapSize()累加客戶端的緩存數(shù)據(jù),作為判斷的依據(jù);那么,我們可以編寫一個簡單的程序生成Put對象,調(diào)用其heapSize()方法,就能得到一行數(shù)據(jù)實際占用的客戶端緩存大小(該程序需要傳遞上述三個變量:N,L1,L2作為參數(shù)):

  1. import org.apache.hadoop.hbase.client.Put; 
  2. import org.apache.hadoop.hbase.util.Bytes; 
  3.  
  4. public class PutHeapSize { 
  5.     /** 
  6.      * @param args 
  7.      */ 
  8.     public static void main(String[] args) { 
  9.         if (args.length != 3) { 
  10.             System.out.println("Invalid number of parameters: 3 parameters!"); 
  11.             System.exit(1); 
  12.         } 
  13.         int N = Integer.parseInt(args[0]); 
  14.         int L1 = Integer.parseInt(args[1]); 
  15.         int L2 = Integer.parseInt(args[2]); 
  16.         byte[] rowKey = new byte[L1]; 
  17.         byte[] value = null
  18.         Put put = new Put(rowKey); 
  19.         for (int i = 0; i < N; i++) { 
  20.             put.add(Bytes.toBytes("cf"), Bytes.toBytes("c" + i), value); 
  21.         } 
  22.         System.out.println("Put Size: " + (put.heapSize() + L2) + " bytes"); 
  23.     } 

該程序可以用來預估當前設置的write buffer可以一次性批量提交的記錄數(shù):


  1. Puts Per Commit = Write Buffer Size / Put Size 

更進一步地,如果知道業(yè)務中的每秒產(chǎn)生的數(shù)據(jù)量,就可知道客戶端大概多長時間會隱式調(diào)用flushCommits()向服務端提交一次;同時也可反過來根據(jù)數(shù)據(jù)實時刷新頻率調(diào)整Write Buffer大小。

5. Write Buffer有什么潛在的問題?

首先,Write Buffer存在于客戶端的本地內(nèi)存中,那么當客戶端運行出現(xiàn)問題時,會導致在Write Buffer中未提交的數(shù)據(jù)丟失;由于HBase服務端還未收到這些數(shù)據(jù),因此也無法通過WAL日志等方式進行數(shù)據(jù)恢復。

其次,Write Buffer方式本身會占用客戶端和HBase服務端的內(nèi)存開銷,具體見下節(jié)的詳細分析。

6. 如何預估Write Buffer占用的內(nèi)存?

客戶端通過Write Buffer方式提交的話,會導致客戶端和服務端均有一定的額外內(nèi)存開銷,Write Buffer Size越大,則占用的內(nèi)存越大。客戶端占用的內(nèi)存開銷可以粗略使用以下公式預估:


  1. hbase.client.write.buffer * number of HTable object for writing 

而對于服務端來說,可以使用以下公式預估占用的Region Server總內(nèi)存開銷:


  1. hbase.client.write.buffer * hbase.regionserver.handler.count * number of region server 

其中,hbase.regionserver.handler.count為每個Region Server上配置的RPC Handler線程數(shù)。

原文鏈接:http://www.cnblogs.com/panfeng412/archive/2012/10/16/how-to-use-hbase-client-write-buffer.html

【編輯推薦】

  1. 讓數(shù)據(jù)庫變快的10個建議
  2. 利用Java進行MySql數(shù)據(jù)庫的導入和導出
  3. 20個數(shù)據(jù)庫設計最佳實踐
  4. 超越MySQL 對流行數(shù)據(jù)庫進行分支
  5. 迎接大數(shù)據(jù)時代,高手較量數(shù)據(jù)庫遷移實戰(zhàn)方案

責任編輯:彭凡 來源: 博客園
相關(guān)推薦

2011-08-15 14:09:59

JavaHBase

2011-03-29 16:07:32

CACTISNMP

2010-07-27 15:59:04

NFS Server

2010-07-22 12:24:31

Telnet客戶端

2013-03-13 10:51:44

瘦客戶端VDI

2010-12-31 14:23:57

Exchange Se

2011-08-17 10:10:59

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2010-12-17 10:16:33

OpenVAS

2009-12-08 16:47:06

WCF IP

2010-05-31 10:11:32

瘦客戶端

2011-10-26 13:17:05

2011-03-24 13:00:31

配置nagios客戶端

2011-03-02 14:36:24

Filezilla客戶端

2010-12-21 11:03:15

獲取客戶端證書

2011-03-21 14:53:36

Nagios監(jiān)控Linux

2013-05-09 09:33:59

2011-04-06 14:24:20

Nagios監(jiān)控Linux

2009-03-04 10:27:50

客戶端組件桌面虛擬化Xendesktop

2009-05-07 15:52:26

SQL ServerSET選項客戶端管理
點贊
收藏

51CTO技術(shù)棧公眾號

国产最新视频在线| 国产视频1区2区| 精品国产伦一区二区三区观看说明| 99精品视频免费全部在线| 亚洲黄色www网站| av动漫免费看| 成人一级免费视频| 欧美一区影院| 日韩精品亚洲元码| 亚洲高清在线不卡| 欧美裸体视频| 亚洲人精品一区| 麻豆av一区二区三区久久| 天天天天天天天干| 亚洲欧美综合久久久| 亚洲精品99久久久久中文字幕| 国产精品88久久久久久妇女| 天堂在线视频网站| 老司机免费视频一区二区| 欧美激情精品久久久久久久变态| 九九热在线免费| 欧美草逼视频| 国产欧美一区二区三区网站| 成人av免费看| 一区二区三区亚洲视频| 国产日韩一区二区三区在线| 超薄丝袜一区二区| 日本精品在线观看视频| 国产极品模特精品一二| 欧美一区二区视频在线观看 | 久久综合久久色| 理论片午午伦夜理片在线播放| 蜜臀av一区二区在线免费观看| 亚洲人成网站999久久久综合| 欧美v在线观看| 操你啦在线视频| 国产精品拍天天在线| 久久天堂国产精品| 噜噜噜久久,亚洲精品国产品| 亚洲伊人观看| 国内成人精品一区| 国产大片免费看| 97欧美在线视频| 在线国产精品视频| 蜜乳av中文字幕| 亚洲精品aaaaa| 亚洲第一区在线| 日本一级大毛片a一| 精品一区91| 51午夜精品国产| 在线不卡一区二区三区| 免费成人毛片| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 中文字幕在线欧美| 国产一区白浆| 情事1991在线| 少妇久久久久久久| 老司机精品久久| 国产福利视频一区| 亚洲中文无码av在线| 日韩综合小视频| 国产精品久久久久久婷婷天堂| 亚洲综合视频网站| 亚洲精品一区二区妖精| 日韩一中文字幕| 国产精品白丝喷水在线观看| 亚洲激情中文| 色在人av网站天堂精品| 国产午夜精品无码一区二区| 亚洲久色影视| 国产成人a亚洲精品| 波多野结衣mp4| 九色porny丨国产精品| 91久久精品视频| www.麻豆av| jlzzjlzz亚洲日本少妇| 欧美精品久久久| 91视频在线观看| 亚洲另类一区二区| 国产资源在线视频| 日韩一区二区三区在线免费观看 | av在线精品| 日韩欧美在线综合网| 国产精品果冻传媒| 尤物tv在线精品| 日韩中文字幕av| 国产这里有精品| 精品成人一区| 91国产精品电影| 日韩久久久久久久久久| 国产剧情一区二区| 蜜桃av色综合| 国产素人视频在线观看| 午夜久久久影院| 熟妇人妻无乱码中文字幕真矢织江| av片在线观看网站| 欧美日韩中文字幕日韩欧美| 亚洲视频一二三四| 91久久精品无嫩草影院| 亚洲午夜av久久乱码| 国产激情无码一区二区三区| 免费亚洲视频| 91在线在线观看| 国产视频精选在线| 亚洲午夜免费电影| 中国黄色片免费看| 麻豆一区二区麻豆免费观看| 日韩中文字幕视频在线| 草久久免费视频| 国产精品综合视频| 日韩女优中文字幕| 国产传媒在线| 91精品国产麻豆国产自产在线| 国产欧美一区二| 丝袜连裤袜欧美激情日韩| 日韩中文字幕国产| 亚洲av无码精品一区二区| 成人丝袜视频网| 91免费视频黄| 91成人在线| 亚洲欧美日韩直播| 日韩av在线播| 国产超碰在线一区| 性高潮久久久久久久久| 午夜影院在线观看国产主播| 日韩美女一区二区三区四区| 成人信息集中地| 久久精品日产第一区二区| 成人动漫视频在线观看完整版| 少妇一区二区三区四区| 亚洲视频中文字幕| 性欧美videossex精品| 亚洲自拍都市欧美小说| 亚洲91av视频| 免费av网站在线播放| 亚洲免费观看高清在线观看| 国产情侣av自拍| 亚洲人和日本人hd| 欧美性受xxxx黑人猛交| 熟妇人妻中文av无码| 亚洲夂夂婷婷色拍ww47 | 日本不卡免费在线视频| 久久99久久精品国产| 日日夜夜天天综合入口| 日韩三级视频在线看| 欧美日韩黄色网| 国产做a爰片久久毛片| 超碰免费在线公开| 国产精品白丝久久av网站| 久久精品国产99国产精品澳门| 农村黄色一级片| 国产一区二区三区综合| 只有这里有精品| 日韩精品一区二区三区中文字幕 | 在线精品视频一区二区三四| 国产艳俗歌舞表演hd| 男人的天堂亚洲| 美日韩精品免费| 日韩毛片一区| 日韩中文av在线| www.国产精品视频| 亚洲第一久久影院| 国产吞精囗交久久久| 日韩精品色哟哟| 一区二区日本| 日韩视频一二区| 午夜精品福利在线观看| 日本福利片在线| 欧美视频自拍偷拍| 国产精品免费人成网站酒店| 国产69精品久久久久毛片 | 欧美日韩一区二区国产| 国产精品久久7| 91av亚洲| 日韩亚洲在线观看| 99久久久久久久| 亚洲不卡av一区二区三区| 成人网站免费观看| 蜜臀久久99精品久久久画质超高清| 久久99欧美| 欧美爱爱视频| 欧美激情一级精品国产| 欧美zzoo| 日韩一区二区在线观看视频| 日韩欧美一级视频| 欧美高清在线视频| av在线免费看片| 亚洲视频二区| 中文字幕一区二区三区四区五区| jvid一区二区三区| 欧美激情精品久久久久久变态| 国产视频在线观看免费| 亚洲国产成人av网| 99精品欧美一区二区| 国产一二三精品| 国产精品免费成人| 欧美暴力喷水在线| 欧洲高清一区二区| 亚洲国产中文在线| 国产成人精品电影久久久| 成人在线播放免费观看| 亚洲免费小视频| 亚洲va欧美va| 欧美日韩一区二区三区高清 | 熟妇人妻系列aⅴ无码专区友真希 熟妇人妻av无码一区二区三区 | 亚洲高清av| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 亚洲优女在线| 日韩中文有码在线视频| 丝袜视频国产在线播放| 欧美一卡在线观看| 人妻中文字幕一区二区三区| 午夜久久久久久久久| 在线视频这里只有精品| 久久久噜噜噜久噜久久综合| 免费看三级黄色片| 麻豆成人免费电影| 精品一区二区中文字幕| 欧美午夜不卡影院在线观看完整版免费| 97夜夜澡人人双人人人喊| 伊人久久在线| 2019av中文字幕| 18加网站在线| 精品国产一区av| 成年人在线看| 亚洲天堂男人天堂| 深夜福利在线视频| 亚洲成人网久久久| 午夜精品久久久久久久99老熟妇| 亚洲精品少妇30p| 激情无码人妻又粗又大| 国产日韩综合av| 欧美 日本 国产| 99久久久精品免费观看国产蜜| 欧美一级黄色片视频| 亚洲欧洲日本mm| 亚洲精品无码国产| 激情欧美一区| 日本香蕉视频在线观看| 永久91嫩草亚洲精品人人| 午夜欧美一区二区三区免费观看| 91麻豆精品| 成人福利视频在线观看| 欧洲亚洲精品久久久久| 国产精品成人aaaaa网站| 中文字幕在线看片| 欧美亚洲第一区| 老司机2019福利精品视频导航| 日韩有码视频在线| 久草资源在线观看| 久久视频国产精品免费视频在线| 成人午夜免费福利| 精品成人一区二区三区四区| www.爱爱.com| 亚洲激情自拍图| 欧美孕妇孕交| 国产香蕉精品视频一区二区三区| 99这里有精品视频| 日韩精品影音先锋| 亚洲美女福利视频| 日韩电影中文 亚洲精品乱码 | 奇米影视7777精品一区二区| 男女无套免费视频网站动漫| 欧美aaa在线| 亚洲综合在线一区二区| 国产乱码字幕精品高清av | 国产在线视频第一页| 亚洲综合清纯丝袜自拍| 国产精品23p| 欧美天天综合色影久久精品| 成人小视频在线播放| 精品污污网站免费看| 国产视频一区二区三| 亚洲的天堂在线中文字幕| 欧美女v视频| 日韩中文字幕在线看| 欧美女同一区| 日本中文字幕成人| 婷婷激情成人| 国产在线精品二区| 日韩电影一区| 成人av在线不卡| 日本亚洲一区二区| 下面一进一出好爽视频| 成人av网站在线观看| 在线免费观看视频| 一区二区三区在线视频播放| 中文字幕亚洲高清| 欧美乱熟臀69xxxxxx| 欧美 日韩 人妻 高清 中文| 亚洲性视频网站| 视频在线观看入口黄最新永久免费国产| 色悠悠久久88| 丁香花在线高清完整版视频| 国产精品成人久久久久| 不卡精品视频| 欧美主播一区二区三区美女 久久精品人 | 色狠狠av一区二区三区| 99久久精品无免国产免费| 精品五月天久久| a毛片在线看免费观看| 日韩免费视频在线观看| 成人线上播放| 在线观看国产一区| 天堂va蜜桃一区二区三区漫画版| 日韩毛片在线免费看| 国产成人精品综合在线观看 | 麻豆成人免费视频| 88在线观看91蜜桃国自产| 四虎在线免费看| 欧美人与性动交| 国产精品久久久久久久久久齐齐| 国产精品大片wwwwww| 第四色中文综合网| 美国av在线播放| 免费的国产精品| 亚洲熟妇无码av| 午夜av一区二区| 国产白浆在线观看| 日韩中文字幕在线观看| 三上悠亚激情av一区二区三区| 日韩男女性生活视频| 成人资源在线| 黄色特一级视频| 国产一区二区三区综合| 久久久久久国产免费a片| 欧美性xxxxxx| 天堂在线视频观看| 隔壁老王国产在线精品| 香蕉成人app| 成年人视频大全| 国产麻豆一精品一av一免费| 九一在线免费观看| 欧美视频一区二区三区四区| 男人av在线| 欧洲亚洲女同hd| 亚欧日韩另类中文欧美| 国产二级片在线观看| av资源站一区| 免费观看一区二区三区毛片| 亚洲成人av在线| 99热99re6国产在线播放| 国产精品久久亚洲7777| 激情视频一区| a天堂视频在线观看| 亚洲国产精品久久一线不卡| 日韩在线一区二区三区四区| 欧美精品xxx| 亲子伦视频一区二区三区| 国产特级黄色大片| 久久无码av三级| 免费观看日批视频| 亚洲亚裔videos黑人hd| 成人国产一区二区三区精品麻豆| 亚洲综合中文字幕在线| 欧美成人69av| 人妖粗暴刺激videos呻吟| 婷婷开心激情综合| 天堂在线一二区| 国产ts人妖一区二区三区| 成人影视亚洲图片在线| 色噜噜狠狠一区二区| 亚洲同性同志一二三专区| 精品国产九九九| 97成人精品区在线播放| 蜜桃一区二区三区| 在线观看免费污视频| 自拍偷拍亚洲欧美日韩| 亚洲乱熟女一区二区| 日本亚洲欧洲色| 国产精品成人av| 欧美图片自拍偷拍| 福利视频导航一区| h视频在线播放| 99电影网电视剧在线观看| 中文国产一区| 国产欧美小视频| 日韩欧美综合在线| 婷婷综合六月| 视色,视色影院,视色影库,视色网| 亚洲综合日韩| 久久久免费看片| 精品国产99国产精品| 第84页国产精品| 中国女人做爰视频| 久久精品一区二区三区四区| 日本三级一区二区三区| 欧美成人亚洲成人日韩成人| 欧美激情极品| 国产女同无遮挡互慰高潮91| 亚洲综合999| 懂色av中文在线| 91偷拍精品一区二区三区| 久久夜色精品| 九九视频免费观看| 一本一本久久a久久精品综合小说| 亚洲日本网址| 国产一二三四五| 久久久久久久电影| 亚洲欧美激情另类|