【问题标题】:NiFi ListHDFS cannot find directory, FileNotFoundExceptionNiFi ListHDFS 找不到目录,FileNotFoundException
【发布时间】:2018-05-09 08:13:03
【问题描述】:

在 NiFi 中有listHDFS->moveHDFS 形式的管道,尝试运行管道我们会看到错误日志

13:29:21 HSTDEBUG01631000-d439-1c41-9715-e0601d3b971c
ListHDFS[id=01631000-d439-1c41-9715-e0601d3b971c] Returning CLUSTER State: StandardStateMap[version=43, values={emitted.timestamp=1525468790000, listing.timestamp=1525468790000}]
13:29:21 HSTDEBUG01631000-d439-1c41-9715-e0601d3b971c
ListHDFS[id=01631000-d439-1c41-9715-e0601d3b971c] Found new-style state stored, latesting timestamp emitted = 1525468790000, latest listed = 1525468790000
13:29:21 HSTDEBUG01631000-d439-1c41-9715-e0601d3b971c
ListHDFS[id=01631000-d439-1c41-9715-e0601d3b971c] Fetching listing for /hdfs/path/to/dir
13:29:21 HSTERROR01631000-d439-1c41-9715-e0601d3b971c
ListHDFS[id=01631000-d439-1c41-9715-e0601d3b971c] Failed to perform listing of HDFS due to File /hdfs/path/to/dir does not exist: java.io.FileNotFoundException: File /hdfs/path/to/dir does not exist

将 listHDFS 路径更改为 /tmp 似乎运行正常,因此让我认为问题在于我对我要列出的目录的权限。但是,通过设置bootstrap.propertiesrun.as=myuser 并重新启动(参见https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#bootstrap_properties)将NiFi 用户更改为可以访问该目录的用户(例如hadoop fs -ls /hdfs/path/to/dir)似乎仍然会为目录产生相同的问题。文字目录。正在使用但不起作用的字符串是:

“/etl/ucera_internal/datagov_example/raw-ingest-tracking/version-1/ingest”

有人知道这里发生了什么吗?谢谢。

** 注意:我正在访问的 hadoop 集群没有启用 kerberos(它是一个安全的MapR hadoop 集群)。

更新:似乎mapr hadoop 实现非常不同,需要特殊步骤才能让 NiFi 正常工作(请参阅https://community.mapr.com/thread/10484http://hariology.com/integrating-mapr-fs-and-apache-nifi/)。可能有一段时间没有机会解决这个问题,看看是否仍然有效(因为某些要求已经改变),所以我在这里为其他可能同时遇到这个问题的人提供链接。

【问题讨论】:

  • 我建议更改 HDFS 目录的权限以包含 nifi 用户而不是更改 NiFi run.as 用户,因为许多其他条件取决于操作系统用户 NiFi 正在运行。
  • 一个简单的问题。您使用的core-site.xmlhdfs-site.xml 是否正确?使用/tmp查看文件是否和使用hdfs dfs -ls /tmp查看文件一样?

标签: apache-nifi


【解决方案1】:

您能否确保您输入了正确的路径,并且 目录 需要存在于 HDFS 中。

list hdfs processor 似乎无法找到您在目录属性中配置的目录,并且日志没有显示任何权限被拒绝的问题。

如果日志显示权限被拒绝,那么您可以在 bootstrap.conf 中更改 nifi 运行用户和 更改 nifi 属性后,NiFi 需要重新启动以应用更改(或)更改 NiFi 可以访问的目录的权限。

【讨论】:

  • 是的,路径是正确的(使用相同的路径,可以成功运行hadoop fs -ls /path/to/dir命令)。尝试更改权限的唯一原因是因为即使控制台中的路径正常,我也无法列出似乎很奇怪(并且是 NiFi 的新手,所以不确定 FileNotExists 错误到底暗示了什么),但我实际上唯一的日志看看那些张贴的(他们只是重复)。
  • FileNotExists 错误意味着当我们试图访问 HDFS 处理器中不存在的目录时会抛出 FileNotExists 错误。出于测试目的,使用具有相同目录的 GetHDFS 处理器并将 Keep sourcefile property 更改为 true
  • 使用 getHDFS 处理器进行测试,我得到了类似的 WARNING 错误 GetHDFS[id=2de35272-0163-1000-738d-766b47f6d3f0] The directory /hdfs/path/to/dir does not exist。然而剪切和粘贴该目录。字符串到命令hadoop fs -ls <paste here> 仍然有效。甚至尝试在目录中使用 glob 模式。处理器的字符串(即/hdfs/path/to/dir/*),但仍然无法正常工作。这很奇怪。
  • 您能否检查一下您的目录值是否有任何空格之前/之后或换行符?因为如果你有空格仍然 hadoop fs -ls 命令 可以工作并显示文件
  • 是的,字符串两端没有空格,字面意思是“/etl/ucera_internal/datagov_example/raw-ingest-tracking/version-1/ingest”。感谢您的调试检查,我知道这是一个奇怪的问题。
猜你喜欢
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多