您好,登錄后才能下訂單哦!
<!--Mon Aug 19 12:45:45 2013-->
<configuration>
<property>
<name>hbase.rpc.engine</name>
<value>org.apache.hadoop.hbase.ipc.WritableRpcEngine</value>
</property>
<property>
<name>hbase.hregion.max.filesize</name>
<value>10737418240</value>
<!--默認值:256M:說明:在當前ReigonServer上單個Reigon的最大存儲空間,單個Region超過該值時,這個Region會被自動split成更小的region。 -->
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop01:8020/apps/hbase/data</value>
</property>
<property>
<name>hfile.block.cache.size</name>
<value>0.40</value>
<!--默認值:0.2:說明:storefile的讀緩存占用Heap的大小百分比,0.2表示20%。該值直接影響數據讀的性能
調優:當然是越大越好,如果寫比讀少很多,開到0.4-0.5也沒問題。如果讀寫較均衡,0.3左右。如果寫比讀多,果斷默認吧。
設置這個值的時,同時要參考 hbase.regionserver.global.memstore.upperLimit ,該值是memstore占heap的最大百分比,
兩個參數一個影響讀,一個影響寫。如果兩值加起來超過80-90%,會有OOM的風險,謹慎設置。-->
</property>
<property>
<name>hbase.regionserver.global.memstore.upperLimit</name>
<value>0.4</value>
<!--默認值:0.4/0.35 upperlimit說明:hbase.hregion.memstore.flush.size 這個參數的作用是當單個Region內所有的memstore大小總和超過指定值時,flush該region的所有memstore。
RegionServer的flush是通過將請求添加一個隊列,模擬生產消費模式來異步處理的。那這里就有一個問題,當隊列來不及消費,產生大量積壓請求時,可能會導致內存陡增,最壞的情況是觸發OOM。
這個參數的作用是防止內存占用過大,當ReigonServer內所有region的memstores所占用內存總和達到heap的40%時,HBase會強制block所有的更新并flush這些region以釋放所有memstore占用的內存。 -->
</property>
<property>
<name>hbase.regionserver.global.memstore.lowerLimit</name>
<value>0.38</value>
<!--lowerLimit說明: 同upperLimit,只不過lowerLimit在所有region的memstores所占用內存達到Heap的35%時,不flush所有的memstore。它會找一個memstore內存占用最大的region,做個別flush,此時寫更新還是會被block。lowerLimit算是一個在所有region強制flush導致性能降低前的補救措施。
在日志中,表現為 “** Flush thread woke up with memory above low water.”
調優:這是一個Heap內存保護參數,默認值已經能適用大多數場景。
參數調整會影響讀寫,如果寫的壓力大導致經常超過這個閥值,則調小讀緩存hfile.block.cache.size增大該閥值,或者Heap余量較多時,不修改讀緩存大小。
如果在高壓情況下,也沒超過這個閥值,那么建議你適當調小這個閥值再做壓測,確保觸發次數不要太多,然后還有較多Heap余量的時候,調大hfile.block.cache.size提高讀性能。-->
</property>
<property>
<name>hbase.hregion.memstore.block.multiplier</name>
<value>2</value>
<!--默認值:2:說明:當一個region里的memstore占用內存大小超過hbase.hregion.memstore.flush.size兩倍的大小時,block該region的所有請求,進行flush,釋放內存。
調優: 這個參數的默認值還是比較靠譜的。如果你預估你的正常應用場景(不包括異常)不會出現突發寫或寫的量可控,那么保持默認值即可。
如果正常情況下,你的寫請求量就會經常暴長到正常的幾倍,那么你應該調大這個倍數并調整其他參數值,比如hfile.block.cache.size和hbase.regionserver.global.memstore.upperLimit/lowerLimit,以預留更多內存,防止HBase server OOM。-->
</property>
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop04,hadoop05,hadoop06,hadoop07</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>60000</value>
<!--默認: 180000 :zookeeper 會話超時時間,單位是毫秒 -->
</property>
<property>
<name>hbase.superuser</name>
<value>hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.client.keyvalue.maxsize</name>
<value>10485760</value>
<!--默認: 10485760 :一個KeyValue實例的最大size.這個是用來設置存儲文件中的單個entry的大小上限。因為一個KeyValue是不能分割的,
所以可以避免因為 數據過大導致region不可分割。明智的做法是把它設為可以被最大region size整除的數。如果設置為0或者更小,就會禁用這個檢查。默認10MB。 -->
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
<!--默認: 2181 :ZooKeeper的zoo.conf中的配置。 客戶端連接的端口 -->
</property>
<property>
<name>hbase.hstore.blockingStoreFiles</name>
<value>7</value>
<!--默認: 7 : 當一個HStore含有多于這個值的HStoreFiles(每一個memstore flush產生一個HStoreFile)的時候,會執行一個合并操作,update會阻塞直到合并完成,直到超過了hbase.hstore.blockingWaitTime的值
調優:block寫請求會嚴重影響當前regionServer的響應時間,但過多的storefile也會影響讀性能。從實際應用來看,為了獲取較平滑的響應時間,可將值設為無限大。如果能容忍響應時間出現較大的波峰波谷,那么默認或根據自身場景調整即可。-->
</property>
<property>
<name>hbase.hstore.blockingWaitTime</name>
<value>90000</value>
<!--20140314添加
默認: 90000 :hbase.hstore.blockingStoreFiles所限制的StoreFile數量會導致update阻塞,這個時間是來限制阻塞時間的。當超過了這個時間,HRegion會停止阻塞update操作,不過合并還有沒有完成。默認為90s.-->
</property>
<property>
<name>hbase.hstore.compactionThreshold</name>
<value>3</value>
<!--默認: 3 :當一個HStore含有多于這個值的HStoreFiles(每一個memstore flush產生一個HStoreFile)的時候,會執行一個合并操作,把這HStoreFiles寫成一個。這個值越大,需要合并的時間就越長。-->
</property>
<property>
<name>hbase.hregion.majorcompaction</name>
<value>86400000</value>
<!--默認: 86400000 :一個Region中的所有HStoreFile的major compactions的時間間隔。默認是1天。設置為0就是禁用這個功能。-->
</property>
<property>
<name>hbase.security.authorization</name>
<value>false</value>
</property>
<property>
<name>hbase.zookeeper.useMulti</name>
<value>true</value>
</property>
<property>
<name>hbase.client.scanner.caching</name>
<value>100</value>
<!--默認: 1 :當調用Scanner的next方法,而值又不在緩存里的時候,從服務端一次獲取的行數。越大的值意味著Scanner會快一些,但是會占用更多的內存。
當緩沖被占滿的時候,next方法調用會越來越慢。慢到一定程度,可能會導致超時。例如超過了 hbase.regionserver.lease.period。 -->
</property>
<property>
<name>hbase.defaults.for.version.skip</name>
<value>true</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase-unsecure</value>
</property>
<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>134217728</value>
<!--默認: 67108864 :當memstore的大小超過這個值的時候,會flush到磁盤。這個值被一個線程每隔hbase.server.thread.wakefrequency檢查一下。-->
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>60</value>
<!--默認: 10 :RegionServers受理的RPC Server實例數量。對于Master來說,這個屬性是Master受理的handler數量.-->
</property>
<property>
<name>hbase.hregion.memstore.mslab.enabled</name>
<value>true</value>
<!--默認: false :體驗特性:啟用memStore分配本地緩沖區。這個特性是為了防止在大量寫負載的時候堆的碎片過多。這可以減少GC操作的頻率。
說明:減少因內存碎片導致的Full GC,提高整體性能。-->
</property>
<property>
<name>hbase.security.authentication</name>
<value>simple</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/var/log/hbase</value>
</property>
<property>
<name>hbase.master.info.bindAddress</name>
<value>hadoop03</value>
<description>Enter the HBase Master server hostname</description>
</property>
</configuration>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。