HBaseの最適化戦略
- ホットスポット効果の決済
HBaseのホットな問題のデータ原因:
読み取りと書き込みのユーザーの大多数は、1つまたは少数のリージョンサーバーのHBaseのクラスタへのアクセスを要求し、リージョンサーバーの負荷圧力サージが得られ、より深刻なケースで、その結果、リージョンサーバーのパフォーマンスの低下を引き起こす可能性が、ハングサービス。
- あなたは事前にパーティションテーブルを作成すると、デフォルト以外のポリシーにしたがって、表領域のみを作成しますが、必要に応じて、ホットスポット効果を避けるために、テーブルとして、複数のリージョンを作成します
- 事前パーティションベースの事前パーティションのrowKeyに基づいて、
- 语法:
3.1 'T1'、 'F1'、スプリット=> [ '10'、 '20'、 '30'、 '40']を作成
3.2を作成'T1'、 'F1'、SPLITS_FILE => 'splits.txt'
splits.txt
10
20
30
40
3.3 'T2'、 'F1'を作成し、{NUMREGIONS => 15、SPLITALGO => 'HexStringSplit'}- ホットスポットの問題の解決には、以下の基本的なことに注意が必要です
- 事前パーティション
- rowKey設定するためには、二人がホットな問題を解決しようと総括します。
- 検索効率を向上させます
- rowKeyその後、比較的連続高効率定数(スキャン操作のクエリー配列)を取得
- Memstoreセットのサイズ、ブロックキャッシュサイズのHBase-site.xmlの提供
各memstoreが40%128Mフラッシュのhbase.regionserver.global.memstore.size 0.4ヒープ領域に到達hbase.hregion.memstore.flush.size 128Mは、
(JVM空間がリージョンサーバーを占領しました)
- 検索効率を向上させ、可能な限りデータをメモリに入れましょう
- グローバルhbase.regionserver.global.memstore.size.lower.limitのときMemstoreの回避フラッシュにクライアントのフラッシュ操作をブロックする
95%の容量を持つmemstoreがフラッシュではありません
hfile.block.cache.size 0.4- HBaseの内部ブロックデータのインデックス、ブルームフィルタ
- JVMパラメータ
JVM Javaプロセス
JVM(ヒープ領域)のHBase新生代1/3才2/3永久世代(静的、定数)サバイバー(から)(へ)エデンサバイバー
8 1 1 ParNewGC ConcMarkSweepGC「-Xmx8g -Xms8G -Xmn128m -XX:UseParNewGC
-XX :UseConcMarkSweepGCを- XX:CMSInitiatingOccupancyFraction = 70 -verbose:GC -XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps -Xloggc:$ HBASE_HOME /ログ/ GC - {ホスト名} $ -hbase.log "hbase-env.sh輸出HBASE_REGIONSERVER_OPTS =」 - Xmx8g -Xms8G
-Xmn128m -XX:UseParNewGC -XX:UseConcMarkSweepGCを-XX:CMSInitiatingOccupancyFraction = 70 -verbose:gcを-XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps -Xloggc:$ HBASE_HOME /ログ「/gc-${hostname}-hbase.log
- mslab
- 防止メモリの断片化、過度のメモリの断片化、メモリリーク、FullGCはSTWはMSLAB、trueにデフォルトを有効にするかどうかを、真hbase.hregion.memstore.mslab.enabled発生しました。
Hbase.hregion.memstore.mslab.chunksize 2M - > 4,5M 6M
チャンクサイズ2メガバイトのデフォルト
- 手動処理への機能の自動化プロセスの変更
処理HBaseのツールマニュアルコンパクトな分割を完了するためのタイミング結合、シェルスクリプト
rowKeyデザイン
デザインの原則:ユニークな、整然とした、長さ、ハッシュ
唯一の原則
HBaseののrowKeyが一意にデータ行を識別し、我々は無重複ユニークなことを確認する必要があります。
注文した原則
rowKeyは自動的にアルファベット順に並べ替えられ、例えば:エア弾幕を設計することができます直播间ID:timestamp
長原理
rowKey 64バイト許容最大値は、16バイト以内に設定することをお勧めします。
50バイト×100万のレコード≈4ギガバイト
- これは、メモリリソースの無駄になります
- インパクトMemStore効果的な収納スペース
ハッシュ原理
記憶HBaseのリージョンサーバーに格納された複数のデータを分散し、ホットスポットデータを防ぎます。
- マルチリージョンクエリ、提案のrowKey連続(注文したの原則)
- 小領域の問合せ、ハッシュハッシュ - >暗号化、UUID
DigestUtils.md5Hex(のrowKey);暗号化
文字列のrowKey = "yxx_male_151";
。= UUID UUID.randomUUID()のtoString()
文字列newRowKey =のrowKey + "" + uuid.subString()いくつかを取ることができます