【クラウドネイティブ】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 の関係について教えてください。できますか?

推薦する

検索エンジンアルゴリズムの分析と判断

現在の検索エンジン市場は「征服」の時期にあり、市場シェアを競い合っています。このような環境では、検索...

SEOウェブサイト最適化キーワード競合分析

キーワードの最適化に携わる SEO 担当者にとって、キーワードの競争力を分析することは基本的なスキル...

SEOの詳細が重みを決定し、重みがランキングを決定する

前回の記事「オリジナル記事が転載記事よりランクが低い理由:重量増加」では、Webサイトの重量増加の概...

Baidu Tiebaのアップデートと改訂のいくつかの主要な兆候

皆さんご存知のとおり、Baidu Tieba の新バージョンは 3 月にリリースされました。Baid...

chicagovps-15USD E3-1240v3/8GB RAM/200GB HDD/10TB トラフィック/5IPv4

chicagovps.net は、前回のブラックフライデーに大量のマシンを準備しましたが、そのうちの...

草の根レベルでは新しいインターネットモデルを理解する必要があるが、すべてを行う必要はない

インターネットが人々の生活に重要な役割を果たしている理由は、利便性などの本来の要素に加えて、革新のス...

ルールの抜け穴が悪用され、タオバオの顧客は暗黙的にトラフィックを誘致することで年間数十万ドルを稼いだ。

オンラインストアビジネスを人気にしたいなら、プロモーションに少しお金をかけるのは当然です。しかし、広...

GoogleとBaiduの違い: nofollow

この記事は、上記のまとめになります。前の3つの記事では、アンカーテキスト、URLリンク、ウェイトの関...

sharktech (Shark Data Center) VPS: 50% オフ/フルアップグレード/40Gbps 防御/ピュア SSD/無制限トラフィック/Windows

sharktech(シャークデータセンター)VPSを購入した兄弟は、VPS移転のニュースを受け取って...

偽造外国貿易サイトのランキングが「短命」である理由について簡単に説明します

これまで、Baidu でのランキングは Google よりも難しいと感じていました。 Baidu は...

データの活用: マルチクラウド統合の課題への対応

ほとんどの企業は、計画に含まれていたかどうかにかかわらず、マルチクラウド環境を管理していることになり...

レッドハット、2019年度第1四半期決算を発表、前年比20%増

オープンソース ソリューションの世界的な大手プロバイダーである Red Hat は、2018 年 5...

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

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