【问题标题】:Shouldn't Oozie/Sqoop jar location be configured during package installation?包安装期间不应该配置 Oozie/Sqoop jar 位置吗?
【发布时间】: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 目录中。

标签: hadoop oozie sqoop hortonworks-data-platform ambari


【解决方案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添加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多