Spark集群安装和使用

$ 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 使用系统服务管理集群

启动脚本:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/98270a8168cf498cb1abd248c137d25e.html