パブリッシュ サブスクライブ モデルに基づく通知システムを実装して、データが HDFS に到着/ロードされたときにデータの可用性について通知します。これを探す方法が見つかりませんでした。これを行うために使用できる HDFS API はありますか、または HDFS に書き込まれた新しいデータの情報を取得するにはどのような方法を使用すればよいですか? 私は Hadoop v2.0.2 を使用していますが、HCatalog を使用したくありません。これを行うために独自のツールを実装したいと考えています。
2 に答える
あなたが探しているのは ですOozie Coordinator
。
HDFS
はファイル システムであるため、ファイルの可用性を確認するには、HDFS の上に何かを構築する必要があります。HBase
トリガーされたプロシージャであるコプロセッサがあります。ただし、HBase テーブルでのみ使用できます。そのため、HDFS でのデータ可用性の検出には使用できません。
Oozieは、Hadoop ジョブを管理するためのワークフロー スケジューラ システムです。Oozie コーディネータージョブは、時間 (頻度) とデータの可用性によってトリガーされる繰り返しの Oozie ワークフロー ジョブです。また、そこから他のプログラムを実行することもできます:
Oozie は Hadoop スタックの残りの部分と統合されており、すぐに使用できるいくつかのタイプの Hadoop ジョブ (Java map-reduce、ストリーミング map-reduce、Pig、Hive、Sqoop、Distcp など) とシステム固有のジョブ ( Java プログラムおよびシェル スクリプト)。
そのため、通知システムにもファイル可用性トリガーを使用できます。
HDFS を使用している場合は、HBase に必要な機能があるため、HBase を確認することをお勧めします。HBase では、データがテーブルに書き込まれるたびに少しのコードを実行する、基本的に MySQL トリガーと同等の動作をするプリプット (またはポストプット) コプロセッサーを作成できます。
HBase がユース ケースに合わず、HDFS を使用する必要がある場合、私の知る限り、同様のトリガーはありません。HDFS API を独自のコードでラップして、適切な状況でデータがファイル システムに書き込まれるたびに通知を実行することができます。または、変更のために HDFS をポーリングすることもできます (これは醜い代替手段のように聞こえます)...
それが役立つことを願っています