Spark集群安装配置
集群规划
Spark集群的规划要确定以下问题:
(1)集群结点数,每个结点资源:5个结点,每个结点 4个core,8GB内存,磁盘空间
(2)结点机器名和IP地址
(3)Sparky与HDFS是否混合部署
(4)主从结点个数及对应角色
序号 | 机器名 | IP地址 | HDFS角色 | Sparke角色 | 备注 |
---|---|---|---|---|---|
1 | westgisB058 | 10.103.105.58 | client | 提交任务,集群管理 | |
2 | westgisB059 | 10.103.105.59 | DataNode | Worker | DataNode与Worker共存 |
3 | westgisB060 | 10.103.105.60 | DataNode | Worker | DN与Worker共存 |
4 | westgisB061 | 10.103.105.61 | DataNode | Worker | DN与Worker共存 |
5 | westgisB062 | 10.103.105.62 | NameNode SNN | Master | NN与Master共存 |
6 | westgisB063 | 10.103.105.63 | DataNode | Worker | DN与Worker共存 |
安装配置流程
环境变量配置文件
所有用户有效:/etc/profile
单个用户有效:/home/CCX/.bashrc
以后者为例,在.bashrc中追加以下内容:
#SPARK
export SPARK_HOME=/home/CCX/software/spark-3.1.1-bin-hadoop2.7
export PATH=${SPARK_HOME}/bin:$PATH
#SCALA
export SCALA_HOME=/home/CCX/software/scala-2.12.13
export PATH=${SCALA_HOME}/bin:$PATH
配置文件$SPARK_HOME/config/spark-env.sh
在文件中增加如下内容:
export JAVA_HOME=/home/CCX/software/jdk1.8.0_271
export SCALA_HOME=/home/CCX/software/scala-2.12.13
export SPARK_WORKER_MEMORY=8G
export SPARK_WORKER_CORES=4
export SPARK_WORKER_INSTANCES=1
export SPARK_MASTER_IP=10.103.105.62
export SPARK_DIST_CLASSPATH=$(/home/CCX/software/hadoop-2.7.6/bin/hadoop classpath)
export HADOOP_CONF_DIR=/home/CCX/software/hadoop-2.7.6/etc/hadoop
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 "
以上参数的意义为:
- SPARK_WORKER_MEMORY ,可参与计算的内存大小;
- SPARK_WORKER_CORE,可参与计算的核心数;
- SPARK_WORKER_INSTANCES,该节点Worker实例的个数;
- SPARK_MASTER_IP,主节点的IP地址;
- SPARK_DIST_CLASSPATH,依赖包的路劲,可设置多个路径;
- HADOOP_CONF_DIR,Hadoop配置文件路径;
配置文件$SPARK_HOME/conf/workers
在workers文件中增加从节点的机器名:
westgisB059
westgisB060
westgisB061
westgisB063
配置文件远程拷贝
为了使Spark集群中的每个计算任务都能够直接访问HDFS,需要将HADOOP_HOME/etc/hadoop中的配置文件hdfs-site.xml和core-site.xml拷贝到SPARK_HOME/conf目录下。
将主节点的配置拷贝到其他从结点,可用xsync脚本
集群启动和停止
- 启动HDFS集群;
- 启动Spark集群:在主节点执行以下两个脚本:
$SPARK_HOME/sbin/start-master.sh
$SPARK_HOME/sbin/start-workers.sh
- 查看监控界面:浏览器输入:http://10.103.105.62:8080
- 查看结点进程:
jps 或 ps aux|grep java
- 启动spark-shell交互式工具(master结点):
spark-shell
spark-shell
–master spark://westgis102:7077
–executor-cores 8
–executor-memory 16G
–total-executor-cores120
–driver-cores 4
–driver-memory 8G
–master参数指定Spark集群主节点的主机名和端口号;
–executor-cores代表每个executor进程分配的core(CPU核心)个数;
–executor-memory代表每个executor进程分配的内存大小;
–total-executor-cores代表需要的core的总个数,总个数除以–executor-cores就可以计算出executor进程的个数,此处为15个(120/8);
–driver-cores代表Driver进程需要的core个数;
–driver-memory代表Driver进程需要的内存大小。
6.集群关闭:先关闭Spark集群:
$SPARK_HOME/sbin/stop-workers.sh
$SPARK_HOME/sbin/stop-master.sh
后关闭HDFS集群。
错误排查方法
-
查看端口是否开启
运行命令netstat–tunlp|grep 8080
,查看8080端口是否开启。 -
查看占用端口的进程
运行命令lsof–i:8080
,查看8080端口被那个进程占用。 -
查看 运行日志
Spark主节点日志文件路径:
$SPARK_HOME/logs/*-Master-.log
$SPARK_HOME/logs/*-Master-.out
Spark从节点日志文件路径:
$SPARK_HOME/logs/*-Worker-.log
$SPARK_HOME/logs/*-Worker-.out