CDH管理集群中带的默认的spark服务为1.x,想要给集群中安装或者升级至2.x思路同CDH集群部署时一样,默认服务的包都封装在parcel包中,以部署集群时的步骤,分配,解压,激活再添加spark服务即可。
一.下载需要的包
实际情况是现在的很多CDH集群都处在未开放公网的环境当中,可在本地下载然后上传至Linux上
wget http://archive.cloudera.com/spark2/csd/SPARK2_ON_YARN-2.4.0.cloudera2.jar
wget http://archive.cloudera.com/spark2/parcels/2.4.0.cloudera2/SPARK2-2.4.0.cloudera2-1.cdh5.13.3.p0.1041012-el7.parcel
wget http://archive.cloudera.com/spark2/parcels/2.4.0.cloudera2/SPARK2-2.4.0.cloudera2-1.cdh5.13.3.p0.1041012-el7.parcel.sha1
wget http://archive.cloudera.com/spark2/parcels/2.4.0.cloudera2/manifest.json
二.创建目录,将下载好的包放至对应目录
mkdir /opt/cloudera/csd
mv SPARK2_ON_YARN-2.4.0.cloudera2.jar /opt/cloudera/csd
三.设置文件的拥有者以及权限
chown -R cloudera-scm:cloudera-scm /opt/cloudera/csd/SPARK2_ON_YARN-2.4.0.cloudera2.jar
chmod -R 644 /opt/cloudera/csd/SPARK2_ON_YARN-2.4.0.cloudera2.
四.重启CDH的server节点
/opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-server restart
五.添加包裹仓库
这里有两种方式,一是直接将包放到/opt/cloudera/parcel-repo文件夹下
二则是搭建web服务(官网推荐这种方式)
六.搭建http服务,将包移至web服务的文件夹下
yum install -y httpd
mkdir /var/www/html/spark2_parcel
mv *.parcel* /var/www/html/spark2_parcel
mv manifest.json /var/www/html/spark2_parcel
sudo chmod -R ugo+rX /var/www/html/spark2_parcel
此步骤完成之后可在通过浏览器访问是否搭建和移入文件成功
七.添加parcel
按照流程分别点击下载、分发、激活
到此步已经激活
八.添加spark服务
spark2已经出现
测试可执行
spark2-submit \
--master yarn \
--executor-memory 1G \
--executor-cores 1 \
--num-executors 1 \
--class org.apache.spark.examples.SparkPi \
/opt/cloudera/parcels/SPARK2/lib/spark2/examples/jars/spark-examples_2.11-2.4.0.cloudera2.jar
若执行结果如图中所示的话则部署OK
九.错误处理
执行的时候出现如下的错误
1.Exception in thread “main” java.lang.IllegalArgumentException: Required executor memory (1024), overhead (384 MB), and PySpark memory (0 MB) is above the max threshold (1208 MB) of this cluster! Please check the values of ‘yarn.scheduler.maximum-allocation-mb’ and/or ‘yarn.nodemanager.resource.memory-mb’
解决:
yarn.scheduler.maximum-allocation-mb设置2G
yarn.nodemanager.resource.memory-mb设置为1.5G
重启yarn集群
2.org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE,inode="/user":hdfs:supergroup:drwxr-xr-x
解决:是因为在root用户下,此默认的用户是hdfs用户,切换到hdfs用户下即可