本机环境:
CentOS7(虚拟机:1核、2GB内存)
JDK1.8
Spark2.4
Scala2.12
使用的静态IP:(在 /etc/hosts 中配置)
192.168.190.200 master (主节点)
192.168.190.201 slave1 (从节点)
下载Scala版本:scala-2.12.6.tgz 地址:https://www.scala-lang.org/download/2.12.6.html
下载Spark版本:spark-2.4.3-bin-hadoop2.7.tgz(支持Hadoop2.7及以上)
区别:Standalone与Spark-on-Yarn模式
Standalone模式采用由Master负责调度的固定资源分配策略;
Spark-on-Yarn模式采用由Yarn负责调度的动态资源分配策略。
此处采用:Standalone集群模式(多机)
1.解压安装Spark到"/opt/"目录下
$ cd /opt
$ tar -zxvf spark-2.4.3-bin-hadoop2.7.tgz
2.将"conf/"下面三个模板配置文件复制一份,并去除".template"后缀
$ cd spark-2.4.3-bin-hadoop2.7/conf
$ cp slaves.template slaves
$ cp spark-env.sh.template spark-env.sh
$ cp log4j.properties.template log4j.properties
3.修改"spark-env.sh"配置,增加如下内容:
JAVA_HOME=/opt/jdk1.8.0_191
SCALA_HOME=/opt/scala-2.12.6
SPARK_HOME=/opt/spark-2.4.3-bin-hadoop2.7
SPARK_MASTER_HOST=master
(注:如果是单机模式,此处Host为:localhost)
--后面四句配上后,有可能会导致虚拟机起不来
SPARK_WORKER_CORES=1
SPARK_WORKER_MEMORY=0.5
SPARK_WORKER_INSTANCES=2
SPARK_DAEMON_MEMORY=0.5
4.修改"slaves"文件内容为:
slave1
(注:如果是单机模式,此处slaves内容为:master,即master和worker运行同一节点)
5.修改"log4j.properties"配置,增加如下内容:
# 设置日志信息在控制台输出
log4j.rootCategory=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
# 将日志级别设置为WARN
# 会覆盖默认日志级别的设置
# 针对不同的Spark应用可以设置成不同的日志级别
log4j.logger.org.apache.spark.repl.Main=WARN
# 将第三方库的日志级别设置高些
log4j.logger.org.spark_project.jetty=WARN
log4j.logger.org.spark_project.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO
log4j.logger.org.apache.parquet=ERROR
log4j.logger.parquet=ERROR
# 避免SparkSQL支持Hive中不存在的UDFs的各种噪音信息
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL
log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR
6.配置scala,java,spark的环境变量,增加如下内容:(root用户执行)
$ vi /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_191
export PATH=$PATH:$JAVA_HOME/bin
export SCALA_HOME=/opt/scala-2.12.6
export PATH=$PATH:$SCALA_HOME/bin
export SPARK_HOME=/opt/spark-2.4.3-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
$ source /etc/profile
7.SSH免密登陆设置(与Hadoop一样)(这是单机模式下的配置)
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
$ chmod 644 ~/.ssh/authorized_keys
(多机模式需要将master节点的公钥发送到slave节点上,
如果Hadoop集群已经配置过,此步跳过)
8.将以上安装文件及配置修改在从节点一样执行一遍(用fabric可快速部署,此处略)
9.启动/停止Spark
$ /opt/spark-2.4.3-bin-hadoop2.7/sbin/start-all.sh
(如果没有报错,就是启动成功)
$ /opt/spark-2.4.3-bin-hadoop2.7/sbin/stop-all.sh
10.成功启动后,可查看守护进程
查看master主节点:
$ jps
Master
查看slave1从节点:
$ jps
Worker
如果是单机模式:Master和Worker将在同一节点上运行
11.查看UI监控页面
http://192.168.190.200:8080/
出现的错误:
1.Java虚拟机创建失败:
Spark Command: /opt/jdk1.8.0_191/bin/java -cp /opt/spark-2.4.3-bin-hadoop2.7/conf/:/opt/spark-2.4.3-bin-hadoop2.7/jars/* -Xmx0.5 org.apache.spark.deploy.master.Master --host 127.0.0.1 --port 7077 --webui-port 8080
========================================
Invalid maximum heap size: -Xmx0.5
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
--解决方式:将"spark-env.sh"配置中的worker资源大小的配置去掉