CHD Spark1.6升级为Spark2.1安装步骤

Caused by: java.lang.AbstractMethodError: spark.WordCount$1.call(Ljava/lang/Object;)Ljava/lang/Iterable;

Spark编译版本与运行环境的版本不一致导致


                                                          CHDspark1.6升级2.1

1、下载csd安装包(注意版本及校验文件一致)

http://archive.cloudera.com/spark2/csd/




2、下载parcels包

http://archive.cloudera.com/spark2/parcels/2.1.0.cloudera1/



3、开始安装,集群可以停也可以不停

上传csd包到集群所有机器的/opt/cloudera/csd下,如果没有,就新建;如果有其他安装包,可以删掉

# cd /opt/cloudera/csd         #目录下修改文件权限

# chown cloudera-scm:cloudera-scm SPARK2_ON_YARN-2.1.0.cloudera2.jar

# chmod 644 SPARK2_ON_YARN-2.1.0.cloudera2.jar



4、上传parcel包到主节点机器(master)的/opt/cloudera/parcel-repo下,该目录下的其他安装包不可删除!一般都会有manifest.json,把它改名备份即可。用刚下载的替代,然后SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658-el7.parcel.sha1一定记得改为SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658-el7.parcel.sha



5、在主节点执行重启命令

# service cloudera-scm-agent restart

# service cloudera-scm-server restart


6、CM主节点启动后,点击主机->Parcel页面,就会有spark2的选项。选择后点击分配,等待分配完成后激活




7、如果报一下配置问题,是Jdk版本与快捷方式,这里简要说明记录一下




8、添加spark2服务



此时再看,就会显示2.1.0





======================启动配置分割线================================

                                                  Spark2的启动问题:



此时可能启动会有问题,需要配置相应的环境变量以及依赖关系,大家通过spark2-env.sh文件也能看到依赖的classpath文件的jar包。

# cd /etc/spark2/conf.cloudera.spark2_on_yarn    把classpath文件复制

/opt/cloudera/parcels/SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658/etc/spark2/conf.dist 目录下

# cp /etc/spark2/conf.cloudera.spark2_on_yarn/classpath.txt /opt/cloudera/parcels/SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658/etc/spark2/conf.dist



然后通过spark2-shell启动




再次执行提交的jar包,



至此,CDH spark1.6 升级为spark2.1 成功!


====================华丽的补充,spark操作数据库时的依赖包问题=============

Exception in thread "main" java.sql.SQLException: No suitabledriver




方法1:     修改spark-env.sh 配置环境变量的jar包路径,根据实际数据库配,我这里是oracle的

export SPARK_CLASSPATH=$SPARK_CLASSPATH:/usr/java/ojdbc7.jar


此时再次执行时就可以看到(可以顺利运行,警告信息是说过时方式)




方法2:     上面记得应该是把路径配置文件复制到

/opt/cloudera/parcels/SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658/etc/spark2/conf.dist 下的

里面的classpath.txt配置的文件,看加载的信息我们也知道会加载里面的jar包,在里面配置也可以(需要注意的是默认路径,不要随便放。在classpath.txt里面有的路径下放置)

把需要的jar包复制到/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/jars/ 目录下并修改 classpath.txt文件

/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/jars/ojdbc7.jar


在末尾加上jar包路径即可

这时候执行也没有警告信息。如果大家仔细看加载的类包就可以看到我们的驱动加进来了的



方法3:    最后一个,就是大家什么配置都没有改,那只有改shell脚本了



这样配置执行也是没有警告信息的。



注意:没事做也不要都设置,2和3同时配置没问题,但是1和3同时配置就会报错Found bothspark.driver.extraClassPath and SPARK_CLASSPATH. Use only the former.。这里也可以看出1的方式是过时的了。




最后,如果spark提交运行的方式是整改集群,当然jar也要分发到集群的每一台机器




好了,关于CDH spark1.6升级为spark2.1,以及spark2.1的一些配置和依赖包的添加配置都说完了。正式开启spark2.1的应用吧大笑









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章