无法 运行 在 HUE oozie 中激发作业。例外:"datanucleus-api-jdo-3.2.1.jar does not exist"
Unable to run spark job in HUE oozie. Exception: "datanucleus-api-jdo-3.2.1.jar does not exist"
我想知道的是how/wherespark挑选需要的jar。
文件:/mnt/md0/yarn/nm/usercache/kylin/appcache/application_1468506830246_161908/container_1468506830246_161908_01_000001/datanucleus-api-jdo-3.2.1.jar不存在。
<spark-opts>
--num-executors 30
--executor-memory 18g
--executor-cores 15
--driver-memory 2g
--files hdfs:///jobs/kylin/hive-site.xml
--jars datanucleus-api-jdo-3.2.1.jar,datanucleus-rdbms-3.2.1.jar,datanucleus-core-3.2.2.jar
--conf spark.shuffle.manager=tungsten-sort
--conf spark.shuffle.consolidateFiles=true
--conf spark.yarn.executor.memoryOverhead=3072
--conf spark.shuffle.memoryFraction=0.7
--conf spark.storage.memoryFraction=0.05
--conf spark.spot.instances=30
</spark-opts>
我们需要提供 jars 的绝对路径,否则会失败。
请查看 spark 文档中的以下详细信息,了解提供 --jar 的不同方式。
使用 spark-submit 时,应用程序 jar 以及 --jars 选项中包含的任何 jar 将自动传输到集群。在 --jars 之后提供的 URLs 必须用逗号分隔。该列表包含在驱动程序和执行程序类路径中。目录扩展不适用于 --jars.
Spark 使用以下 URL 方案来允许传播 jar 的不同策略:
file: - 绝对路径和 file:/ URI 由驱动程序的 HTTP 文件服务器提供,每个执行程序从驱动程序 HTTP 服务器拉取文件。
hdfs:, http:, https:, ftp: - 这些按预期从 URI 中下载文件和 JAR
local: - 以 local:/ 开头的 URI 应作为本地文件存在于每个工作节点上。这意味着不会产生网络 IO,并且适用于推送给每个工作人员或通过 NFS、GlusterFS 等共享的大型 files/JARs
请注意,JAR 和文件会复制到执行程序节点上每个 SparkContext 的工作目录中。随着时间的推移,这会耗尽大量的 space 并且需要清理。使用 YARN,清理是自动处理的,而使用 Spark standalone,可以使用 spark.worker.cleanup.appDataTtl 属性.
配置自动清理
用户还可以通过使用 --packages 提供以逗号分隔的 Maven 坐标列表来包含任何其他依赖项。使用此命令时将处理所有传递依赖项。可以使用标志 --repositories 以逗号分隔的方式添加其他存储库(或 SBT 中的解析器)。这些命令可以与 pyspark、spark-shell 和 spark-submit 一起使用以包含 Spark 包。
对于 Python,等效的 --py-files 选项可用于将 .egg、.zip 和 .py 库分发给执行程序。
请查看link了解更多信息。
我想知道的是how/wherespark挑选需要的jar。
文件:/mnt/md0/yarn/nm/usercache/kylin/appcache/application_1468506830246_161908/container_1468506830246_161908_01_000001/datanucleus-api-jdo-3.2.1.jar不存在。
<spark-opts>
--num-executors 30
--executor-memory 18g
--executor-cores 15
--driver-memory 2g
--files hdfs:///jobs/kylin/hive-site.xml
--jars datanucleus-api-jdo-3.2.1.jar,datanucleus-rdbms-3.2.1.jar,datanucleus-core-3.2.2.jar
--conf spark.shuffle.manager=tungsten-sort
--conf spark.shuffle.consolidateFiles=true
--conf spark.yarn.executor.memoryOverhead=3072
--conf spark.shuffle.memoryFraction=0.7
--conf spark.storage.memoryFraction=0.05
--conf spark.spot.instances=30
</spark-opts>
我们需要提供 jars 的绝对路径,否则会失败。
请查看 spark 文档中的以下详细信息,了解提供 --jar 的不同方式。
使用 spark-submit 时,应用程序 jar 以及 --jars 选项中包含的任何 jar 将自动传输到集群。在 --jars 之后提供的 URLs 必须用逗号分隔。该列表包含在驱动程序和执行程序类路径中。目录扩展不适用于 --jars.
Spark 使用以下 URL 方案来允许传播 jar 的不同策略:
file: - 绝对路径和 file:/ URI 由驱动程序的 HTTP 文件服务器提供,每个执行程序从驱动程序 HTTP 服务器拉取文件。
hdfs:, http:, https:, ftp: - 这些按预期从 URI 中下载文件和 JAR
local: - 以 local:/ 开头的 URI 应作为本地文件存在于每个工作节点上。这意味着不会产生网络 IO,并且适用于推送给每个工作人员或通过 NFS、GlusterFS 等共享的大型 files/JARs
请注意,JAR 和文件会复制到执行程序节点上每个 SparkContext 的工作目录中。随着时间的推移,这会耗尽大量的 space 并且需要清理。使用 YARN,清理是自动处理的,而使用 Spark standalone,可以使用 spark.worker.cleanup.appDataTtl 属性.
配置自动清理用户还可以通过使用 --packages 提供以逗号分隔的 Maven 坐标列表来包含任何其他依赖项。使用此命令时将处理所有传递依赖项。可以使用标志 --repositories 以逗号分隔的方式添加其他存储库(或 SBT 中的解析器)。这些命令可以与 pyspark、spark-shell 和 spark-submit 一起使用以包含 Spark 包。
对于 Python,等效的 --py-files 选项可用于将 .egg、.zip 和 .py 库分发给执行程序。
请查看link了解更多信息。