0

データを集約し、それにアクセスするための REST API を公開する 1 つのサードパーティ サービスを使用しています。

これらのデータを取得して、ローカルの HBase クラスターにロードしようとしています。そのサードパーティ サービスからデータを取得して処理し、HBase クライアント API を使用してクラスターにロードする Java アプリケーションを作成しました。このアプリケーションの場合、手動で実行する必要があり、大量のデータをロードするのに HBase クライアント API がどれだけ効率的かもわかりません。

RDBMS からの一括転送を行うために、Sqoop と Cascading-dbmigrate に出会いました。私の質問は、REST API から大量のデータ転送を行う同様のツールはありますか? また、定期的にデータを同期します。

ありがとう ArunDhaJ http://arundhaj.com

4

1 に答える 1

3

REST API は RDBMS のように標準化されていません。私の知る限り、API から HBase に魔法のようにロードできるツールはありません。何かを構築する必要があります。この種の HBase への負荷の高い読み込みの場合、HBase 一括読み込みを使用することをお勧めします。これにより、HBase API を単純に使用するよりも CPU とネットワーク リソースの使用量が少なくなります。これは、いくつかの手順で実行できます。

  1. HFileOutputFormatasを使用して Map/Reduce ジョブでデータを準備しますOutputFormat。これにより、ジョブの出力がHBase にロードするための非常に効率的な形式であるHFilesとして書き込まれます。次のようにできます。

    job.setOutputFormatClass(HFileOutputFormat.class);
    HFileOutputFormat.setOutputPath(job, path);
    
  2. コマンド ライン ツールcompletebulkloadを使用してデータをロードすると、すべてが処理されるため、リージョン サーバーについて心配する必要さえありません。これは、次のように手動で行うことができます。

    hadoop jar hbase-VERSION.jar completebulkload [-c /path/to/hbase/config/hbase-site.xml] /user/todd/myoutput mytable
    

    使用すると、このステップは自動的に実行されると思いますHFileOutputFormatので、このステップを自分で行う必要さえないかもしれません。

プロセスの詳細はこちら

すべてを結び付けるために必要なことは、API からデータをフェッチして HDFS にロードするプログラムを作成することだけです。

于 2013-01-17T05:10:31.593 に答える