1. 配置spark
4.1 解压压缩包
[root@centosmv ~]# tar xf spark-2.4.4-bin-without-hadoop.tgz
[root@centosmv ~]# mv spark-2.4.4-bin-without-hadoop /usr/local/spark
说 明:
将spark解压并移动到/usr/local下
4.2 配置spark环境
# cd /usr/local/spark/conf/
# cp -rp spark-env.sh.template spark-env.sh
说 明:
创建spark-env.sh配置文件,并指定scala目录、java目录、hadoop目录及hadoop配置文件目录。
spark-env.sh文件:
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/Hadoop
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=/usr/local/hadoop/*
export SPARK_MASTER_IP=master
export SPARK_LOCAL_DIRS=/usr/local/spark
export SPARK_WORKER_MEMORY=4G
export SPARK_DRIVER_MEMORY=4G
export SPARK_EXECUTOR_CORES=8
export SPARK_CLASSPATH=/usr/local/spark/extlib/*
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://master:9820/sparkhistorylogs"
export SPARK_MASTER_WEBUI_PORT=28080
export SPARK_DIST_CLASSPATH=/usr/local/hadoop/etc/hadoop:/usr/local/hadoop/share/hadoop/common/*:/usr/local/hadoop/share/hadoop/common/lib/*:/usr/local/hadoop/share/hadoop/hdfs/*:/usr/local/hadoop/share/hadoop/hdfs/lib/*:/usr/local/hadoop/share/hadoop/mapreduce/*:/usr/local/hadoop/share/hadoop/mapreduce/lib/*:/usr/local/hadoop/share/hadoop/yarn/*:/usr/local/hadoop/share/hadoop/yarn/lib/*
export SCALA_HOME=/usr/local/scala
编辑环境变量:
[root@WW-JYT-SPA1 bin]# vim /etc/profile
#spark
export SPARK_HOME=/usr/local/spark
export PATH=${SPARK_HOME}/bin:$PATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
4.3 修改spark配置文件
4.3.1修改slaves配置文件
# cp -rp /usr/local/spark/conf/slaves.template /usr/local/spark/conf/slaves
说 明:
拷贝该配置文件,放入同层目录下slaves中,修改该文件,将指定worker节点,一行一个节点。
4.3.2修改spark-default.conf配置文件
# cd /usr/local/spark/conf/
# cp -rp spark-defaults.conf.template spark-defaults.conf
# vim spark-defaults.conf
说 明:
创建spark-defaults.conf文件,并配置对应信息,详细配置介绍如下:
- spark.master
spark master主节点
- spark.serializer
指定序列化机制为kryo,比java默认的序列化机制更加节约空间和CPU性能。
- spark.eventLog.enabled/spark.eventLog.dir
记录Spark事件的基本目录,如果spark.eventLog.enabled为true。 在此基本目录中,Spark为每个应用程序创建一个子目录,并在此目录中记录特定于应用程序的事件。 用户可能希望将其设置为统一位置,如HDFS目录,以便历史记录服务器可以读取历史记录文件。可以是hdfs://开头的HDFS路径,也可以是file://开头的本地路径,都需要提前创建。
- spark.driver.host
使用属性spark.driver.host来指定yarn-client模式运行中和Yarn通信的DriverHost,此时yarn-client模式可以正常运行
- spark.executor.memory
该参数用于设置每个Executor进程的内存。Executor内存的大小,很多时候直接决定了Spark作业的性能
- spark.driver.memory
driver进程运行的内存大小。可以在程序代码中通过SparkConf进行设置,也可以在spark-submit中使用--driver-memory进行设置
- spark.executor.logs.rolling.maxRetainedFiles
系统保留日志的最大数量,当超限时,旧的日志被删除,默认不启动
- spark.executor.logs.rolling.maxSize
日志文件保存策略之-系统保留日志文件的最大大小
- spark.yarn.historyServer.address
Spark history server的地址(不要加http://)。这个地址会在Spark应用程序完成后提交给YARN RM,然后RM将信息从RM UI写到history server UI上。
- spark.history.fs.logDirectory
用于为历史记录程序提供文件系统,包含要加载的应用程序事件日志的目录URL。 这可以是本地文件路径file://路径,HDFS路径hdfs://namenode:port /shared/spark-logs或Hadoop API支持的备用文件系统的路径。spark.eventLog.dir用于生成日志,spark.history.fs.logDirectory是Spark History Server发现日志事件的位置。
spark-defaults.conf文件内容:
spark.master spark://master:7077
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.eventLog.enabled true
#spark.eventLog.dir /tmp/spark-events
spark.eventLog.dir hdfs://master:9820/sparkhistorylogs
spark.eventLog.compress true
##spark.driver.host master
spark.executor.memory 4g
spark.driver.memory 4g
spark.port.maxRetries 128
spark.executor.logs.rolling.maxRetainedFiles 100
spark.executor.logs.rolling.maxSize 1g
spark.yarn.historyServer.address master:18080
spark.history.fs.logDirectory hdfs://master:9820/sparkhistorylogs
#spark.buffer.pageSize 16m
spark.sql.tungsten.enabled false
4.4 拷贝配置并修改master配置
scp -rp /usr/local/spark/ slave1:/usr/local/
scp -rp /usr/local/spark/ slave2:/usr/local/
scp -rp /etc/profile slave1:/etc/
scp -rp /etc/profile slave2:/etc/
[root@slave1 ~]# source /etc/profile
[root@slave2 ~]# source /etc/profile
[root@slave3 ~]# source /etc/profile
4.5创建历史日志事件目录及启动集群
hdfs dfs -mkdir /sparkhistorylogs
hdfs dfs -ls /
说 明:
创建历史日志事件目录,并查看目录是否创建成功。
/usr/local/spark/sbin/start-all.sh
/usr/local/spark/sbin/start-history-server.sh
jps
说 明:
在master节点处调spark/sbin下的start-all.sh脚本,并在每台机器执行jps命令查看是否调起对应的master/worker进程
注意4040端口占用问题