【问题标题】:How to get notified when there is a file created in hdfs directory在 hdfs 目录中创建文件时如何获得通知
【发布时间】:2020-02-09 06:44:52
【问题描述】:

我有一个 hdfs 目录,文件将在其中定期创建。当在其子目录中创建文件时,我需要得到通知,以便我可以开始从该 hdfs 位置读取文件并将内容发送到 kafka 主题。我发现这可以使用 HDFS iNotify 来完成。但也有一些缺点,例如它不是 hdfs 目录,而是在 hdfs 中的任何位置创建文件时发出通知。它捕获在 hdfs 中发生的所有事件。

public class HdfsINotifyExample {

public static void main(String[] args) throws IOException, InterruptedException, MissingEventsException {

    long lastReadTxid = 0;

    if (args.length > 1) {
        lastReadTxid = Long.parseLong(args[1]);
    }

    System.out.println("lastReadTxid = " + lastReadTxid);

    HdfsAdmin admin = new HdfsAdmin(URI.create(args[0]), new Configuration());

    DFSInotifyEventInputStream eventStream = admin.getInotifyEventStream(lastReadTxid);

    while (true) {
        EventBatch batch = eventStream.take();
        System.out.println("TxId = " + batch.getTxid());

        for (Event event : batch.getEvents()) {
            System.out.println("event type = " + event.getEventType());
            switch (event.getEventType()) {
            case CREATE:
                CreateEvent createEvent = (CreateEvent) event;
                System.out.println("  path = " + createEvent.getPath());
                System.out.println("  owner = " + createEvent.getOwnerName());
                System.out.println("  ctime = " + createEvent.getCtime());
                break;
            default:
                break;
            }
          }
       }
      }
     }

除了监视所有事件类型之外,有没有更好的方法来仅在特定 hdfs 目录中查找创建文件事件。

【问题讨论】:

  • 你必须用 batch.getEvents()) 查看所有事件

标签: java hadoop hdfs


【解决方案1】:

您可以使用 HSFAdmin API 并监控 Event.create (hdfs.inotify.event.type) 以及要观看的 HDFS 路径 (hdfs.inotify.event.path)

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-hadoop-nar/1.5.0/org.apache.nifi.processors.hadoop.inotify.GetHDFSEvents/

【讨论】:

  • 问题是使用那个api,而不是使用Nifi
猜你喜欢
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
相关资源
最近更新 更多