1.発生した問題
- Hbaseデータは頻繁に書き込まれ、memstoreのフラッシュが何度もトリガーされるため、リージョンとRSがオフラインになり、書き込みに失敗します。
- Hbaseはコンパクトであるため、RSがオフラインになり、クエリが失敗します
2、hbaseの読み取りおよび書き込みプロセス
- hbaseデータのストレージ構造:https://blog.csdn.net/eyeofeagle/article/details/105506606
- Hbaseの読み取りと書き込みのフローチャート:https://sematext.com/blog/hbase-memstore-what-you-should
- https://blog.cloudera.com/guide-to-using-apache-hbase-ports/
- テーブルデータの読み取りと書き込み:
1(
zkを介してメタ領域のサーバーアドレスを取得します)2(テーブルが配置されているregionserverを見つけて、読み取りと書き込みを開始します) - Hbaseテーブルの管理(memstoreの点滅、hfileのマージ):
1(zkを介して、メタ領域のサーバーアドレスを取得)
3(マスターノードを介してテーブルを作成/変更)
4(マスターノードがregionserverにオープン/クローズ/移動/分割/更新を通知/圧縮領域)
5(マスターノードはデータを保存します:[メタ領域のサーバーアドレス、ログ分割タスクの作成など]、およびそれらを
zkに格納します)6,7,8(regionserverはzkデータを読み取り、ログの分割などのタスクを実行し、マスターノードに報告する)
zookeeper-clientコマンドラインからログインして、zkでデータを表示します。
[zk: localhost:2181(CONNECTED) 2] ls /hbase
[ meta-region-server, rs, master, namespace, hbaseid, table .... ]
[zk: localhost:2181(CONNECTED) 3] get /hbase/master
�master:60000-��3�gNNPBUF
hadoop1�����.��
...
[zk: localhost:2181(CONNECTED) 4] ls /hbase/rs
[hadoop1,60020,1605056703882]
[zk: localhost:2181(CONNECTED) 5] get /hbase/meta-region-server
�regionserver:60020]�i~p�<PBUF
hadoop1�����.
...
[zk: localhost:2181(CONNECTED) 6] ls /hbase/namespace
[default, t1, hbase]
[zk: localhost:2181(CONNECTED) 7] get /hbase/namespace/default
�master:60000J3�g�e
default
...
3.リージョンサーバーのメモリ調整
アイデア:CDHが管理するHbase RegionServerのメモリ調整
- データを保存するのはリージョンサーバーです。Javaヒープメモリを増やすには:(4G);マスターノードを小さくすることができます:(1G)
- リージョンサーバーのメモリは主にキャッシュで消費されます:(次の2つの合計は0.8を超えることはできません。それ以外の場合は、エラーが報告されます)
hfile.block.cache.size(ディスクHFileキャッシュ)、デフォルトは0.4
hbase.regionserver.global.memstore.size(hbaseによって書き込まれます)キャッシュするデータを入力)、デフォルトは0.4
MemStoreの点滅トリガー条件:
- hbase.hregion.memstore.flush.sizeデフォルト128M:10秒ごとにチェックし、memstoreサイズが超過したときにフラッシュします
- hbase.regionserver.global.memstore.size:リージョンサーバーによって管理されるすべてのmemstoreの合計サイズが超過するとフラッシュします