1. ホーム
  2. Hadoop

Hbase公式ドキュメント(中国語

2022-02-11 02:28:34

http://abloz.com/hbase/book.html#quickstart

http://yankaycom-wordpress.stor.sinaapp.com/hbase/book.html?q=/wp-content/hbase/book.html#hbase_default_configurations

ディレクトリ

シーケンス 1. はじめに
1.1. はじめに 1.2. クイックスタート
2. Apache HBase (TM) 設定方法
2.1. 基本条件 2.2. HBaseのオペレーティングモデル。スタンドアロン型と分散型 2.3.  コンフィギュレーションファイル 2.4. 設定例 2.5.  重要なコンフィギュレーション
3. アップグレード
3.1. 0.94.xから0.96.xへのアップグレード 3.2. 0.92.xから0.94.xへのアップグレード 3.3. 0.90.xから0.92.xへのアップグレード 3.4. 0.20xまたは0.89xから0.90.xへのアップグレード
4. HBase シェル
4.1.  スクリプトの使用 4.2.  シェルのヒント
5.  データモデル
5.1.  コンセプトビュー 5.2.  物理的ビュー 5.3.  テーブル 5.4.  5.5. カラムファミリー 5.6. セル 5.7. データモデル操作 5.8. バージョン 5.9. ソート 5.10. カラムのメタデータ 5.11. 結合
5.12. ACID
6. HBaseとスキーマ設計
6.1. スキーマ  作成 6.2.  カラムファミリーの数 6.3. ロウキーデザイン 6.4. バージョンアップの数 6.5. サポートされるデータ型 6.6. 結合 6.7. 生存時間(TTL) 6.8. 削除された細胞の保持 6.9. セカンダリインデックスと代替クエリパス 6.10. 制限事項
6.11. スキーマ設計の使用例 6.12. 運用・性能設定オプション
7. HBaseとMapReduce
7.1. マップ・タスクのパーティショニング 7.2. HBase MapReduceの例 7.3. MapReduceジョブで他のHBaseテーブルにアクセスする 7.4. 投機的実行
8. HBaseのセキュリティ
8.1. HBaseへのセキュアなクライアントアクセス 8.2. アクセス制御
8.3. 安全なバルクロード
9.
9.1. 概要 9.2. 目次 9.3. クライアント 9.4. クライアントリクエストフィルタ 9.5. マスター 9.6. リージョンサーバ 9.7. 地域 ) 9.8. 一括読み込み 9.9. HDFS
10. 外部API
10.1. 非Java言語とJVMの相互作用 10.2. REST 10.3. スリフト 10.4. C/C++ Apache HBaseクライアント
11. パフォーマンスチューニング
11.1. オペレーティングシステム 11.2. ネットワーク 11.3. Java 11.4. HBaseの設定 11.5. ZooKeeper 11.6. スキーマ設計
11.7. HBaseの一般的なパターン 11.8. HBaseへの書き込み 11.9. HBaseからの読み込み 11.10. HBaseからの削除 11.11. HDFS 11.12. アマゾンEC2 11.13. 事例紹介
12. HBaseのトラブルシューティングとデバッグ
12.1. 一般的なガイドライン 12.2. ログ 12.3. リソース 12.4. ツール 12.5. クライアント 12.6. MapReduce 12.7. ネームノード 12.8. ネットワーク 12.9. RegionServer 12.10. マスター 12.11. ZooKeeper 12.12. アマゾンEC2 12.13. HBaseとHadoopのバージョン関連 12.14. 事例紹介
13.ケーススタディ
13.1. 概要 13.2. スキーマ設計 13.3. パフォーマンス/トラブルシューティング
14. HBaseの運用管理
14.1. HBaseツールおよびユーティリティ 14.2. パーティション管理 14.3. ノード管理 14.4. HBaseメトリックス 14.5. HBaseの監視 14.6. クラスタレプリケーション 14.7. HBaseのバックアップ 14.8. キャパシティプランニング
15. HBaseの作成と開発
15.1. HBase リポジトリ 15.2. IDEs 15.3. HBaseの作成 15.4. Apache HBaseの配布をApacheのMavenリポジトリに追加する
15.5. HBaseリファレンスガイドの作成
15.6. hbase.apache.orgを更新する 15.7. テスト 15.8. Maven作成コマンド 15.9. 追加する 15.10. 開発 15.11. パッチの提出
16. ZooKeeper
16.1.  既存のZooKeeperとの併用 16.2.  ZooKeeper経由のSASL認証
17.コミュニティ
17.1. 意思決定 17.2. 地域社会の役割
A. よくある質問
B. ディープhbck
B.1. hbckを実行して矛盾を見つける B.2. 不整合 B.3. 部分的な修正 B.4. パーティションオーバーラップ修復
C. HBaseにおける圧縮
C.1. CompressionTest ツール C.2. hbase.regionserver.codecs C.3. LZO C.4. GZIP C.5. スナッピー C.6. 圧縮スキームの変更
D. YCSB:ヤフー・クラウド・サービス評価とHBase
E. HFileフォーマットバージョン2
E.1. 動機 E.2. HFileフォーマット第1版の概要 E.3. インラインブロックを用いた HBase ファイル形式 (バージョン 2)
F. HBaseに関する追加情報
F.1. HBaseのビデオ F.2. HBaseのデモ(スライド) F.3. HBaseに関する論文 F.4. HBaseウェブサイト F.5. HBaseの書籍 F.6. Hadoop関連書籍
G. HBaseの歴史
H. HBaseとApacheソフトウェア財団(ASF)
H.1. ASFの開発プロセス H.2. ASF報告会 I. HBaseでDapperライクなトレースを可能にする
I.1. SpanReceivers I.2. クライアントの変更
J. 0.95 RPC仕様
J.1. 目標 J.2. TODO J.3. RPC J.4. ノート
用語集

