首先准备1个jar
然后保证他丢到服务器,能用spark-submit /sparkTest.jar跑。
不会打包spark的可参考:linux上spark运行scala的jar包_我要用代码向我喜欢的女孩表白的博客-CSDN博客
首先你得有oozie和hue,安装好了,才行



然后上传你的spark.jar到hdfs上,因为他只能读取hdfs的jar
打开一台机器
hadoop fs -mkdir /sparkNews
hadoop fs -put /sparkTest.jar /sparkNews
其中/sparkTest.jar是我本地jar包的路径
开启权限
hadoop fs -chmod -R 777 /sparkNews


然后保存


点击提交,播放的那个标识,三角形

提交,点击试运行,出现问题

不得不说网上的菜雕,写文章真是太shift了,我还根据下面安装了半天?
然后我CDH直接搞定

简书 这篇文章是真好,csdn的文章鱼龙混杂,鱼目混珠。
安装完成之后,直接就有lib

之后,进行中,一直卡在百分之50,打开oozie日志发现

没有log4j2文件,但是我有log4j.xml,难道还得加1个log4j2?,我直接启动spark都没有这种情况。我加上试一下

先在集群上直接测试,丢到oozie上测试
然后点击运行:发现一直卡在50%

去oozie查看日志
点击oozie选择oozie web ui

先看这条running的,然后点击橙色,跳转到日志界面

拉到最下面查看日志,点他,和点logs,这2个id的,logs都要看

他说我没有设置hadoop的环境变量

添加环境变量(分发到所有机器)
vi /etc/profile
export HADOOP_HOME=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
source /etc/profile(所有机器)
或者在代码使用
System.setProperty("HADOOP_USER_NAME","root")
System.setProperty("HADOOP_HOME","/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop")
配置的时候一定要
Files 和jar/py.name保持一致


与代码中要执行的类,保持一致

点击设置:

AppName改成代码里的名称


默认的客户端模式,我配置了集群,所以写集群模式

集群模式定义之前,spark一定要开启集群模式


如何使用Hue创建Spark2的Oozie工作流_worldchinalee的博客-CSDN博客_hue oozie spark
以上是使用Spark2
如果用cluster模式,代码中不能有master。因为cluster模式,是将driver提交到其中一台机器上执行,然后交给集群执行
client模式,是本地driver交给集群执行,网速好的情况,当然使用client模式
通过命令"hadoop fs -ls /user"命令查看文件目录,确实不存在/user/oozie路径,说明oozie的sharelib没有放到hdfs上,我们现在要做的就是将oozie的share lib放到Hadoop的对应目录中
hadoop fs -mkdir -p /user/oozie/share/lib
没有,我就创建一个空的呗,然后再次运行
org.apache.oozie.action.ActionExecutorException: Could not locate Oozie sharelib
参考:Oozie 报错的解决方法_qqliang1314的博客-CSDN博客t
他说在做一个本地映射,找到oozie的lib目录
/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/oozie
解决参考:安装Oozie共享库并添加Spark2_gmHappy的博客-CSDN博客