虽然通过CDH控制台可以很方便地安装spark客户端,但如果客户端机器并不属于自己管辖,通过这种先安装cloudera manager agent再安装spark客户端的方式显然不妥当。在这种情形下,用户自己安装配置spark客户端,是最好的方式。
安装JDK
首先需要安装JDK
配置hosts
将服务端的hosts全部配置,添加到客户端的/etc/hosts中。
安装Hadoop客户端
Spark的部分功能需要依赖于Hadoop,所以需要安装Hadoop客户端
下载安装包
下载apache官网安装包
http://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.6.tgz
安装Spark客户端
解压赋权
tar -zxf spark-2.4.0-bin-hadoop2.6.tgz -C /opt
sudo chown -R root:root /opt/spark-2.4.0-bin-hadoop2.6
添加环境变量
在/etc/profile追加
# JDK
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
# Spark
export SPARK_HOME=/opt/spark-2.4.0-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/sbin:$SPARK_HOME/bin
source /etc/profile
如果同时安装Hive客户端,记住hive的环境变量要排在spark之前。因为Spark客户端也自带beeline命令行工具,会影响Hive的beeline命令行工具。
在同时安装有Hadoop, Hive, Spark客户端的情况下,环境变量次序如下:
配置Spark
cd /opt/spark-2.4.0-bin-hadoop2.6/conf
vi spark-env.sh
#!/usr/bin/env bash
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
export HADOOP_HOME=/opt/hadoop-2.6.0-cdh5.16.2
export HADOOP_CONF_DIR=/opt/hadoop-2.6.0-cdh5.16.2/etc/hadoop
export SPARK_DIST_CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath)
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
验证测试
spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster /opt/spark-2.4.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.0.jar 10
注意:spark提交方式必须是cluster模式。使用client模式会报错,因为客户端机器的hostname没有在hadoop集群的机器/etc/hosts里面配置,导致DataNode无法识别客户端机器的hostname,进而导致报错。
欢迎关注我的公众号“九万里大数据”,原创技术文章第一时间推送。
欢迎访问原创技术博客网站 jwldata.com,排版更清晰,阅读更爽快。