首先准备1个jar
然后保证他丢到服务器,能用spark-submit /sparkTest.jar跑。
不会打包spark的可参考:linux上spark运行scala的jar包_我要用代码向我喜欢的女孩表白的博客-CSDN博客
首先你得有oozie和hue,安装好了,才行
下面是jar在hue的oozie中的应用
切换文档为操作action
将那个星星,也就是spark程序,托过来
然后上传你的spark.jar到hdfs上,因为他只能读取hdfs的jar
打开一台机器
hadoop fs -mkdir /sparkNews
hadoop fs -put /sparkTest.jar /sparkNews
其中/sparkTest.jar是我本地jar包的路径
开启权限
hadoop fs -chmod -R 777 /sparkNews
选择你的jar位置
然后保存
点击提交,播放的那个标识,三角形
提交,点击试运行,出现问题
不得不说网上的菜雕,写文章真是太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