cm 5.14 离线安装spark2.2 on yarn 并测试
cm5.14中的spark版本是默认是1.6,安装2.2版本的需要手动安装
-
安装准备:
SPARK2_ON_YARN-2.2.0.cloudera3.jar
注意:
这里cloudera3对应上边下载的jar包的3,版本要一致
el5对应centos5
el6对应centos6
el7对应centos7
parcel,parcel.sha1, manifest.json 三个都要下载
-
开始安装
停掉cm server 和agent
上传parcel包到机器的/opt/cloudera/parcel-repo目录下(最好是cm server机器下的这个目录,如果放在agent机器下可能读取不到)
如果已经存在
manifest.json文件,需要把他备份掉,把刚下载的放进来
SPARK2-2.2.0.cloudera3-1.cdh5.13.3.p0.556753-el6.parcel.sha1 改名为
SPARK2-2.2.0.cloudera3-1.cdh5.13.3.p0.556753-el6.parcel.sha
启动cm集群
主机 -- Parcel
可以看到 spark2 就是刚刚下载的spark包
这里点击分配
到这里 可能会卡在已**这步,可以重新回到上一步骤,点击**
**完成后回到主页 点击添加服务
找到spark2 -- 继续 --选择主机 后等待安装完成
测试spark是否可以正常使用
用spark自带的计算圆周率的jar包测试(这里可能会报错)
jar包位置
/opt/cloudera/parcels/CDH/lib/spark/lib/
spark-examples.jar
找到spark目录
/opt/cloudera/parcels/CDH/lib/spark
提交任务 使用yarn模式(注意路径不要写错 替换自己的路径
)
bin/spark-submit --master yarn --class org.apache.spark.examples.SparkPi --executor-memory 1G /opt/cloudera/parcels/CDH-5.14.0-1.cdh5.14.0.p0.24/lib/spark/examples/lib/spark-examples-1.6.0-cdh5.14.0-hadoop2.6.0-cdh5.14.0.jar 10
由于我用的虚拟机 配置比较低 设置的内存分配比较小,这里为了测试把他调大写
去yarn的配置里搜索
yarn.scheduler.maximum-allocation-mb 调整为1500M 重启 spark 和 yarn 再次执行测试
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
这个错误是由于
从spark1.4以后,所有spark的编译都是没有将hadoop的classpath编译进去的,所以必须在spark-env.sh中指定hadoop中的所有jar包。
cd
/opt/cloudera/parcels/CDH-5.14.0-1.cdh5.14.0.p0.24/lib/spark/conf
添加
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
保存退出,再次提交任务
(记得切换到hdfs用户,否则报错 没有权限)
su - hdfs 后再次提交任务,可以看到已经算出计算结果
找到yarn的webUI查看计算任务