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 を簡素化する方法
序文:この記事は、jackyzm のブログ https://www.cnblogs.com/jack...
目次1. 複数ページの違い2. SPAとMPA 3. Vue Cli スキャフォールディング構成1....
タグの種類(表示モード) HTML タグは、一般的にブロック タグとインライン タグの 2 種類に分...
目次1. シーンの読み込み2. ノードを見つける1. ノード検索2. その他のノード操作3. 再生ア...
<br />多くのウェブサイト デザイナーが犯す最も一般的な間違いは、ウェブページが I...
私の環境: 3 centos7.5 1804マスター 192.168.100.140ノード1 192...
カルーセルはフロントエンド開発において比較的重要なポイントだと思います。ネイティブjsの知識ポイント...
目次1. 基本的なイベント処理2. 親コンポーネントにカスタムイベントを送信するマウス修飾子4. キ...
前回の記事「Zen Coding: HTML/CSS コードを素早く記述する方法」を公開した後、一部...
以前、Docker コンテナとローカル マシン間のファイル転送に関する記事を書きました。しかし、この...
組合執行分析を簡単にするために、次のSQLを例として使用します。 テーブル t1 を作成します ( ...
MySql インデックスインデックスの利点1. 一意のインデックスまたは主キー インデックスを作成す...
Nginx は、多くの優れた機能を備えた強力で高性能な Web およびリバース プロキシ サーバーで...
ラジオボタンとチェックボックスラジオボタンとチェックボックスの効果を実現するための純粋な CSSラジ...
この記事の例では、キャンバスをベースにした超クールな水の光の効果を実装するための具体的なコードを参考...