Spark 2.4.5 安装使用手册


安装教程:实验室
Spark 2.1.0需要满足: Hadoop 2.7 +, JDK 1.8 +, Ubuntu 16 +
这里选用Spark 2.4.5, Hadoop 2.9.2, Centos 8
首先安装Hadoop(包含Java) 参考手册

Spark官方下载:
选择Pre-build with user-provided Hadoop [can use with most Hadoop distributions]
Spark部署模式主要有四种:Local模式(单机模式)、Standalone模式(使用Spark自带的简单集群管理器)、YARN模式(使用YARN作为集群管理器)和Mesos模式(使用Mesos作为集群管理器)。
这里介绍Local模式(单机模式)的 Spark安装。

1、安装

su hadoop
	sudo tar -zxf /home/downld/spark-2.4.5-bin-without-hadoop.tgz -C /usr/local/
	cd /usr/local
	sudo mv ./spark-2.4.5-bin-without-hadoop/ ./spark
	sudo chown -R hadoop:hadoop ./spark          # 此处的 hadoop 为你的用户名

设置环境变量

	sudo vim ~/.bashrc
	# export JAVA_HOME=/usr/lib/jvm/java
export SPARK_HOME=/usr/local/spark
export PATH=$SPARK_HOME/bin:$PATH
	source ~/.bashrc

2、配置

	cd /usr/local/spark
	cp ./conf/spark-env.sh.template ./conf/spark-env.sh
	vim ./conf/spark-env.sh		# 首行添加
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

配置以后,Spark就可以直接使用,不需要像Hadoop运行启动命令。就可以把数据存储到Hadoop分布式文件系统HDFS中,也可以从HDFS中读取数据。如果没有配置上面信息,Spark就只能读写本地数据。

通过运行Spark自带的示例,验证Spark是否安装成功。这里涉及到Linux Shell中管道的知识,详情可以参考:Linux Shell中的管道命令

	cd /usr/local/spark
	bin/run-example SparkPi  2>&1 | grep "Pi is"	# 信息都输出到 stdout 

3、使用Spark Shell进行交互式数据分析

学习Spark程序开发,建议首先通过spark-shell交互式学习,加深Spark程序开发的理解。 Spark Shell 支持 Scala(自带scala环境,不需要额外安装) 和 Python,这里使用 Scala 来进行介绍。

Spark的运行模式取决于传递给SparkContext的Master URL的值。可以是以下任一种形式:

  • local使用一个Worker线程本地化运行SPARK(完全不并行)
  • local[*]使用逻辑CPU个数数量的线程来本地化运行Spark
  • local[K] 使用K个Worker线程本地化运行Spark(理想情况下,K应该根据运行机器的CPU核数设定)
  • spark://HOST:PORT 连接到指定的Spark standalone master。默认端口是7077.
  • yarn-client 以客户端模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR 环境变量中找到。
  • yarn-cluster 以集群模式连接YARN集群。集群的位置可以在HADOOP_CONF_DIR 环境变量中找到。
  • mesos://HOST:PORT连接到指定的Mesos集群。默认接口是5050。
    ------------------------------------------------------ >> 返回
cd /usr/local/spark
	./bin/spark-shell		# ./bin/spark-shell –master local[*]
	
	:q		# quit scala

------------------------------ Top ----------------------------

4、Spark独立应用程序编程

4.1 编写Scala程序

下载安装sbt (Simple Build Tool)是对Scala或Java语言进行编译的一个工具,类似于Maven或Ant,需要JDK1.8+

sudo mkdir /usr/local/sbt                # 创建安装目录
sudo tar -zxvf /home/downld/sbt-1.3.8.tgz -C /usr/local 
cd /usr/local/sbt
sudo chown -R hadoop /usr/local/sbt     # 此处的hadoop为系统当前用户名
cp ./bin/sbt-launch.jar ./  # 把bin目录下的sbt-launch.jar复制到sbt安装目录下
vi /usr/local/sbt/sbt		# 创建启动sbt脚本
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
~
	chmod u+x /usr/local/sbt/sbt	# 增加可执行权限
	cd /usr/local/sbt
	./sbt sbtVersion	# 可能需要执行几分钟,成功以后就可以看到版本
[info] Set current project to sbt (in build file:/usr/local/sbt/)
[info] 1.3.8

spark-scala

# 这里借助idea编辑后,上传到~/sparkapp/src/main/scala/
	cd ~/sparkapp
	vi ./simple.sbt
# 声明该scala程序的信息以及与 Spark 的依赖关系
name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.12"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.5"
    find .		# 检查整个应用程序的文件结构
	# Scala package by sbt
	/usr/local/sbt/sbt package	# 第一次打包时,会需要几分钟
	
	# spark提交app
	/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar  2>&1 | grep "Lines with a:"

spark-submit提交应用程序,命令的格式如下:

./bin/spark-submit 
  --master <master-url>  		# spark://host:port, mesos://host:port, yarn, or local (Default: local[*])
  --class <main-class>  		# 应用程序的入口: main class (for Java / Scala apps).
  --deploy-mode <deploy-mode>   # 部署模式: locally ("client") or cluster ("cluster") (Default: client).
  ...   other options  			# 其他参数
  <application-jar>  			# 应用程序JAR包
  [application-arguments] 		# 传递给主类的主方法的参数

<< 点击查看Sprak不同部署部署模式的master -url

deploy-mode这个参数用来指定应用程序的部署模式,部署模式有两种:client和cluster,默认是client。
当采用client部署模式时,就是直接在本地运行Driver Program,
当采用cluster模式时,会在Worker节点上运行Driver Program。
比较常用的部署策略是从网关机器提交你的应用程序,这个网关机器和你的Worker集群进行协作。在这种设置下,比较适合采用client模式,在client模式下,Driver直接在spark-submit进程中启动,这个进程直接作为集群的客户端,应用程序的输入和输出都和控制台相连接。因此,这种模式特别适合涉及REPL的应用程序。
另一种选择是,如果你的应用程序从一个和Worker机器相距很远的机器上提交,那么采用cluster模式会更加合适,它可以减少Driver和Executor之间的网络迟延。

4.2 spark-java

# java package by maven, use IDEA, 打包好的jar放到指定文件夹~/sparkapp/target/
/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/sparks-1.0.jar 2>&1 | grep "Lines with a"

集群运行实例参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值