使用shark-shell写一个简单的wordcount
cm5.14中的spark版本是默认是1.6,安装2.2版本的需要手动安装
1.6和2.2版本可以共存
1. 安装准备:
SPARK2_ON_YARN-2.2.0.cloudera3.jar
注意:
这里cloudera3对应上边下载的jar包的3,版本要一致
el5对应centos5
el6对应centos6
el7对应centos7
parcel,parcel.sha1, manifest.json 三个都要下载
2. 开始安装
停掉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 -- 继续 --选择主机 后等待安装完成
3. 测试spark是否可以正常使用
用spark自带的计算圆周率的jar包测试(这里可能会报错)
jar包位置
/opt/cloudera/parcels/SPARK2/lib/spark2/examples/jars/
spark-examples_2.11-2.2.0.cloudera3.jar
注意:
spark2的目录为/opt/cloudera/parcels/SPARK2/lib/spark2
旧的spark1.6的目录为/opt/cloudera/parcels/CDH/lib/spark
不要进错目录,要不然使用的还是1.6版本的spark
因为安装时自动加入了环境变量,可以直接在任意目录直接启动
spark2-shell,spark2-submit
切换到hdfs用户
su - hdfs
提交任务 使用yarn模式(
注意路径不要写错 替换自己的路径
)
spark2-submit --master yarn --class org.apache.spark.examples.SparkPi --executor-memory 1G
/opt/cloudera/parcels/SPARK2/lib/spark2/examples/jars/
spark-examples_2.11-2.2.0.cloudera3.jar
10
由于我用的虚拟机 配置比较低 设置的内存分配比较小,这里为了测试把他调大写
去yarn的配置里搜索
yarn.scheduler.maximum-allocation-mb 调整为1500M 重启 spark 和 yarn 再次执行测试
后再次提交任务,可以看到已经算出计算结果
找到yarn的webUI查看计算任务查看执行成功
测试spark-shell
使用1.6版本spark报错
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
这个错误是由于
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用户,否则报错 没有权限
)