シーケンス

この本は  HBase  の公式ガイドです。バージョンは  0.95-SNAPSHOT  . HBaseの公式サイトで見ることができます。また  ジャバドック JIRA  および  ウィキ  をクリックすると、より詳細な情報をご覧いただけます。

本書は編集中です。パッチの提供は、公式HBase JIRA .

このバージョンは、翻訳者のレベルにより制限され、明確に理解できない部分や必要のない部分は、オリジナルの英文が残されています。

トップページ

もしあなたが、エキサイティングな分散コンピューティングの世界に初めて足を踏み入れるのであれば、面白い時代だと感じることでしょう。分散コンピューティングは難しく、分散システムを作るには、ハードウェア、ソフトウェア、ネットワークなど多くのスキルが必要です。クラスタは様々なエラーで故障する可能性があります。例えば、HBase自体のバグ、(OSを含む)設定ミス、ハードウェアの故障(ネットワークカードやディスク、メモリまで)今までスタンドアロンでプログラムを書いていた人は、やり直しが必要です。こちらが参考になります。  分散コンピューティングの誤謬 .

第1章. はじめに

1.1. はじめに

1.2 節、"クイックスタート"。 は、HBaseのスタンドアロン版を実行する方法を説明します。 彼はローカルディスク上で実行します。  セクション 2、"設定"  は、HDFS上で動作する分散型HBaseの実行方法について説明します。

1.2. クイックスタート

このガイドでは、1台のマシンにHBaseをインストールする方法について説明します。このガイドでは シェル テーブルを作成し、行を挿入し、そして行を削除し、最後にHBaseを停止する、という作業を10分もあれば行うことができます。

1.2.1. 最新版のダウンロードと解凍

を選択します。  Apacheダウンロードミラー をダウンロードします。  HBase リリース . をクリックします。  stable ディレクトリにあるファイルをダウンロードし、接尾辞が  .tar.gz  ファイル; 例えば  hbase-0.95-SNAPSHOT.tar.gz .

解凍して、解凍先のディレクトリに移動してください。

$ tar xfz hbase-0.95-SNAPSHOT.tar.gz
$ cd hbase-0.95-SNAPSHOT


これで、HBaseを起動する準備ができました。しかし  conf/hbase-site.xml  を設定するために hbase.rootdir で、HBaseがデータを書き込むディレクトリを選択します。

<?xml version="1.0"? >
<?xml-stylesheet type="text/xsl" href="configuration.xsl"? >
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///DIRECTORY/hbase</value>
  </property>
</configuration>



は  DIRECTORY  を、ファイルを書き込むディレクトリに移動します。デフォルトの  hbase.rootdir  へのポイントです。  /tmp/hbase-${user.name}  ということは、再起動後にデータを失うことになります(OSが /tmp ディレクトリ)

