场景
我们私有云团队在给客户部署系统时遇到困难,客户要求在他们购买的华为大数据平台上部署我们的产品,我们底层主要用到了spark、hdfs、和hive,hdfs和hive可以用华为的,但spark不能用华为的,华为目前只有spark1.5和spark2.10,我们的版本是spark2.2且是我们自己维护的分支,里面加了我们自己的很多优化,而且用华为的spark经常导致很多包依赖不一致问题,导致部署和升级处处碰壁,于是乎探索了一台部署方案。
准备工作
注意:(在这之前一定要先执行一下spark-shell –master yarn测试一下华为平台是否正常)
1.首先这里假定你已经把华为客户端已经安装了并且能正常使用,确保华为客户端中有spark客户端,最好是spark2x的,不然会比较麻烦一点,我自己的Client安装在/opt/client下。
2.准备我们自己的spark,这里我们要先确定一下华为的Hadoop版本和hive版本,我这边的Hadoop版本是2.7.2,hive版本1.2.1,然后根据Hadoop和hive版本去编译我们自己spark,不知如何编译的请参考Spark官网文档进行编译打包,我自己打的包是spark-2.2.0-with-hadoop2.7.2。
部署spark
1.我们先把华为客户端下的spark移出华为客户端,但别删除,待会还要用到它的一些配置和文件,我这华为的客户端是Spark2x,我先把它移动到/opt下。
2.接下来我们在华为客户端目录下(我这里是/opt/client)新建一个我们的spark目录,我这里创建了spark目录是BDP-Spark2x,然后把我们自己的spark解压到该目录下。
替换配置文件以及jar包
刚才我们把华为自带的Spark2x移动到/opt下,现在我们要用到它的一些配置文件和jar包。
1.替换jar包
hadoop-common-2.7.2.jar
hadoop-auth-2.7.2.jar
hadoop-yarn-common-2.7.2.jar
hadoop-yarn-api-2.7.2.jar
hadoop-hdfs-2.7.2.jar
hadoop-hdfs-client-2.7.2.jar
hive-exec-1.2.1.spark2.jar
hive-metastore-1.2.1.spark2.jar
spark-om_2.11-2.1.0.jar
从华为/opt/Spark2x/spark/jars拷贝以上jar包到我们自己的spark /opt/client/BDP-Spark2x/spark/jars下面,如果存在则强制替换。
2.替换配置文件
从华为Spark2x/spark/conf(除了hbase-site.xml和carbon.properties)拷贝以上所有的配置文件到我们自己的spark /opt/client/BDP-Spark2x/spark/conf下面,如果存在则强制替换。
3.修改spark-defaults.conf
删除spark/conf/spark-defaults.conf文件的所有内容,仅留下
spark.admin.acls = admin
spark.yarn.am.extraJavaOptions = -Djava.security.krb5.conf=./kdc.conf
spark.executor.extraJavaOptions = -Djava.security.krb5.conf=./kdc.conf
spark.driver.host = 172.16.3.19(本机iP)
4.拷贝component_env和修改SPARK_HOME
从华为Spark2x下拷贝component_env到BDP-Spark2x下,编辑component_env,修改SPARK_HOME,我这的SPARK_HOME为/opt/client/BDP-Spark2x/spark,所以改为
export SPARK_HOME=/opt/client/BDP-Spark2x/spark
5.重新source华为的环境bigdata_env
在我的环境为source /opt/client/bigdata_env
6.执行spark时通过–files kdc.conf把kdc.conf文件带上
示例:spark-shell –master yarn –files kdc.conf
注:kdc.conf文件一般在spark/conf下有
注意事项
如果你的华为的spark环境是spark1.5怎么办呢???
1.装个spark2x环境。
2.去其它的华为平台把上面的jar包拷贝回来,其它步骤不变。