【クラウドネイティブ】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アーキテクチャーにおいて最小限の労力で高いパフォーマンスを達成する方法

デジタル変革が深まるにつれ、クラウドコンピューティング、人工知能、ビッグデータ、モノのインターネット...

エッジコンピューティングが IoT ネットワークを拡張する 3 つの方法

すでに 64 億台のデバイスがインターネットに接続され、さらに 550 万台の新しいデバイスが追加さ...

中国の検索エンジン市場のユーザー行動に関する洞察

この記事では、2018 年の中国の検索エンジン市場におけるユーザー行動についての洞察を紹介します。 ...

ウェブサイトはスタートラインで勝利する: SEO担当者が持つべき資質について

実は、今日小猫が話す内容は、このウェブサイトの「スタートラインで勝つ」コラムとはあまり関係がありませ...

racknerd: 米国の安価な VPS、年間 14.98 ドル、KVM/1G メモリ/15g ハードディスク/2.5T トラフィック、優れた速度

数日間在庫切れだった racknerd が追加した新しいサーバーがすべて利用可能になりました。メール...

マレーシアのVPSの推奨、いくつかの人気のあるマレーシアのVPS業者の推奨

マレーシア VPS、マレーシア VPS 推奨、マレーシア VPS レンタル...マレーシアは東南アジ...

ウェブサイトサーバーの変更が検索エンジンに与える影響の分析例

ウェブサイトのサーバーを変更することは、ウェブサイトが頻繁に遭遇する避けられない問題です。サーバーの...

良いSEOブログを作成する際に注意すべき6つの基本的な事項について簡単に説明します。

SEO ブログは、その名の通り、ブログの形式で SEO 関連の業界知識を共有するものです。しかし、近...

モノのインターネットとビッグデータ、クラウドコンピューティング、産業用モノのインターネットについて

私たちの時代は急速に発展しています。モノのインターネット、ビッグデータ、クラウドコンピューティングな...

マルチクラウド環境におけるリスク管理

企業が業務を複数のパブリック クラウドに移行するにつれて、リスクも変化します。企業は、マルチクラウド...

調査レポート: EUの技術規則はGoogleやIBMなどのクラウドコンピューティングプロバイダーも制限すべき

[[431112]]北京時間10月26日朝刊によると、最近発表された調査報告書によると、アマゾン、ア...

【ピークシーズン準備ガイド】新規セラー向け SEO ヒント (パート 3)

いよいよ、初心者セラー向け SEO 入門ガイドの 3 番目のレッスンです。この章では、SEO 戦略と...

GreenWebPage-ヨーロッパ KVM/4 コンピュータ ルーム/3 USD/512 MB メモリ/10 GB SSD/1 TB トラフィック

greewebpage.com という会社は設立されてまだ日が浅いようです。主な事業はドメイン名、バ...

Nutanix Matt Young: エッジコンピューティングは黄金の10年を迎える

新しい10年を迎えるにあたり、社会経済的要因によりアジアはさらに世界の注目を集めるようになるだろう。...

Big Bird Grassroots SEO チュートリアル: 説明文と著作権の書き方

第1章 第4稿での自己紹介 --- 記述の書き方誰かが叫び始めました。「Descriptionって何...