1.2.2. HBaseの起動

では、HBaseを起動します。

$ . /bin/start-hbase.sh
starting Master, logging to logs/hbase-user-master-example.org.out

HBaseとZookeeperを含むすべてのサービスが単一のJVM上で動作しています。HBaseのログは logs ディレクトリに保存されるので、起動に問題がある場合はこのログを確認することができます。

は  ジャワ  ?

Oracleの1.6版がインストールされていることを確認する必要があります ジャワ . コマンドラインでjavaと入力して応答があれば、Javaがインストールされています。そうでない場合は、まずインストールしてから conf/hbase-env.sh を変更するために JAVA_HOME は、Javaをインストールしたディレクトリを指しています。

1.2.3. シェルの練習

使用方法 シェル HBaseに接続する

$ . /bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version: 0.90.0, r1001068, Fri Sep 24 13:55:42 PDT 2010

hbase(main):001:0> 

入力  ヘルプ  次に  <RETURN>  シェルコマンドの列を見ることができます。このヘルプは非常に詳しく書かれていますが、注意すべきはテーブル名、行、列を引用符で囲む必要があることです。

という名前のテーブルを作成します。  test  テーブルで、1つのカラムファミリである  cf . すべてのテーブルをリストアップして作成を確認し、いくつかの値を挿入することができます。

hbase(main):003:0> create 'test', 'cf'
0 row(s) in 1.2200 seconds
hbase(main):003:0> list 'table'
test
1 row(s) in 0.0550 seconds
hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0560 seconds
hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0370 seconds
hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0450 seconds

上記では、3つの行を別々に挿入しています。最初の行のキーは row1 であり、列は  cf:a という値を持つ  value1 HBaseのカラムは、カラムファミリーのプレフィックスとカラム名をコロンで区切って構成されています。例えば、この行のカラム名は a .

挿入の確認.

このテーブルをスキャンして、次のようにします。

hbase(main):007:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1288380727188, value=value1
row2 column=cf:b, timestamp=1288380738440, value=value2
row3 column=cf:c, timestamp=1288380747365, value=value3
3 row(s) in 0.0590 seconds

行を取得し、次のようにします。

hbase(main):008:0> get 'test', 'row1'
COLUMN CELL
cf:a timestamp=1288380727188, value=value1
1 row(s) in 0.0400 seconds

を無効にしてからこのテーブルをドロップすると、先ほど行ったことがクリアされます。

hbase(main):012:0> disable 'test'
0 row(s) in 1.0930 seconds
hbase(main):013:0> drop 'test'
0 row(s) in 0.0770 seconds 

シェルを閉じる

hbase(main):014:0> exit

1.2.4. HBaseの停止

停止スクリプトを実行し、HBaseを停止します。

$ . /bin/stop-hbase.sh
stopping hbase ...............

1.2.5. 次にすべきこと

上記の手順は、実験とテストのみを目的としています。次に  セクション 2.の "コンフィギュレーション"  ここでは、HBaseのさまざまな動作モード、分散型HBaseの実行に必要なソフトウェア、およびその設定方法について説明します。

2. 設定方法

この章は、スロースタートの設定ガイドです。

HBaseには以下のようなニーズがあります。この章をよく読んで、すべてのニーズが満たされていることを確認してください。要件が満たされないと、不可解なエラーに遭遇したり、データが失われたりすることもあります。

HBaseは、Hadoopと同じ設定システムを使用しています。デプロイメントを設定するには、 conf/hbase-env.sh ファイル内の環境変数を編集します - この設定ファイル内のメイン起動スクリプトはクラスタを起動するために使用されます - そして、HBase のデフォルト設定を上書きするかのように XML ファイルに設定を追加し、HBase に使用するファイルシステム、ZooKeeper のフルロケーション[ ]を指示します。 1 ].

分散モードで実行する場合、HBaseの設定ファイルを編集した後、confディレクトリがクラスタの各ノードにコピーされていることを確認してください。hbaseは自動的に同期しません。を使用してください。 rsync .

[ 1 ] XMLを注意深く編集し、すべての要素を閉じることを確認します。また  xmllint  などで、編集後の文書が正しくフォーマットされていることを確認してください。

2.1. 基本条件

