Spark单机部署(二)

1. 下载

进入官网download页面:https://spark.apache.org/downloads.html

spark-download.jpg

这里需要注意的是第2步,有几种选择:

Pre-build with user-provided Hadoop: 属于“Hadoop free”版,可应用到任意Hadoop 版本;
Pre-build for Hadoop 2.6 and later: 基于Hadoop 2.6的预先编译版,需要与本机安装的Hadoop版本对应,可选的还有Hadoop 2.6、Hadoop 2.4、Hadoop 2.3、Hadoop1.x、CDH4。

如果你事先安装了Spark对应版本的Hadoop,那么可以选择 for Hadoop x.x的,如果你安装的Hadoop版本没有对应的Spark,那么选择with user-provided 。

Spark自带了Scala环境,所以不需要额外安装,但是JDK 是需要安装的。

2. 安装

本示例环境: Centos 7.5

2.1 安装JDK

Spark是Scala写的,运行在JVM上,所以运行环境Java7+

sudo yum -y install java-1.8.0-openjdk
java -version

2.2 安装Spark

[root@localhost ~]# ls
spark-2.4.4-bin-without-hadoop.tgz

[root@localhost ~]# tar -zxvf spark-2.4.4-bin-without-hadoop.tgz -C /opt
[root@localhost ~]# cd /opt
[root@localhost ~]# mv spark-2.4.4-bin-without-hadoop spark-2.4.4

如果是独立部署,那么这样就可以了;现在我们要单机伪分布式部署。

[root@localhost ~]# cd /opt/spark-2.4.4/conf/
[root@localhost conf]# cp spark-env.sh.template spark-env.sh
[root@localhost conf]# vim spark-env.sh

# 最后添加
export SPARK_DIST_CLASSPATH=$(/opt/hadoop-2.8.5/bin/hadoop classpath)
# 开启Spark历史记录
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs:///eventLog/ -Dspark.history.fs.cleaner.enabled=true"
export JAVA_HOME=/etc/alternatives/jre_1.8.0
export HADOOP_HOME=/opt/hadoop-2.8.5
export HADOOP_CONF_DIR=/opt/hadoop-2.8.5/etc/hadoop
export SPARK_HOME=/opt/spark-2.4.4
export SPARK_LOCAL_IP= IP地址
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=9090
export SPARK_WORKER_CORES=2  #每个worker节点所占有的CPU核数目
export SPARK_WORKER_INSTANCES=1 #每台机器上开启的worker节点的数目
export SPARK_WORKER_MEMORY=3G   #每个worker节点能够最大分配给exectors的内存大小
export SPARK_WORKER_WEBUI_PORT=9091
export SPARK_EXECUTOR_CORES=1
export SPARK_EXECUTOR_MEMORY=1G
export SPARK_LIBARY_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib/native
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native

[root@localhost conf]# vi slaves

# worker节点地址
本机IP

[root@localhost conf]# vi spark-defaults.conf
spark.eventLog.enabled           true
spark.eventLog.dir              hdfs://ip:9000/eventLog

3. 启动

# 启动历史记录服务
[root@localhost sbin]# ./start-history-server.sh
# 启动master和worker节点
[root@localhost sbin]# ./start-all.sh

打开浏览器输入:http://ip:9090

spark-master-web.jpg

如果无法打开,在防火墙开放端口:

[root@localhost ~]# firewall-cmd --zone=public --add-port=9090/tcp --permanent
[root@localhost ~]# systemctl restart firewalld

4. 提交应用程序的方式

Spark提交应用程序有两种方式:spark-shell 和 spark-submit

4.1 spark-shell

spark-shell是具有交互式的,可直接进行编程,最终运行时,后台也是调用 spark-submit。

4.1.1 本地模式

不需要连接到spark集群,在本地直接运行,用于测试。

[root@localhost bin]# ./spark-shell 
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://172.16.130.140:4040
Spark context available as 'sc' (master = local[*], app id = local-1576797951702).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.4
      /_/
         
Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 1.8.0_232)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

4.1.2 集群模式

# 指定集群中master的地址
[root@localhost]# ./spark-shell --master spark://localhost:7077

4.1.3 注意

交互界面中打印出的两句话:

Spark context available as 'sc'.
Spark session available as 'spark'.

这里创建了2个对象分别为 sc , spark。在交互命令中可以直接使用.

4.2 spark-submit

spark-submit需要将应用程序打包上传到集群,通过下面的方式提交执行。

spark-submit  --master  spark的地址  --class   全类名   jar包地址  参数 

5. Spark on standalone

在第四章中的提交方式就是standalone模式。这个模式下,资源的分配与调度是由Master来完成的。

示例:

[root@localhost bin]# ./spark-submit --master spark://localhost:7077 --class org.apache.spark.examples.SparkPi /opt/spark-2.4.4/examples/jars/spark-examples_2.11-2.4.4.jar 10

Pi is roughly 3.1414508628290174

6. Spark on yarn

前提: 启动 HDFS集群,YARN集群。

[root@localhost bin]# ./spark-shell  --master yarn --deploy-mode client
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
19/12/20 09:29:01 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
Spark context Web UI available at http://172.16.130.140:4040
Spark context available as 'sc' (master = yarn, app id = application_1576805312297_0001).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.4
      /_/
         
Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 1.8.0_232)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

打开YARN的WEB界面: http://ip:8088

spark-on-yarn.jpg

往期文章一览

千万不要这样使用 Arrays.asList !

八张图带你认识Java

Java开发必备手册

关注码上实战