【クラウドネイティブ】HBase on K8s オーケストレーションの導入解説と実践運用

【クラウドネイティブ】HBase on K8s オーケストレーションの導入解説と実践運用

1. 概要

HBase は列指向の分散データベースであり、その設計コンセプトは Google の BigTable 論文から派生したものです。 HBase の基盤となるストレージは HDFS に基づいて実装され、クラスター管理は ZooKeeper に基づいて実装されています。 HBase の適切に設計された分散アーキテクチャにより、大量のデータを迅速に保存し、ランダムにアクセスすることが可能になります。データ複製およびパーティショニングのメカニズムに基づいて、オンラインでの拡張、削減、およびデータ災害復旧を簡単に実現できます。これは、ビッグデータ分野でキー値データ構造を格納するために最も一般的に使用されるデータベース ソリューションです。

  • 公式ドキュメント: https://hbase.apache.org/book.html
  • GitHub アドレス: https://github.com/apache/hbase
  • HBaseの詳細については、私の記事「列ベースの分散データベース - HBase(環境展開)」も参照してください。
  • hbase は HDFS ストレージに依存しているため、HDFS コンテナのデプロイメントについては次の記事を参照してください: [クラウドネイティブ] Hadoop on k8s 環境のデプロイメント
  • ただし、実稼働環境では通常、高可用性 Hadoop が使用されます。高可用性のデプロイメントについては、私の記事を参照してください: [クラウドネイティブ] Hadoop HA on k8s 環境のデプロイメント
  • Hbase は Zookeeper に依存します。 Zookeeper のコンテナ化されたデプロイメントについては、[クラウドネイティブ] Zookeeper + Kafka on k8s 環境のデプロイメントを参照してください。

2. オーケストレーションのデプロイメントを開始する (非高可用性 HDFS)

アドレス: https://artifacthub.io/packages/helm/hbase/hbase

1) チャートパッケージをダウンロードする

 helmリポジトリhbaseを追加しますhttps://itboy87.github.io/bigdata-charts/

# hbase バージョン2.4.13
helm pull hbase / hbase --version 0.1.7

2) イメージを構築する

以下の Hadoop 高可用性に接続すると、イメージが再構築されます。ここでは、イメージを再構築するのではなく、リモート パッケージをローカルの港湾倉庫にプッシュするだけです。

 docker pull ghcr .io / fleeksoft / hbase / hbase -ベース: 2.4 .13 .2

# タグ
docker タグ ghcr .io / fleeksoft / hbase / hbase - base : 2.4 .13 .2 myharbor .com / bigdata / hbase - base : 2.4 .13 .2

# 押す
docker push myharbor .com / bigdata / hbase -ベース: 2.4 .13 .2

3) YAMLレイアウトを変更する(非高可用性HDFS)

  • hbase/値.yaml
画像
リポジトリ: myharbor .com / bigdata / hbase - base
タグ: 2.4.13.2
プルポリシー: IfNotPresent

...

conf :
hadoopユーザー名: admin
hbaseサイト:
hbase .rootdir : "hdfs://hadoop-hadoop-hdfs-nn.hadoop:9000/hbase"
hbase .zookeeper .quorum : "zookeeper.zookeeper:2181"

...

hbase : は
マスター
レプリカ 2

リージョンサーバー:
レプリカ 2

# 内部Hadoopを無効にする
ハドゥープ:
有効: false

# 内部のZookeeperを無効にする
飼育員:
有効: false
  • hbase/テンプレート/hbase-configmap.yaml
 if [ ` `.`Values`.`hadoop`.`enabled ` = true ];then
NAMENODE_URL={{- printf "http://%s-hadoop-hdfs-nn:9870/index.html" .Release.Name }}
それ以外
hadoop_url={{ index .Values.conf.hbaseSite "hbase.rootdir" }}
hadoop_url=`echo $hadoop_url|awk -F '/' '{print $3}'|awk -F':' '{print $1}'`
NAMENODE_URL=http://${hadoop_url}:9870/index.html
フィ

4) 展開を開始する

 # まず構文をチェックする
ヘルムリント./hbase

# インストールを開始する
helm で hbase をインストールします。/hbase -n hbase --create-namespace

注記

名前: hbase
最終配備: 2022年115日() 15:44:14
名前空間: hbase
ステータス:展開済み
改訂: 1
テストスイート:なし
注記:
1.次のコマンドを実行すると、 HBASE シェルを取得できます
kubectl exec - n hbase - it hbase - hbase - master - 0 -- hbase シェル