ここでは、必要なサービスや必要なシステム構成について説明します。

2.1.1 java

Hadoopと同様、HBaseにはOracle版の ジャバ6 . その問題のあるu18版以外は動作しますが、できれば最新のものを使ってください。

2.1. オペレーティングシステム

2.1.2.1. ssh

インストールされている必要があります ssh  は、その  sshd  Hadoopスクリプトが他のHadoopやHBaseプロセスをリモートで操作できるように、sshも起動しておく必要があります。sshはすべてのプロセス間で開いている必要があり、Googleで詳しく説明されているように、パスワードなしでログインできるようにします("ssh passwordless login")。

2.1.2.2. DNS

HBaseはIPアドレスを取得するためにローカルのホスト名を使用します。順方向DNSと逆方向DNSの両方が可能です。

マシンに複数のインターフェイスがある場合、HBase は hostname で指定されたプライマリインターフェイスを使用します。

これだけでは不十分な場合は  hbase.regionserver.dns.interface  を使用して、プライマリ・インターフェースを指定します。もちろん、設定ファイルはクラスタ全体で一貫している必要があり、各ホストは同じネットワーク・インターフェイスを使用します。

を設定する方法もあります。  hbase.regionserver.dns.nameserver を使用して、システムに付属するネームサーバーを使用する代わりに、ネームサーバーを指定することができます。

2.1.2.3. ループバックIP

HBase はループバック IP アドレスが 127.0.0.1 であることを想定しています。Ubuntuや他のいくつかのディストリビューションでは、例えば127.0.1.1がデフォルトとなり、これが問題を引き起こすことになります。

/etc/hosts  はこのような感じになっているはずです。

            127.0.0.1 localhost
            127.0.0.1 ubuntu.ubuntu-domain ubuntu


2.1.2.4. NTP

クラスタのクロックは基本的な整合性を確保する必要があります。わずかな不整合は許容範囲ですが、大きな不整合は奇妙な動作を引き起こす可能性があります。実行中  NTP  などで時刻を同期させてください。

問い合わせをしたり、変な障害が発生したら、システム時刻が正しいかどうか確認してみましょう

2.1.2.5.  
ulimit
 と 
nproc

HBaseはデータベースであるため、同時に多くのファイルハンドルを使用することになります。ほとんどのLinuxシステムで使われている1024というデフォルトの値では十分ではなく、結果として よくある質問 なぜ "java.io.IOException... が表示されるのでしょうか?(Too many open files)"がログに表示されるのですが? 例外が発生します。また、次のような例外が発生することもあります。

      2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Exception increateBlockOutputStream java.io.
      2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Abandoning block blk_-6935524980745310745_1391901
      

そこで、ファイルハンドルの最大制限を変更する必要があります。計算方法はおおよそ次の通りです。列のファミリーごとに最低でも1つのStoreFile(エリアが圧迫されている場合は5-6まで可能)。カラムファミリあたりの StoreFile の平均数と、リージョンサーバあたりのリージョンの平均数を掛け合わせる。例 例:スキーマが 3 つのカラムファミリ、カラムファミリごとに 3 つの StoreFile、リージョンサーバーごとに 100 のリージョンを持つと仮定すると、JVM は 3 * 3 * 100 = 900 のファイル記述子を開く(開いている jar ファイル、設定ファイルなどは含まれない)。

また、hbase ユーザーの  nproc を指定します。  OutOfMemoryError 例外 3 ] [ 4 ].

はっきり言って、この2つの設定はOSに対するもので、HBase自体に対するものではありません。よくある間違いは、HBaseが動作しているユーザーと、最大値を設定するユーザーが同じユーザーでないことです。HBaseが起動すると、ログの最初の行が正しいことを確認するためにulimit情報が表示されるようになりました。[ 5 ]

2.1.2.5.1. Ubuntuでのセットアップ ulimit

Ubuntuを使用している場合は、このように設定します。

ファイル内の  /etc/security/limits.conf  のような行を追加します。

hadoop - nofile 32768

を置くことができます。  hadoop  には、HBase と Hadoop を実行しているユーザーを指定します。2ユーザー使うなら2つ必要です。そしてnprocのハードリミットとソフトリミットで...みたいな。

hadoop soft/hard nproc 32000

.

で  /etc/pam.d/common-session  この行を追加します。

session required pam_limits.so

