DataArts Studio调度Spark作业失败
问题现象
DataArts Studio作业调度失败,显示读取“/thriftserver/active_thriftserver”路径下的数据失败。
报错信息为:
Can not get JDBC Connection, due to KeeperErrorCode = NoNode for /thriftserver/active_thriftserver。
原因分析
DataArts Studio提交Spark作业时调用Spark的JDBC方式,而Spark会启动一个名为thriftserver的进程以供客户端提供JDBC连接,JDBCServer在启动时会在ZooKeeper的“/thriftserver”目录下创建子目录“active_thriftserver”,并且注册相关连接信息。如果读不到该连接信息就会JDBC连接异常。
处理步骤
检查ZooKeeper下面是否有目标目录和注册的信息
- 以root用户登录任意一个Master节点并初始化环境变量。
source /opt/client/bigdata_env
- 执行zkCli.sh -server 'ZooKeeper实例IP地址:ZooKeeper连接端口'命令登录ZooKeeper。
ZooKeeper连接端口通常为2181,可通过查看ZooKeeper服务配置参数“clientPort”获取。
- 执行ls /thriftserver查看是否有“active_thriftserver”目录。
- 登录Manager界面,查看Spark的JDBCServer实例的主备状态是否未知。
- 是,执行5。
- 否,联系运维人员处理。
- 重启两个JDBCServer实例,查看主备实例状态恢复正常且zk下面有了目标目录和数据,作业即可恢复正常。若实例状态没有恢复请联系华为云支持人员处理。