Dan*_*ill 5 cloudera hue oozie hadoop-yarn apache-spark
我在Scala中编写了一个使用Spark的应用程序.
该应用程序包含两个模块 - App
包含具有不同逻辑的类的Env
模块,以及包含环境和系统初始化代码的模块,以及实用程序功能.
入口点位于Env
初始化之后,它在App
(根据args
,使用Class.forName
)中创建一个类并执行逻辑.
模块被导出到2个不同的JAR(即env.jar
和app.jar
).
当我在本地运行应用程序时,它执行得很好.下一步是将应用程序部署到我的服务器.我使用Cloudera的CDH 5.4.
我使用Hue使用Spark任务创建一个新的Oozie工作流,其中包含以下参数:
yarn
cluster
myApp
lib/env.jar,lib/app.jar
env.Main
在Env
模块中)app.AggBlock1Task
然后我将2个JAR放在lib
工作流文件夹(/user/hue/oozie/workspaces/hue-oozie-1439807802.48
)中的文件夹中.
当我运行工作流时,它会抛出一个FileNotFoundException
并且应用程序不会执行:
java.io.FileNotFoundException: File file:/cloudera/yarn/nm/usercache/danny/appcache/application_1439823995861_0029/container_1439823995861_0029_01_000001/lib/app.jar,lib/env.jar does not exist
Run Code Online (Sandbox Code Playgroud)
然而,当我离开星火主和模式参数为空,这一切工作正常,但是当我检查spark.master
编程设置为local[*]
,而不是yarn
.此外,在观察日志时,我在Oozie Spark动作配置下遇到了这个:
--master
null
--name
myApp
--class
env.Main
--verbose
lib/env.jar,lib/app.jar
app.AggBlock1Task
Run Code Online (Sandbox Code Playgroud)
我假设我做得不对 - 没有设置Spark master和mode参数并且运行应用程序spark.master
设置为local[*]
.据我所知,SparkConf
在应用程序中创建一个对象应该将spark.master
属性设置为我在Oozie中指定的任何属性(在这种情况下yarn
),但是当我这样做时它只是不起作用..
有什么我做错了或错过了吗?
任何帮助都感激不尽!
我通过将两个 JAR 放入用户目录/user/danny/app/
并将Jar/py files
参数指定为 来解决该问题${nameNode}/user/danny/app/env.jar
。运行它会导致ClassNotFoundException
抛出 a ,即使 JAR 位于 HDFS 中的同一文件夹中。要解决这个问题,我必须转到设置并将以下内容添加到选项列表中:--jars ${nameNode}/user/danny/app/app.jar
。这样App
模块也被引用并且应用程序成功运行。
归档时间: |
|
查看次数: |
1811 次 |
最近记录: |