それ以外の場合は  /etc/security/limits.conf は有効になりません。

そして、ログアウトしてログインしなおすと、これらの設定が有効になります!

2.1.2.6. ウィンドウズ

HBaseはWindowsではあまりテストされていません。そのため、Windowsで実行することは推奨されません。

どうしても動かしたい場合は Cygwin  を作成し、unix環境を仮想化します。詳しくは  Windowsインストールガイド  . または  メーリングリストの検索 Windowsに関する最近のノートを探す

HBaseのデプロイメントには、Hadoopのバージョンの選択が重要です。次の表は、さまざまな HBase がサポートする Hadoop のバージョンに関する情報です。HBaseのバージョンに基づき、適切なHadoopのバージョンを選択する必要があります。バンドルされたHadoopディストリビューションの選択はありません。ApacheのHadoopディストリビューションを利用するか、以下のHadoopパブリッシャー製品を見てみてください。  http://wiki.apache.org/hadoop/Distributions%20and%20Commercial%20Support

表2.1. Hadoop バージョンサポート表

<テーブル <カラー <カラー <カラー HBase-0.92.x HBase-0.94.x HBase-0.96 Hadoop-0.20.205 S X X Hadoop-0.22.x S X X Hadoop-1.0.x S S S Hadoop-1.1.x NT S S Hadoop-0.23.x X S NT Hadoop-2.x X S S


<テーブル S=対応・テスト済み、対応 X = 非対応、非対応 NT=テストが十分でない

HBaseはHadoopに依存しているため、そのlibの下にHadoop jarファイルが同梱されています。このコンパニオンjarはスタンドアローンモードでのみ使用されます。分散モードでは、HadoopのバージョンはHBaseの下のバージョンと同じである必要があります。HBase の lib ディレクトリにある Hadoop jar ファイルを、実行している分散 Hadoop バージョンの jar ファイルに置き換えて、バージョンの不一致の問題を回避してください。クラスタ内のHBase下のjarファイルをすべて置き換えるようにしてください。Hadoopバージョンのミスマッチ問題の現れ方はさまざまですが、すべてハングアップしているように見えます。

2.1.3.1. Apache HBase 0.92と0.94

HBase 0.92 および 0.94 は Hadoop 0.20.205, 0.22.x, 1.0.x, 1.1.x で動作します。HBase 0.94 はさらに Hadoop-0.23.x および 2.x でも動作しますが、特定の maven プロファイルを使用してコードを再コンパイルする必要があるかもしれません(トップレベルの pom.xml を参照)。

2.1.3.2. Apache HBase 0.96

Apache HBase 0.96.0 は最低でも Apache Hadoop 1.x を必要としますが、hadoop-2.0 でも同様に実行できます。Apache HBase 0.96.xの時点では、最低でもApache Hadoop 1.0.xが必要です。0.20.205 や branch-0.20-append などの古い Hadoop では正常に動作しなくなりました。Hadoopをアップグレードできない場合は、Apache HBase 0.96.xに移行しないでください[ ]。 6

2.1.3.3. Hadoop バージョン 0.20.x - 1.x

HBase は、耐久性のある同期を実装した HDFS 上で実行されていない限り、データを失います。Hadoop 0.20.2, Hadoop 0.20.203.0, Hadoop 0.20.203 は使用しないでください。204.0 はこの属性を持っていません。現在、Hadoop のバージョン 0.20.205.x あるいはそれ以上のリリース -- これには hadoop-1.0.0 -- でのみ、動作する durable sync[. - 動作する durable sync[] があります。 7 ]. 同期機能は、クライアント側 -- hbase-site.xml -- とサーバー側 -- hdfs- site.xml の両方で dfs.support.append を true に設定して明示的に有効にする必要があります (HBase が必要とする同期機能は append コードパスのサブセットです)。

  <property> <name>dfs.support.append</name> <value>true</value> </property>          

この編集を行った後、クラスタを再起動する必要があります。hdfs-default.xmlのdfs.support.appendの設定に関する記述の中にある小さなコメントは無視しましょう。

2.1.3.4. Hadoopのセキュリティ

HBase は Hadoop 0.20.x で動作しているので、セキュリティ機能を使うことができます -- バージョン 0.20S と CDH3B3 の両方を使い、hadoop.jar を置き換えればですが。