9

HDFSでファイル ウォッチャーを使用できますか?

シナリオ: ファイルが継続的に HDFS に読み込まれます。ファイル数がしきい値 (ファイル数またはファイル サイズ) に達したら、Spark ジョブを開始したいと考えています。

これを実現するために HDFS にファイル ウォッチャーを実装することは可能ですか。はいの場合、誰でもそれを行う方法を提案できますか?利用可能なさまざまなオプションは何ですか? 飼育係またはウージーはそれを行うことができますか?

どんな助けでも大歓迎です.Thanks.

4

3 に答える 3

14

DFSInotifyEventInputStreamこれに使用できるHadoop 2.6 が導入されました。からインスタンスを取得し、 orをHdfsAdmin呼び出してすべてのイベントを取得できます。イベントの種類には、探しているものをカバーする削除、追加、および作成が含まれます。.take().poll()

これが基本的な例です。hdfs管理インターフェイスには HDFS ルートが必要なため、必ずユーザーとして実行してください。

public static void main( String[] args ) throws IOException, InterruptedException, MissingEventsException
{
    HdfsAdmin admin = new HdfsAdmin( URI.create( args[0] ), new Configuration() );
    DFSInotifyEventInputStream eventStream = admin.getInotifyEventStream();
    while( true ) {
        EventBatch events = eventStream.take();
        for( Event event : events.getEvents() ) {
            System.out.println( "event type = " + event.getEventType() );
            switch( event.getEventType() ) {
                case CREATE:
                    CreateEvent createEvent = (CreateEvent) event;
                    System.out.println( "  path = " + createEvent.getPath() );
                    break;
                default:
                    break;
            }
        }
    }
}

詳細については、次のブログ記事を参照してください。

http://johnjianfang.blogspot.com/2015/03/hdfs-6634-inotify-in-hdfs.html?m=1

于 2015-05-01T17:55:56.913 に答える