包安装期间不应该配置 Oozie/Sqoop jar 位置吗?

Posted

技术标签:

【中文标题】包安装期间不应该配置 Oozie/Sqoop jar 位置吗?【英文标题】:Shouldn't Oozie/Sqoop jar location be configured during package installation? 【发布时间】:2016-04-05 16:49:10 【问题描述】:

我在 CentOS 6.7 中使用 HDP 2.4。

我已经用 Ambari 创建了集群,所以 Oozie 是由 Ambari 安装和配置的。

我在运行与 jar 文件位置相关的 Oozie/Sqoop 时遇到了两个错误。第一个关注postgresql-jdbc.jar,因为 Sqoop 作业是从 Postgres 增量导入的。我将postgresql-jdbc.jar 文件添加到HDFS 并在workflow.xml 中指向它:

<file>/user/hdfs/sqoop/postgresql-jdbc.jar</file>

它解决了这个问题。但第二个错误似乎与kite-data-mapreduce.jar 有关。但是,对这个文件做同样的事情:

<file>/user/hdfs/sqoop/kite-data-mapreduce.jar</file>

似乎没有解决问题:

失败的 Oozie 启动器,主类 [org.apache.oozie.action.hadoop.SqoopMain],main() 抛出异常, org/kitesdk/data/DatasetNotFoundException java.lang.NoClassDefFoundError: org/kitesdk/data/DatasetNotFoundException

这似乎很奇怪,这不是由 Ambari 自动配置的,而且当我们开始出错时,我们必须将 jar 文件复制到 HDFS 中。

这是正确的方法还是我错过了一些配置步骤?

【问题讨论】:

我认为您应该将这些 jars 添加到工作流基本路径的 lib 目录中。基本路径是存储工作流.xml 的目录。您需要创建此目录并存储您的工作流程所需的所有自定义 jar。它会将它们加载到类路径中。 @YoungHobbit,我使用了您所描述的lib 目录。结果是一样的。我看到 JAR 文件像以前一样被加载,但我仍然得到 org/kitesdk/data/DatasetNotFoundException。如果源表没有新列,则不会发生此异常。在这种情况下,oozie 作业按计划运行,而 sqoop 只是说它没有要导入的新行。但是当我向表中添加新行时,会发生此异常。这很奇怪,因为我可以直接运行 sqoop 作业(而不是通过 oozie)并且运行正常。 好的,我刚刚注意到实际上添加JAR后有变化。例外是org/kitesdk/data/mapreduce/DatasetKeyOutputFormat,在添加 JAR 文件后,它变成了org/kitesdk/data/DatasetNotFoundException,所以看来我走在了正确的轨道上。可能还需要一些其他的 JAR 文件。 我建议您在job.properties 文件中使用属性oozie.use.system.libpath=true。然后只需要添加自定义jar到lib目录,所有sqoop相关的jar都会从/user/oozie/share/lib/lib_/sqoop/.jar添加 如果您使用上述libpath 属性,那么您不应该复制罐子。也不要将任何 jar 复制到 oozie 共享库中。将您的工作流特定 jar 复制到工作流应用程序路径的 lib 目录中。 【参考方案1】:

这是由于类路径中缺少 jars 而发生的。我建议您在job.properties 文件中使用属性oozie.use.system.libpath=true。所有与 sqoop 相关的 jar 都将自动添加到类路径中。然后只在工作流应用路径的lib目录下添加你需要的自定义jar,所有sqoop相关的jar都会从/user/oozie/share/lib/lib_&lt;timestamp&gt;/sqoop/*.jar添加。

【讨论】:

以上是关于包安装期间不应该配置 Oozie/Sqoop jar 位置吗?的主要内容,如果未能解决你的问题,请参考以下文章

Oozie Sqoop 作业 - 无法恢复作业

oozie sqoop 操作导入失败

hue/ oozie/ sqoop/ kafka/ zookeeper/ flume 简介及cdh安装简介

Oozie sqoop 任务错误:无法运行程序“hive”:错误=2 没有这样的文件或目录

oozie sqoop 动作具有 --map-column-java

在hue 使用oozie sqoop 从mysql 导入hive 失败