spark2提交mysql2hive任务的坑

  1. cm5.13.0安装的spark默认安装的是spark1.6 可以通过spark-shell查看spark版本 提交spark代码后报错提示 不支持一些新语法以及sparkSession, 故需要升级到spark2.2.
  2. 在cm环境中升级spark2.2,需要下载spark on yarn的csd的jar包、spark 2.2.0 parcel包、parcel.sha1文件以及mainfest.json文件工四个文件
    在以下两个地址中下载对应cloudera4的版本
    http://archive.cloudera.com/spark2/csd/
    http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera4/
    下载后将其分别放入到server节点的 /opt/cloudera/csd 和 /opt/cloudera/parcel-repo 文件夹下
    然后执行赋权命令 chown -R cloudera-scm:cloudera-scm /opt/cloudera
    然后停止server节点以及所有agent节点 再使用重启命令restart 重启所有agent节点 再重启server节点
    此时登录cm管理页面 重启cloudear manager service服务,通过主机->parcel 分配激活spark2的parcel
    然后返回管理页面 添加服务spark2 至此spark升级为2.2.0成功.
    3.提交命令
    spark2-submit --master yarn --deploy-mode cluster --class com.cosmo.tz.demo.mysql2hiveDemo /opt/tengz-1.0-SNAPSHOT.jar
    4.提交后提示 no suitable driver 也就是找不到驱动 查看代码发现是mysql的jdbc找不到驱动
    然后将mysql-connector-java-5.1.31.jar 分别在大数据的四个节点的
    /usr/share/java /var/lib/hive /usr/local/jdk_lin/jre/lib/ext(这第三个是我司封装的jdk里的) 三个文件夹下放入mysql-connector-java-5.1.31.jar 并授权 777
    然后再次提交任务发现找不到驱动的问题被解决了.
    5.发现新的问题连接超时 发现是spark程序中的scala类里写的jdbc的url的ip地址是使用的外网映射地址(仅有一台节点可通过此映射访问)
    而spark任务提交给集群随机分配节点 其他三台节点上不可访问外网 所以外网映射在三台内网节点失效
    所以改为其本来的地址 而四个节点之间是相互打通了ssl访问权限的 所以直接通过原本的ip地址就可以访问
    至此任务成功执行结束.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值