以下笔记基于对尚硅谷spark教程的学习,Spark版本3.0
目录
Spark安装
Local模式
Standalone模式
Yarn 模式
Windows下开发调试程序报错
Spark安装
Local模式
1.解压缩文件
2.启动 Local 环境
bin/spark-shell
Windows的时候为spark-shell.cmd
3.Web UI 监控页面
http://虚拟机地址:4040 4.提交应用
bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[2] ./examples/jars/spark-examples_2.12-3.0.0.jar 10
Windows的时候为spark-submit.cmd
1) --class 表示要执行程序的主类,此处可以更换为咱们自己写的应用程序
2) --master local[2] 部署模式,默认为本地模式,数字表示分配的虚拟 CPU 核数量
3) spark-examples_2.12-3.0.0.jar 运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包
4) 数字 10 表示程序的入口参数,用于设定当前应用的任务数量
Standalone模式
1.解压缩文件
2.修改conf目录配置文件
mv slaves.template slaves
修改slaves填入集群机器名
mv spark-env.sh.template spark-env.sh
填入内容:
export JAVA_HOME=/opt/module/jdk1.8.0_144
SPARK_MASTER_HOST=linux1
SPARK_MASTER_PORT=7077
3.分发spark-standalone目录到集群内其他机器
4.启动集群
sbin/start-all.sh
5.查看Master资源监控Web UI界面: http://linux1:8080
6.提交应用
bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://linux1:7077 ./examples/jars/spark-examples_2.12-3.0.0.jar 10
1) --class 表示要执行程序的主类
2) --master spark://linux1:7077 独立部署模式,连接到 Spark 集群
3) spark-examples_2.12-3.0.0.jar 运行类所在的 jar 包
4) 数字 10 表示程序的入口参数,用于设定当前应用的任务数量
5) --executor-memory 1G 指定每个 executor 可用内存为 1G
6) --total-executor-cores 2 指定所有executor使用的cpu核数为2个
7) --executor-cores 指定每个executor使用的cpu核数
7.配置历史服务
mv spark-defaults.conf.template spark-defaults.conf
修改spark-default.conf文件,配置日志存储路径
spark.eventLog.enabled true
spark.eventLog.dir hdfs://linux1:8020/directory
注意:需要启动 hadoop 集群,HDFS 上的 directory 目录需要提前存在
sbin/start-dfs.sh
hadoop fs -mkdir /directory
修改spark-env.sh文件, 添加日志配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://linux1:8020/directory
-Dspark.history.retainedApplications=30"
参数 1 含义:WEB UI 访问的端口号为 18080
参数 2 含义:指定历史服务器日志存储路径
参数 3 含义:指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
分发配置文件
重新启动集群和历史服务
sbin/start-all.sh
sbin/start-history-server.sh
查看历史服务:http://linux1:18080
8.配置高可用(HA)
为了解决单点故障问题,需要在集群中配置多个 Master 节点,一旦处于活动状态的 Master发生故障时,由备用 Master 提供服务,保证作业可以继续执行。
停止集群
sbin/stop-all.sh
启动 Zookeeper
xstart zk
修改 spark-env.sh 文件添加如下配置
注释如下内容:
#SPARK_MASTER_HOST=linux1
#SPARK_MASTER_PORT=7077
添加如下内容:
#Master 监控页面默认访问端口为 8080,但是可能会和 Zookeeper 冲突,所以改成 8989,也可以自定义,访问 UI 监控页面时请注意
SPARK_MASTER_WEBUI_PORT=8989
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=linux1,linux2,linux3
-Dspark.deploy.zookeeper.dir=/spark"
分发配置文件
xsync conf/
启动集群
sbin/start-all.sh
启动 linux2 的单独 Master 节点,此时 linux2 节点 Master 状态处于备用状态
sbin/start-master.sh
提交应用到高可用集群
bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://linux1:7077,linux2:7077 ./examples/jars/spark-examples_2.12-3.0.0.jar 10
Yarn 模式
1.解压缩文件
2.修改配置文件
修改 hadoop 配置文件/opt/module/hadoop/etc/hadoop/yarn-site.xml, 并分发
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
修改 conf/spark-env.sh,添加 JAVA_HOME 和 YARN_CONF_DIR 配置
mv spark-env.sh.template spark-env.sh
修改spark-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
YARN_CONF_DIR=/opt/module/hadoop/etc/hadoop
3.启动 HDFS 以及 YARN 集群
4.提交应用
bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster ./examples/jars/spark-examples_2.12-3.0.0.jar 10
5.查看 http://linux2:8088 页面,点击 History,查看历史页面
6.配置历史服务器
mv spark-defaults.conf.template spark-defaults.conf
修改spark-defaults.conf文件,配置日志存储路径
spark.eventLog.enabled true
spark.eventLog.dir hdfs://linux1:8020/directory
注意:需要启动 hadoop 集群,HDFS 上的 directory 目录需要提前存在
sbin/start-dfs.sh
hadoop fs -mkdir /directory
spark.yarn.historyServer.address=linux1:18080
spark.history.ui.port=18080
修改spark-env.sh文件, 添加日志配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://linux1:8020/directory
-Dspark.history.retainedApplications=30"
参数 1 含义:WEB UI 访问的端口号为 18080
参数 2 含义:指定历史服务器日志存储路径
参数 3 含义:指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
启动历史服务
sbin/start-history-server.sh
查看历史服务:http://linux2:18080
Windows下开发调试程序报错
1.报错找不到winutils.exe
从这里https://github.com/cdarlint/winutils 下载对应版本的文件夹
解压文件后设置环境变量 HADOOP_HOME 为hadoop-x.x.x的目录
设置环境变量 PATH追加 %HADOOP_HOME%\bin
把hadoop-x.x.x\bin\hadoop.dll 复制到 C:\Windows\System32
2.报错文件夹目录权限
"%HADOOP_HOME%\bin\winutils.exe" ls E:\tmp\hive
"%HADOOP_HOME%\bin\winutils.exe" chmod 777 E:\tmp\hive
"%HADOOP_HOME%\bin\winutils.exe" ls E:\tmp\hive