1. HBaseの概要 1.1 HBaseとは HBase は、高い信頼性、高いパフォーマンス、列ストレージ、スケーラビリティ、リアルタイムの読み取りと書き込みを備えた、分散データ ストレージ用の HDFS ベースの NoSQL データベースです。 Hbase は膨大な量のデータを保存でき、後期段階でのクエリ パフォーマンスが高く、数億のデータ項目のクエリに対して数秒で結果を返すことができます。 1.2 HBaseテーブルの特徴 1. 大きい
2. モードなし
3. 列指向
4. まばら
5. データの複数のバージョン
6. 単一データ型
1.3 hbaseテーブルの論理ビュー 2. HBase クラスター構造 1. クライアント
2. 動物園の飼育係 クライアントはHBaseテーブルデータを操作するためにZKクラスタを必要とする 効果
3. Hマスター これはhbaseクラスタ全体のボスです 効果
4. HR リージョン サーバー これは統合されたHBaseクラスタの弟分です 効果
5. 地域 これは、HBase テーブル全体の分散ストレージの最小単位です。 データはHDFSに基づいて保存されます 3. HBase クラスターのインストールと展開 前提条件
1. 対応するインストールパッケージをダウンロードする
2. インストールディレクトリを計画する
3. インストールパッケージをサーバーにアップロードする 4. インストールパッケージを指定された計画ディレクトリに解凍します。
5. 解凍ディレクトリの名前を変更する
6. 設定ファイルを変更する hadoopのインストールディレクトリを/etc/hadoopフォルダに置く必要があります。
上記の2つのhadoop設定ファイルをhbaseインストールディレクトリの下のconfフォルダにコピーする必要があります。 1. vim hbase-env.sh #Java環境変数を設定する export JAVA_HOME=/export/servers/jdk #hbase クラスターが外部の zk クラスターによって管理され、組み込みの zk クラスターを使用しないことを指定します。エクスポート HBASE_MANAGES_ZK=false 2. vim hbase-site.xml <!-- HDFS 上で hbase が保存されているパスを指定します --> <プロパティ> <name>hbase.rootdir</name> <値>hdfs://node1:9000/hbase</値> </プロパティ> <!-- hbase が分散されていることを指定します --> <プロパティ> <name>hbase.cluster.distributed</name> <値>真</値> </プロパティ> <!-- zk のアドレスを指定します。複数のアドレスは「,」で区切ります --> <プロパティ> <名前>hbase.zookeeper.quorum</名前> <値>ノード1:2181、ノード2:2181、ノード3:2181</値> </プロパティ> 3. vim リージョンサーバー #どのノードがHRegionServerであるかを指定します ノード2 ノード3 4. vim バックアップマスター #どのノードがスタンバイHmasterであるかを指定します ノード2 7. hbase環境変数を設定する vim /etc/プロファイル エクスポート HBASE_HOME=/export/servers/hbase PATH=$PATH:$HBASE_HOME/bin をエクスポートします 8. hbaseディレクトリと環境変数を配布する scp -r hbase ノード2:/export/servers scp -r hbase ノード3:/export/servers scp /etc/profile ノード2:/etc scp /etc/profile ノード3:/etc 9. すべてのhbaseノードの環境変数を有効にする すべてのノードで実行
4. hbaseクラスターを起動および停止する 1. hbaseクラスターを起動する まずZKとHadoopのクラスターを起動します 次にhbase/binを介して hbase.sh を起動します
2. hbaseクラスターを停止する hbase/bin経由 hbase.sh を停止します hbase クラスター Web 管理インターフェース 1. hbaseクラスターを起動した後 アクセスアドレス HMasterホスト名: 16010 5. Hbaseシェルのコマンドライン操作 hbase/bin/hbase shell hbaseシェルクライアントコマンド操作を入力します 1. テーブルを作成する 't_user_info'、'base_info'、'extra_info' を作成します 't1'、{NAME => 'f1'}、{NAME => 'f2'}、{NAME => 'f3'} を作成します。 2. テーブルがあるか確認する リスト sql:show tables in mysqlテーブルに類似 3. テーブルの説明情報を表示する 't_user_info' を記述する 4. テーブルのプロパティを変更する #列ファミリーのバージョンの最大数を変更する alter 't_user_info', NAME => 'base_info', VERSIONS => 3 5. テーブルにデータを追加する 't_user_info'、'00001'、'base_info:name'、'zhangsan' と入力します 't_user_info'、'00001'、'base_info:age'、'30' と入力します 't_user_info'、'00001'、'base_info:address'、'北京' と入力します 't_user_info'、'00001'、'extra_info:school'、'shanghai' と入力します 't_user_info'、'00002'、'base_info:name'、'lisi' を入力します。 6. テーブルデータのクエリ //条件に従ってクエリを実行する get 't_user_info','00001' 't_user_info'、'00001'、{COLUMN => 'base_info'} を取得します。 't_user_info'、'00001'、{COLUMN => 'base_info:name'} を取得します。 't_user_info'、'00001'、{TIMERANGE => [1544243300660,1544243362660]} を取得します 't_user_info'、'00001'、{COLUMN => 'base_info:age'、VERSIONS =>3} を取得します。 // テーブル全体のクエリスキャン 't_user_info' 7. データの削除 't_user_info'、'00001'、'base_info:name' を削除します 't_user_info','00001' をすべて削除 8. テーブルを削除する 't_user_info' を無効にする 't_user_info' を削除します 6. hbaseの内部原理
7. HBase アドレス指定メカニズム RegionServer の検索
-ROOT-テーブル
.META. テーブル
対象データを照会するには、regionserver に問い合わせてください。 リージョンサーバーは、ターゲットデータが配置されているリージョンを特定し、クエリ要求を発行します。 まずメモリストアで領域が検索され、一致する場合は返されます メモリストアに見つからない場合は、ストアファイル内をスキャンします (多くのストアファイルをスキャンする場合があります -- ブルームフィルター)。ブルームフィルターは、クエリされた行キーがこのストアファイル内にあるかどうかをすぐに返すことができますが、エラーが発生することもあります。「いいえ」が返された場合、そこには存在しないはずです。「はい」が返された場合、そこには存在しない可能性があります。 8. Hbase 高度なアプリケーション テーブルを作成する BLOOMFILTERはデフォルトで行ブルームフィルタに設定されます
VSRSIONS のデフォルトは 1 データ バージョンです
圧縮 デフォルト値はNONE圧縮です
enable_all 'toplist.*' enable_allは正規表現をサポートし、現在一致するテーブルをリストします。 hbase テーブルの事前パーティション分割 - 手動パーティション分割 バッチ書き込みを高速化する 1 つの方法は、事前にいくつかの空の領域を作成することです。データが HBase に書き込まれると、領域のパーティション分割に従ってクラスター内でデータ負荷が分散されます。データがストアファイルサイズに達したときに自動パーティション分割を減らす 時間の消費量が少なく、また別の利点として、行キーの合理的な設計により、各リージョンの同時リクエストを均等に分散(均一になる傾向)して、IO 効率を最大化できます。 行キー設計 列ファミリーの数はできるだけ少なくし、通常は2~3にします。 ロウキー
行キーの上位ビットをプログラムによってランダムに生成されるハッシュ フィールドとして使用し、下位ビットを時間フィールドとして使用することをお勧めします。これにより、各 RegionServer にデータが均等に分散され、負荷分散が実現される可能性が高まります。 (シールド) 行キーの矛盾
ホットスポット解像度
Long.Max_Value - timestamp を使用してキーの末尾に追加できます (例: [key][reverse_timestamp])。HBase の rowkey は順序付けされており、最初のレコードは最後に入力されたデータであるため、[key] をスキャンして [key] の最初のレコードを取得することで、[key] の最新の値を取得できます。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: MySQL のインストール方法と設定に関するいくつかの問題の概要
>>: Redux Toolkit で Redux を簡素化する方法
# Windows および Linux 上の Redis のインストール デーモン構成Redis の...
質問アップロードするファイルのタイプを accept に追加することは、「表面的な」役割しか果たしま...
サーバーステータス分析Linux サーバーの CPU の詳細を表示する#CPU情報を表示[root@...
1. 命名規則1. データベース名、テーブル名、フィールド名には小文字を使用し、アンダースコアで区切...
MySQLでは、2つ以上のベーステーブルにビューを作成します。学生テーブルとstu_infoテーブル...
グローバルオブジェクトすべてのモジュールは呼び出すことができますglobal: ブラウザの wind...
MySQL 5.7 を使用すると、Web ターミナル経由でデータベースに中国語の文字を書き込むと文字...
成果を達成する 実装コードhtml <div class="wrapper"...
以前は、境界線の長さをコンテナーよりも小さくする必要があったときに、div ネストを使用していました...
Linux CentOS 7.7 システムを Vmware にインストールする方法。最小限のインスト...
目次1. Centosイメージを取得する2. nginxイメージをビルドする3. MySQLイメージ...
入力ボックスへのユーザー入力、ウィンドウのサイズ変更、スクロール、Intersection Obse...
MySQL ログイン パスワードを忘れた場合、解決方法は実はとても簡単です。MySQL メイン構成フ...
序文JavaScript では、document.querySelector("#demo...
tomcat の containerID を見つけて、tomacat ディレクトリに入ります。 [r...