CDH5.16.1部署spark2.4(CDS)


CDH管理集群中带的默认的spark服务为1.x,想要给集群中安装或者升级至2.x思路同CDH集群部署时一样,默认服务的包都封装在parcel包中,以部署集群时的步骤,分配,解压,激活再添加spark服务即可。

1.下载需要的包

实际情况是现在的很多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

2.创建目录,将下载好的包放至对应目录

mkdir /opt/cloudera/csd
mv SPARK2_ON_YARN-2.4.0.cloudera2.jar /opt/cloudera/csd

3.设置文件的拥有者以及权限

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.

4.重启CDH的server节点

/opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-server restart

5…添加包裹仓库

这里有两种方式,一是直接将包放到/opt/cloudera/parcel-repo文件夹下 二则是搭建web服务(官网推荐这种方式)

6.搭建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

此步骤完成之后可在通过浏览器访问是否搭建和移入文件成功

7.添加parcel

按照流程分别点击下载、分发、激活 到此步已经激活

8.添加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

9.错误处理

执行的时候出现如下的错误 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用户下即可

经验分享 程序员 微信小程序 职场和发展