2016-08-17 10 views
1

Dockerコンテナを使用してHBaseを使用するWebサービスの開発環境の設定を自動化しようとしています。私がしたいのは、コンテナが立ち上がってHBaseが起動したら、私たちのスキーマをHBaseに適用することです。HBaseマスターDockerコンテナの初期化が完了したらスクリプトを自動的に実行

スキーマをHBaseにコピーしてすぐに./hbase shell経由で適用するスクリプトを呼び出そうとすると、マスターノードが初期化されていないというエラーが表示されます(これをコンテナで実行するとhbase- cliプロンプトが表示されますが、最初に実行すると自動的に復帰します)。

私はwait-for-itのようなツールを見てきましたが、マスターノードが初期化されたときに表示されるヒットするホスト/ポートの組み合わせを見つけることができません。

私のHBaseコンテナをポーリングしてマスターノードが初期化されたときに、どのようにしてログを見ずにスキーマを適用できるのか、コンテナ自体でコマンドを手動で実行することはできますか?

+0

'' 'master.HMaster:Master has initialization completed'''というログが現れるまで、hbaseログの最後の100行をチェックするスクリプトはどうでしょうか? –

答えて

0

まず、これは厳しい問題です。ここにスプライスマシン(オープンソース)で我々のデザインは、それが助けてくれることを願っています...

(1)これは、スキーマの作成のための単一のエントリポイントです。

(2)zookeeperでスキーマ初期化フラグが見つからない場合は、リージョンサーバーから呼び出して、マスター(Create Specific InitTableなど)を呼び出します。

(3)MasterObserverはpreCreateTableをオーバーライドし、そこにスキーマを作成するスレッドをブロックする(つまり、リージョンサーバーからの他のリクエストをブロックする)。ディクショナリが初期化される(スキーマが作成される)まで、JDBC/ODBCポートを必要とせず、作成されたテーブルに対してリージョンサーバーを使用できるようにしたいと考えました。

(4)作成が終了したら、MasterObserverに動物園の動物園に初期化フラグを書き込ませます。それはすぐにサーバをバウンス時に発生する可能性が部分的に作成する場合などを扱うので、これは非常に重要です

コード例:

MasterObserverコードスニペット

@Override 
    public void preCreateTable(ObserverContext<MasterCoprocessorEnvironment> ctx, HTableDescriptor desc, HRegionInfo[] regions) throws IOException { 
     SpliceLogUtils.info(LOG, "preCreateTable %s", Bytes.toString(desc.getTableName().getName())); 
     if (Bytes.equals(desc.getTableName().getName(), INIT_TABLE)) { 
      switch(manager.getState()){ 
       case NOT_STARTED: 
        boot(); 
       case BOOTING_ENGINE: 
       case BOOTING_GENERAL_SERVICES: 
       case BOOTING_SERVER: 
        throw new PleaseHoldException("Please Hold - Starting"); 
       case RUNNING: 
        throw new DoNotRetryIOException("Success"); 
       case STARTUP_FAILED: 
       case SHUTTING_DOWN: 
       case SHUTDOWN: 
        throw new IllegalStateException("Startup failed"); 
      } 
     } 
    } 

をチェックアウトしてお気軽にRegionLifecycleObserverとSpliceMasterObserverをgithubアカウントで使用します。

https://github.com/splicemachine/spliceengine

幸運。

関連する問題