Dolphinscheduler调度spark任务踩坑记录

1、关于spark调度的worker部署

我在测试Dolphinscheduler时采用的是集群模式,两台机器部署master,两台机器部署worker,而hadoop和spark则是在其他的机器上部署的。在配置dolphinscheduler_env.sh文件时对如何设置spark环境地址就很疑惑。测试调度时果然第一个问题就是找不到spark-submit文件

command: line 5: /bin/spark-submit: No such file or directory

通过日志查看调度过程就会很清楚的看到,DS需要通过dolphinscheduler_env.sh文件里配置的SPARK_HOME1去找spark-submit脚本。而在不同的服务器上它是找不到该路径的。
在这里插入图片描述
所以问题的解决我想到两个方案:
1、把spark的安装包拿到worker下,但这又可能涉及到hadoop的yarn等配置。
2、在spark client的部署机器上再部署一个Dolphinscheduler worker,这样只用考虑 DS本身的配置即可。
我最后选择了方案二。
这里除了要把worker节点的安装文件拷贝到spark client的机器上外,还要注意按照安装中的相关步骤:

  • 创建和其他节点相同的用户,例如dolphinscheduler
  • 将DS安装目录授权给dolphinscheduler用户
  • 修改各个节点的的/etc/hosts文件
  • 创建免密
  • 修改每个DS节点的dolphinscheduler/conf/common.properties文件配置
  • 根据配置文件创建相应的目录,并授权,如/tmp/dolphinscheduler目录
  • 重新配置该worker节点的dolphinscheduler_env.sh文件,添加SPARK_HOME路径。
  • 重启集群。

2、spark-submit执行权限的问题

在任务提交执行的过程中,我的spark测试任务还涉及到对hdfs的操作,所以运行的租户为拥有hdfs权限的bigdata。
运行spark失败,提示:

/opt/soft/spark/bin/spark-submit: Permission denied

开始以为是选择的租户不对,但是想了下bigdata和hadoop部署在一起的,而且bidata用户也有spark权限,显然不是用户的问题。那就应该想到spark-submit是执行权限,所以要赋予用户excute权限。

  • chmod 755 spark

3、明明spark任务执行成功,但是DS界面还是显示失败

运行过程中,发现我的spark任务已经把处理后的文件写入HDFS目录,符合我的任务逻辑。查看日志,显示任务是成功的,但是还是有一个error:

[ERROR] 2021-11-15 16:16:26.012  - [taskAppId=TASK-3-43-72]:[418] - yarn applications: application_1636962361310_0001 , query status failed, exception:{}
java.lang.Exception: yarn application url generation failed
	at org.apache.dolphinscheduler.common.utils.HadoopUtils.getApplicationUrl(HadoopUtils.java:208)
	at org.apache.dolphinscheduler.common.utils.HadoopUtils.getApplicationStatus(HadoopUtils.java:418)
	at org.apache.dolphinscheduler.server.worker.task.AbstractCommandExecutor.isSuccessOfYarnState(AbstractCommandExecutor.java:404)

在这里插入图片描述
这个报错可以看到是DS需要去一个yarn的路径下查询application的状态,拿到这个状态后展示执行结果,但是没有拿到,显然我们就要去看他去哪里拿,能不能配置这个地址。
我查看源码,找到HadoopUtils.getApplicationUrl这个方法
在这里插入图片描述
appaddress需要获取一个yarn.application.status.address的配置参数
在这里插入图片描述在这里插入图片描述
在源码里找到这个默认配置,虽然它说HA模式保留默认值即可,但是注意我的yarn不是安装在ds1上的,所以这里要修改成自己yarn地址。
将该参数配置到调度spark的worker节点 /opt/soft/dolphinscheduler/conf/common.properties文件

# if resourcemanager HA is enabled or not use resourcemanager, please keep the default value; If resourcemanager is single, you only need to replace ds1 to actual resourcemanager hostname
yarn.application.status.address=http://ds1:%s/ws/v1/cluster/apps/%s
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Apache DolphinScheduler是一个新一代分布式大数据工作流任务调度系统,致力于“解决大数据任务之间错综复杂的依赖关系,整个数据处理开箱即用”。它以 DAG(有向无环图) 的方式将任务连接起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及 Kill任务等操作。目前已经有像IBM、腾讯、美团、360等400多家公司生产上使用。 调度系统现在市面上的调度系统那么多,比如老牌的Airflow, Oozie,Kettle,xxl-job ,Spring Batch等等, 为什么要选DolphinSchedulerDolphinScheduler 的定位是大数据工作流调度。通过把大数据和工作流做了重点标注. 从而可以知道DolphinScheduler的定位是针对于大数据体系。 DolphinScheduler是非常强大的大数据调度工具,有以下一些特点:1、通过拖拽以DAG 图的方式将 Task 按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态;2、支持丰富的任务类型;3、支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill 任务等操作;4、支持工作流全局参数及节点自定义参数设置;5、支持集群HA,通过 Zookeeper实现 Master 集群和 Worker 集群去中心化;6、支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计;7、支持补数,并行或串行回填数据。课程会带大家构建DolphinScheduler大数据调度平台,实战讲解多种任务调度配置,会基于案例讲解DolphinScheduler使用,让大家在实战中掌握DolphinScheduler。 DolphinScheduler 发展很快 很多公司调度都切换到了DolphinScheduler,掌握DolphinScheduler调度使用势在必行,抓住新技术机遇,为跳巢涨薪做好准备。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值