fkjava

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            49 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

          hbase參數(shù)配置及優(yōu)化

           

           

          接觸hbase已有半年的時(shí)間,查了很多資料,也參考了很多別人心得,也希望把自己的心得以及理解寫出來,我把配置hbase必調(diào)的幾個(gè)參數(shù)寫一下,以及它們的意義。

          zookeeper.session.timeout

          這個(gè)參數(shù)的意義是regionserverzookeeper的會(huì)話過期時(shí)間,默認(rèn)是3分鐘,如果regionserver zookeeper.session.timeout這個(gè)配置的時(shí)間沒有去連zookeeper的話,zookeeper會(huì)將該regionserverzookeeper摘除,不讓該regionserver向提供服務(wù),很多人都該值配置很大,原因是生產(chǎn)環(huán)境中regionserver的內(nèi)存都配置很大,以擴(kuò)大memstorecache的大小,提高性能,但是內(nèi)存配置大了以后,regionserverjvm做一次內(nèi)存大回收時(shí),時(shí)間也會(huì)變長(zhǎng),很有可能這個(gè)時(shí)間超過zookeeper.session.timeout時(shí)間,導(dǎo)致regionserverjvm回收內(nèi)存的時(shí)候,zookeeper誤以為regionserver掛掉而將regionserver摘除。但我認(rèn)為該值還是不要配的過大,首先地java已支持cms方式回收內(nèi)存,每次內(nèi)存回收的時(shí)間不是太長(zhǎng),并且生產(chǎn)環(huán)境中,我們也不允許過長(zhǎng)時(shí)間的服務(wù)中斷,配置大了,容易造成一個(gè)regionserver的服務(wù)真出現(xiàn)異常時(shí),zookeeper不會(huì)切除該regionserver,使得很多請(qǐng)求失敗。

          hbase.regionserver.handler.count

          regionserver的工作線程數(shù)量,默認(rèn)是10,沒有疑問,官方默認(rèn)值太小,通常都調(diào)到100~200之間,提高regionserver性能。

          hbase.regionserver.lease.period

          regionserer租約時(shí)間,默認(rèn)值是60s,也有點(diǎn)小,如果你的生產(chǎn)環(huán)境中,在執(zhí)行一些任務(wù)時(shí),如mapred時(shí)出現(xiàn)lease超時(shí)的報(bào)錯(cuò),那這個(gè)時(shí)候就需要去調(diào)大這個(gè)值了。

          hfile.block.cache.size

          regionserver cache的大小,默認(rèn)是0.2,是整個(gè)堆內(nèi)存的多少比例作為regionservercache,調(diào)大該值會(huì)提升查詢性能,當(dāng)然也不能過大,如果你的hbase都大量的查詢,寫入不是很多的話,調(diào)到0.5也就夠了,說到這個(gè)值,有一個(gè)地方需要說明一下,如果生產(chǎn)環(huán)境有mapred任務(wù)去scan hbase的時(shí)候,一些要在mapred scan類中加一個(gè)scan.setCacheBlocks(false),避免由于mapred使用regionservercache都被替換,造成hbase的查詢性能明顯下降。

          hbase.hregion.memstore.flush.size

          一個(gè)regionserver的單個(gè)region memstore的大小,默認(rèn)是64M,在hbase結(jié)構(gòu)中,一個(gè)regionserver管理多個(gè)region,一個(gè)region對(duì)應(yīng)一個(gè)hlog和多個(gè)store,一個(gè)store對(duì)應(yīng)多個(gè)storefile和一個(gè)memstore,這里的hbase.hregion.memstore.flush.size意思一個(gè)region下面的所有store里面的memstore的達(dá)到多少時(shí),開始將這些memstore flushhdfs中去,配置這個(gè)值,需要參考一下,平均每個(gè)regionserver管理的region數(shù)量,如果每臺(tái)regionsever管理的region不多的話,可以適當(dāng)?shù)恼{(diào)大該值,如512M時(shí)再flush

          hbase.regionserver.global.memstore.upperLimit/hbase.regionserver.global.memstore.lowerLimit

          配置一臺(tái)regionserver所有memstore占整個(gè)堆的最大比例,默認(rèn)是0.4/0.35,二個(gè)值的差異在于是做局部的flush,還是全部flush,如果你的regionserver日志中,頻發(fā)出現(xiàn)因?yàn)槌^hbase.regionserver.global.memstore.lowerLimit而做flush的信息,我覺得有必要調(diào)小hbase.hregion.memstore.flush.size,或者適當(dāng)調(diào)大這二個(gè)值,當(dāng)然hbase.regionserver.global.memstore.upperLimithfile.block.cache.size的和不能大于1,到0.8我覺得已經(jīng)夠大了。如果你的jvm內(nèi)存回收是使用cms的話,有一個(gè)值CMSInitiatingOccupancyFraction(內(nèi)存使用到時(shí)多少時(shí),一始cms回收內(nèi)存)的大小和覺得和這個(gè)有關(guān)系,略小于hbase.regionserver.global.memstore.upperLimithfile.block.cache.size的和是一個(gè)不錯(cuò)的選擇。

          hbase.hstore.compactionThreshold/hbase.hregion.majorcompaction

          hbase.hstore.compactionThreshold執(zhí)行compactionstore數(shù)量,默認(rèn)值是3,如果需要提高查詢性能,當(dāng)然是storefile的數(shù)量越小,性能越好,但是執(zhí)行compaction本身有性能資源的開消,如果regionserver頻繁在compacion對(duì)性能影響也很大。hbase.hregion.majorcompaction表示majorcompaction的周期,默認(rèn)是1天,majorcompaction與普通的compaction的區(qū)別是majorcompaction會(huì)清除過期的歷史版本數(shù)據(jù),同時(shí)合并storefile,而普通的compaction只做合并,通常都是majorcompaction,調(diào)為0,然后手工定期的去執(zhí)行一下majorcompaction,適當(dāng)調(diào)小點(diǎn)compacionThreshold

          hbase.hregion.max.filesize

          一個(gè)regionsever的最大值,默認(rèn)是256M,如果數(shù)據(jù)量特別大的話,調(diào)大該值可以減少region的數(shù)量,調(diào)到2G我覺得都不為過。

          hbase配置調(diào)優(yōu)太多,jvmmslab內(nèi)存管理以及hdfs append方式等等,需要太多的知識(shí)面,很多東西,我也在學(xué)習(xí)之中,先寫這么多。

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990            星老師

          posted on 2012-09-03 15:14 瘋狂軟件 閱讀(2059) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 砚山县| 慈溪市| 永胜县| 台中县| 屏边| 灵台县| 尤溪县| 揭阳市| 新疆| 永安市| 紫金县| 灌南县| 英德市| 常德市| 酒泉市| 都兰县| 桃园市| 彝良县| 康马县| 泸溪县| 宁南县| 丽江市| 新昌县| 库伦旗| 尉犁县| 崇州市| 潍坊市| 准格尔旗| 西乡县| 莱州市| 娱乐| 罗源县| 噶尔县| 邯郸市| 郧西县| 海原县| 涿州市| 九台市| 全南县| 沭阳县| 进贤县|