2. hbase マスター サービス ポートを検査します
kubectl exec -n hbase サービス hbase を記述します- hbase -マスター

3. hbase マネージャー UI へのポート転送を作成します
kubectl ポート転送- n hbase svc / hbase - hbase -マスター16010 : 16010

次にブラウザUIを開きます:

http を開く: // localhost : 16010

4. hbase thrift manager UI へのポート転送を作成します
kubectl ポート転送- n hbase svc / hbase - hbase -マスター9095 : 9095

次にブラウザUIを開きます:

http を開く: // localhost : 9095

ハードウェア

チェック

 kubectl get pods  svc - n hbase - wide を実行します。 

5) テスト検証

マスタースレーブスイッチをテストし、現在アクティブなマスターポッドを再起動します。

 kubectl ポッド hbaseを削除します- hbase -マスター- 0 - n hbase

アクティブ/スタンバイの切り替えは正常に実行できます

6) アンインストール

 helm アンインストール hbase - n hbase
# nsを削除
kubectl削除ns hbase --force

3. オーケストレーションのデプロイメントを開始する(高可用性 HDFS)

1) チャートパッケージをダウンロードする

 helmリポジトリhbaseを追加しますhttps://itboy87.github.io/bigdata-charts/

# hbase バージョン2.4.13
helm pull hbase / hbase --version 0.1.7

2) イメージを構築する

これは上記のイメージに基づいて構築されており、イメージに Hadoop を詰め込んだだけです。使用される主なHadoop設定ファイルはcore-site.yaml、hdfs-site.yamlです。

Dockerファイル

 myharbor.com/bigdata/hbase-baseから: 2.4.13.2

mkdir -p / opt / apacheを実行します

環境変数HADOOP_VERSION = 3.3.2

hadoop を追加します- $ { HADOOP_VERSION } .tar .gz / opt / apache

ENV HADOOP_HOME =/ opt / apache / hadoop

実行ln -s / opt / apache / hadoop - $ { HADOOP_VERSION } $HADOOP_HOME

ENV HADOOP_CONF_DIR = $ { HADOOP_HOME } / et / hadoop

環境変数PATH = $ { HADOOP_HOME } / bin : $PATH

構築を開始する

 docker build -t myharbor .com / bigdata / hbase - hdfs - ha : 2.4.13.2 を実行します --キャッシュなし

### パラメータの説明
# - t: 画像名を指定する
# . : 現在のディレクトリ Dockerfile
# - f: Dockerfileのパスを指定する
# --no-cache: キャッシュなし

# 港へ向かう
docker push myharbor .com / bigdata / hbase - hdfs - ha : 2.4 .13 .2

3) 設定を変更する

  • hbase-hdfs-ha/値.yaml
画像
リポジトリ: myharbor .com / bigdata / hbase - hdfs - ha
タグ: 2.4.13.2
プルポリシー: IfNotPresent

...

conf :
hadoopユーザー名: admin
hbaseサイト:
hbase .rootdir : "hdfs://myhdfs/hbase"
hbase .zookeeper .quorum : "zookeeper.zookeeper:2181"
  • hbase-hdfs-ha/テンプレート/hbase-configmap.yaml
 [ { { .Values ​​.hadoop .enabled } } = true ]の場合;それから
NAMENODE_URL = { { - printf "http://%s-hadoop-hdfs-nn:9870/index.html" .Release .Name } }
それ以外
NAMENODE_URL = http : //hadoop-ha-hadoop-hdfs-nn-1.hadoop-ha : 9870 : 9870 / index.html
フィ
 # まず構文をチェックする
helm lint ./hbase-hdfs-ha

# インストールを開始する
helm で hbase - hdfs - haをインストールします。/hbase-hdfs-ha-n hbase - hdfs - ha --create-namespace

注記

名前: hbase - hdfs - ha
最終配備: 2022年115日() 17:23:20
名前空間: hbase - hdfs - ha
ステータス:展開済み
改訂: 1
テストスイート:なし
注記:
1.次のコマンドを実行すると、 HBASE シェルを取得できます
kubectl exec -n hbase - hdfs - ha - it hbase - hdfs - ha - hbase - master - 0 -- hbase シェル

