$ yum list |grep spark spark-core.noarch 1.3.0+cdh5.4.0+24-1.cdh5.4.0.p0.52.el6 spark-history-server.noarch 1.3.0+cdh5.4.0+24-1.cdh5.4.0.p0.52.el6 spark-master.noarch 1.3.0+cdh5.4.0+24-1.cdh5.4.0.p0.52.el6 spark-Python.noarch 1.3.0+cdh5.4.0+24-1.cdh5.4.0.p0.52.el6 spark-worker.noarch 1.3.0+cdh5.4.0+24-1.cdh5.4.0.p0.52.el6 hue-spark.x86_64 3.7.0+cdh5.4.0+1145-1.cdh5.4.0.p0.58.el6
以上包作用如下:
spark-core: spark 核心功能
spark-worker: spark-worker 初始化脚本
spark-master: spark-master 初始化脚本
spark-python: spark 的 Python 客户端
hue-spark: spark 和 hue 集成包
spark-history-server
在已经存在的 Hadoop 集群中,选择一个节点来安装 Spark Master,其余节点安装 Spark worker ,例如:在 cdh1 上安装 master,在 cdh1、cdh2、cdh3 上安装 worker:
# 在 cdh1 节点上运行 $ sudo yum install spark-core spark-master spark-worker spark-python spark-history-server -y # 在 cdh1、cdh2、cdh3 上运行 $ sudo yum install spark-core spark-worker spark-python -y
安装成功后,我的集群各节点部署如下:
cdh1节点: spark-master、spark-worker、spark-history-server cdh2节点: spark-worker cdh3节点: spark-worker
2. 配置 2.1 修改配置文件设置环境变量,在 .bashrc 或者 /etc/profile 中加入下面一行,并使其生效:
export SPARK_HOME=/usr/lib/spark
可以修改配置文件 /etc/spark/conf/spark-env.sh,其内容如下,你可以根据需要做一些修改,例如,修改 master 的主机名称为cdh1。
# 设置 master 主机名称 export STANDALONE_SPARK_MASTER_HOST=cdh1
设置 shuffle 和 RDD 数据存储路径,该值默认为/tmp。使用默认值,可能会出现No space left on device的异常,建议修改为空间较大的分区中的一个目录。
export SPARK_LOCAL_DIRS=/data/spark
如果你和我一样使用的是虚拟机运行 spark,则你可能需要修改 spark 进程使用的 jvm 大小(关于 jvm 大小设置的相关逻辑见 /usr/lib/spark/bin/spark-class):
export SPARK_DAEMON_MEMORY=256m
更多spark相关的配置参数,请参考 Spark Configuration。
2.2 配置 Spark History Server在运行Spark应用程序的时候,driver会提供一个webUI给出应用程序的运行信息,但是该webUI随着应用程序的完成而关闭端口,也就是说,Spark应用程序运行完后,将无法查看应用程序的历史记录。Spark history server就是为了应对这种情况而产生的,通过配置,Spark应用程序在运行完应用程序之后,将应用程序的运行信息写入指定目录,而Spark history server可以将这些运行信息装载并以web的方式供用户浏览。
创建 /etc/spark/conf/spark-defaults.conf:
cp /etc/spark/conf/spark-defaults.conf.template /etc/spark/conf/spark-defaults.conf
添加下面配置:
spark.master=spark://cdh1:7077 spark.eventLog.dir=/user/spark/applicationHistory spark.eventLog.enabled=true spark.yarn.historyServer.address=cdh1:18082
如果你是在hdfs上运行Spark,则执行下面命令创建/user/spark/applicationHistory目录:
$ sudo -u hdfs hadoop fs -mkdir /user/spark $ sudo -u hdfs hadoop fs -mkdir /user/spark/applicationHistory $ sudo -u hdfs hadoop fs -chown -R spark:spark /user/spark $ sudo -u hdfs hadoop fs -chmod 1777 /user/spark/applicationHistory
设置 spark.history.fs.logDirectory 参数:
export SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=/tmp/spark -Dspark.history.ui.port=18082"
创建 /tmp/spark 目录:
$ mkdir -p /tmp/spark $ chown spark:spark /tmp/spark
如果集群配置了 kerberos ,则添加下面配置:
HOSTNAME=`hostname -f` export SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.kerberos.enabled=true -Dspark.history.kerberos.principal=spark/${HOSTNAME}@LASHOU.COM -Dspark.history.kerberos.keytab=/etc/spark/conf/spark.keytab -Dspark.history.ui.acls.enable=true"
2.3 和Hive集成Spark和hive集成,最好是将hive的配置文件链接到Spark的配置文件目录:
$ ln -s /etc/hive/conf/hive-site.xml /etc/spark/conf/hive-site.xml
2.4 同步配置文件修改完 cdh1 节点上的配置文件之后,需要同步到其他节点:
scp -r /etc/spark/conf cdh2:/etc/spark scp -r /etc/spark/conf cdh3:/etc/spark
3. 启动和停止 3.1 使用系统服务管理集群启动脚本: