我们正在从 CDH3 迁移到 CDH4,作为迁移的一部分,我们正在迁移我们在 CDH3 上的所有工作。我们注意到了一个关键问题,当通过 oozie 执行工作流以执行内部调用 hive 查询 (hive -e {query}) 的 python 脚本时,在此 hive 查询中,我们使用 add 添加自定义 jar jar {LOCAL PATH FOR JAR},并为自定义 udf 创建了一个临时函数。直到这里看起来还不错。但是,当查询开始使用自定义 udf 函数执行时,分布式缓存失败,File Not Found Exception 正在 HDFS 路径中查找 jar 而不是在本地路径中查找。
我不确定我是否在这里遗漏了一些配置。
执行跟踪:
警告:不推荐使用 org.apache.hadoop.metrics.jvm.EventCounter。请在所有 log4j.properties 文件中使用 org.apache.hadoop.log.metrics.EventCounter。执行日志位于:/tmp/yarn/yarn_20131107020505_79b41443-b9f4-4d36-a0eb-4f0d79cd3ce9.log java.io.FileNotFoundException:文件不存在:hdfs://aa.bb.com:8020/opt/nfsmount/mypath/custom .jar 在 org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:824) 在 org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:288) 在 org.apache.hadoop.mapreduce org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager 中的 .filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:224)。
对此的任何帮助都将受到高度赞赏。
问候, GHK。