2. hbase マスター サービス ポートを検査します
kubectl exec -n hbase - hdfs - ha サービス hbase - hdfs - ha - hbase -マスターを記述します

3. hbase マネージャー UI へのポート転送を作成します
kubectlポート転送- n hbase - hdfs - ha svc / hbase - hdfs - ha - hbase -マスター16010 : 16010

次にブラウザUIを開きます:

http を開く: // localhost : 16010

4. hbase thrift manager UI へのポート転送を作成します
kubectlポート転送- n hbase - hdfs - ha svc / hbase - hdfs - ha - hbase -マスター9095 : 9095

次にブラウザUI を開きます:

http を開く: // localhost : 9095

ハードウェア

チェック

 kubectl get pods  svc - n hbase - hdfs - ha を実行します。 

5) テスト検証

マスタースレーブスイッチをテストし、現在アクティブなマスターポッドを再起動します。

 kubectl ポッド hbaseを削除します- hbase -マスター- 0 - n hbase

アクティブ/スタンバイの切り替えは正常に実行できます

6) アンインストール

 helm アンインストール hbase - hdfs - ha - n hbase - hdfs - ha
# nsを削除
kubectl削除ns hbase - hdfs - ha --force

Git アドレス: https://gitee.com/hadoop-bigdata/hbase-on-k8s

<<:  大手企業間の競争を背景に、国内パブリッククラウド市場が急成長

>>:  インタビュアー: OpenStack、Docker、Mesos、K8S の関係について教えてください。できますか?

推薦する

ハイブリッドクラウド向けの優れたオープンソースツール

企業は現在、さまざまな IT リソースを活用してビジネスを強化しています。コストが最大の考慮事項であ...

垂直型電子商取引は「溝を越える」ことができるか?

現在、垂直型電子商取引が直面している困難は、オンラインショッピングの深さと幅が十分ではなく、ユーザー...

ウェブマスターネットワークからの毎日のレポート:通信回線障害のビデオウェブサイトが新しいエコシステムへと進化

1. 海外のホストが大量にブロックされ、MicrosoftやAlexaなどのウェブサイトにアクセスで...

iwebfusionはどうですか?ロサンゼルスのAptumデータセンターのVPSの簡単なレビュー

iwebfusion はどうですか? iwebfusion サーバーはどうですか? iwebfusi...

クラウドコンピューティングを効率的に導入する方法

過去数年間に私たちが目にしてきた革新的なビジネスとテクノロジーの破壊的変化のほとんどは、クラウド コ...

[クラウドネイティブ] K8s ポッドの動的弾性拡張と収縮 HPA

1. 概要Horizo​​ntal Pod Autoscaler (HPA​) は、平均 CPU 使...

クラウドベースの世界における事業者の機会と戦略的選択

[[257522]] 1. 政策の支援により、クラウドコンピューティング業界は新たな発展の機会を迎え...

電子商取引のサンプル:Wanbiao.comの顧客単価10,000元

薛曼子さんと小曼さん(左)はスイスの時計ブランドDAVOSAを訪問し、同ブランドの創設者(右)から温...

Tencent MeetingがAPIインターフェースを公開し、企業専用の「Tencent Meeting」を開設

パンデミックの期間中、リモートワークの需要が爆発的に増加し、すべての業界で社内外のコラボレーション効...

Baiduエクスペリエンスマーケティングの効果向上に関するいくつかの見解

莫孤街と美麗碼が人々の電子商取引ショッピングに対する神経を刺激した後、黄金の鍵を持って生まれたソーシ...

テクノロジー企業がどのようにマーケティングを行っているかを見る

他の多くの企業と同様に、プロのウェブサイト構築会社で働くと、常にさまざまな形の販売を受けることになり...

私のSEOの旅について話す

私は、SEO に初めて出会ったときから現在 SEO に携わるまでの私の人生について、自分自身のまとめ...

SEOで見落とされがちな詳細: 404ページの作成

SEO で非常に重要なのは、詳細を把握することです。SEO 要件の詳細に可能な限り従うことができれば...

WeChatマーケティングが適している企業を分析する

WeChat時代が始まって以来、多くのユーザーがWeChatを愛用し始めました。まさにユーザーのおか...

推奨: weloveservers-38 ドル/年/2g メモリ/8 コア/60g ハード ドライブ/2T トラフィック

weloveservers は、年間 19 ドルの支払いでオリジナル モデルのリソースを 2 倍にす...