假设CDH上已经安装了Spark1.6.0和Spark2.4.0,用spark-shell和spark2-shell可以分别调用两个版本的Spark。现在需要安装第三个版本的Spark客户端,这里讲述这种场景下再安装一个1.6.3版本的Spark客户端。
普通的Spark客户端安装可以参考往期文章:
https://www.jwldata.com/archives/116.html
场景和目标
- CDH上已经安装了Spark1.6.0和Spark2.4.0
- CDH配置了lzo压缩
- 在CDH的某个节点上新装一个Spark1.6.3客户端
- 新装的Spark1.6.3客户端需要能访问CDH的HDFS
- 新装的Spark1.6.3客户端需要能提交任务给CDH的YARN
- 新装的Spark1.6.3客户端需要能访问CDH的Hive仓库
- 不能影响原来CDH的Spark1.6.0和Spark2.4.0的使用
下载安装包
下载apache官网安装包
http://archive.apache.org/dist/spark/spark-1.6.3/spark-1.6.3-bin-hadoop2.6.tgz
安装Spark客户端
解压赋权
tar -zxf spark-1.6.3-bin-hadoop2.6.tgz -C /opt
sudo chown -R root:root /opt/spark-1.6.3-bin-hadoop2.6
配置Spark
cd /opt/spark-1.6.3-bin-hadoop2.6/conf
touch spark-env.sh
chmod 755 spark-env.sh
如果Spark需要直接连接Hive,且Hadoop配置了lzo,则spark-env.sh可以用以下配置
#!/usr/bin/env bash
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop
export HADOOP_CONF_DIR="/etc/hadoop/conf:/etc/hive/conf"
# 如果用的自己安装的Hadoop
# export SPARK_DIST_CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath)
# 如果用的CDH的Hadoop
export SPARK_DIST_CLASSPATH=$(paste -sd: "/etc/spark/conf/classpath.txt")
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib/native
# SPARK_CLASSPATH在spark1+已deprecated
# export SPARK_CLASSPATH=/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib/hadoop-lzo.jar
修改命令脚本
cd /opt/spark-1.6.3-bin-hadoop2.6/bin
vi spark-shell
vi spark-submit
vi pyspark
将spark-shell,spark-submit,pyspark命令脚本都追加”export SPARK_HOME=/opt/spark-1.6.3-bin-hadoop2.6″的语句。
if [ -z "${SPARK_HOME}" ]; then
export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi
export SPARK_HOME=/opt/spark-1.6.3-bin-hadoop2.6
添加到系统环境
ln -s /opt/spark-1.6.3-bin-hadoop2.6/bin/spark-shell /usr/bin/spark1.6.3-shell
ln -s /opt/spark-1.6.3-bin-hadoop2.6/bin/spark-submit /usr/bin/spark1.6.3-submit
ln -s /opt/spark-1.6.3-bin-hadoop2.6/bin/pyspark /usr/bin/pyspark1.6.3
验证测试
测试提交任务给YARN
spark1.6.3-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client /opt/spark-1.6.3-bin-hadoop2.6/lib/spark-examples-1.6.3-hadoop2.6.0.jar 10
测试访问HDFS和Hive
spark1.6.3-shell
scala> val content = sc.textFile("/user/hive/node_exporter.sh")
scala> content.count()
scala> sqlContext.sql("select * from bank.account").show()
欢迎关注我的公众号“九万里大数据”,原创技术文章第一时间推送。
欢迎访问原创技术博客网站 jwldata.com,排版更清晰,阅读更爽快。