spark并行计算框架结构内容详述
树图思维导图提供 spark 在线思维导图免费制作,点击“编辑”按钮,可对 spark 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:42f4658dd835f991c10b2124ce186f35
spark思维导图模板大纲
基础环境
Linux系统
Java环境
Hadoop环境
下载安装文件
下载spark-3.2.0-bin-without-hadoop.tgz
利用MobaXterm将spark安装包上传到Linux系统的“home”文件夹内的“下载”里面
配置相关文件
配置Spark的classpath
编辑配置文件:export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
保存配置文件
启动并运行Spark(若需要使用HDFS文件,则先启动Hadoop)
验证Spaek是否安装成功
$ cd /usr/local/spark
$ bin/run-example SparkPi 2>&1 | grep "Pi is roughly"
Spark和Hadoop的交互
启动HDFS
$ cd /usr/local/hadoop
$ ./sbin/start-dfs.sh
关闭HDFS
$./sbin/stop-dfs.sh
spark-shell命令
spark-shell命令及其常用的参数
./bin/spark-shell --master <master-url>
Master URL形式
local
local[*]
local[K]
local[*,F]
local[K,F]
local-cluster[N,C,M]
...
采用本地模式启动Spark Shell的命令
采用本地模式
--master
--jars
spark-shell
启动spark-shell
$ ./bin/spark-shell
输入scala代码进行调试
退出spark-shell
:quit
Spark UI
Ubuntu系统浏览器中打开网址:localhost:4040/jobs/
安装编译打包工具
安装sbt
下载sbt安装包sbt-1.3.8.tgz
利用MobaXterm将sbt安装包上传到Linux系统的“home”文件夹内的“下载”里面
执行终端命令
$ sudo mkdir /usr/local/sbt # 创建安装目录
$ cd ~/下载
$ sudo tar -zxvf ./sbt-1.3.8.tgz -C /usr/local
$ cd /usr/local/sbt
$ sudo chown -R hadoop /usr/local/sbt
$ cd /usr/local/sbt
$ cp ./bin/sbt-launch.jar ./
在 /usr/local/sbt 中创建 sbt 脚本
vim ./sbt
添加内容:#!/bin/bash SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M" java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
保存内容
为 ./sbt 脚本增加可执行权限
$ chmod u+x ./sbt
检验sbt是否可用
$ ./sbt sbtVersion
安装Maven
下载Maven安装包
利用MobaXterm将安装包上传到Linux系统的“home”文件夹内的“下载”里面
执行终端命令
$ sudo unzip ~/下载/apache-maven-3.6.3-bin.zip -d /usr/local
$ cd /usr/local
$ sudo mv ./apache-maven-3.6.3 ./maven
$ sudo chown -R hadoop ./maven
编写Spark应用程序代码
执行终端命令
创建一个文件夹 sparkapp
$ cd ~
$ mkdir ./sparkapp
$ mkdir -p ./sparkapp/src/main/scala
创建一个文件 SimpleApp.scala
vim ./sparkapp/src/main/scala/SimpleApp.scala
在文件 SimpleApp.scala编写应用程序代码
编译打包
使用sbt对Scala 程序进行编译打包
在./sparkapp 中新建文件 simple.sbt
vim ./sparkapp/simple.sbt
声明该独立应用程序的信息以及与 Spark 的依赖关系
name := "Simple Project"
version := "1.0"
scalaVersion := "2.12.15"
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.2.0"
保证 sbt 能正常运行
$ cd ~/sparkapp
$ find .
将整个应用程序打包成 JAR
$ /usr/local/sbt/sbt package
生成的 jar 包的位置为 ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar
使用Maven对Scala 程序进行编译打包
创建一个文件夹 sparkapp2
$ cd ~
$ mkdir ./sparkapp2
$ mkdir -p ./sparkapp2/src/main/scala
创建一个文件 SimpleApp.scala
vim ./sparkapp/src/main/scala/SimpleApp.scala
在文件 SimpleApp.scala编写应用程序代码
在“~/sparkapp2”目录中新建文件pom.xml并输入内容
将整个应用程序打包成 JAR
$ cd ~/sparkapp2
$ /usr/local/maven/bin/mvn package
生成的应用程序JAR包的位置为“/home/hadoop/sparkapp2/target/simple-project-1.0.jar”
通过spark-submit运行程序
使用sbt对Scala 程序进行编译打包
$ /usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar 2>&1 | grep "The num of this file is:"
使用Maven对Scala 程序进行编译打包
./bin/spark-submit --class <main-class> --master <master-url> --deploy-mode <deploy-mode> ... # other options <application-jar> [application-arguments]
集群概况
3台机器
Master节点
hadoop01
Slave节点
hadoop02和hadoop03
准备工作:搭建Hadoop集群环境
安装Spark
Master节点
下载Spark安装包
创建.bashrc
$ vim ~/.bashrc
在.bashrc添加内容
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
使得配置立即生效
$ source ~/.bashrc
配置环境变量
Master节点
配置workers文件
将 workers.template 拷贝到 workers
$ cd /usr/local/spark/
$ cp ./conf/workers.template ./conf/workers
workers文件设置Worker节点
编辑workers内容,把默认内容localhost替换成hadoop02 hadoop03
配置spark-env.sh文件
将 spark-env.sh.template 拷贝到 spark-env.sh
$ cp ./conf/spark-env.sh.template ./conf/spark-env.sh
编辑spark-env.sh,添加内容
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath) export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop export SPARK_MASTER_IP=192.168.20.129
Spark配置
将Master主机上的/usr/local/spark文件夹复制到Slave节点上
Master主机
cd /usr/local/
tar -zcf ~/spark.master.tar.gz ./spark
cd ~
scp ./spark.master.tar.gz hadoop02:/home/hadoop
scp ./spark.master.tar.gz hadoop03:/home/hadoop
Slave节点
sudo rm -rf /usr/local/spark/
sudo tar -zxf ~/spark.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/spark
启动Spark集群
启动Hadoop集群
Master节点
$ cd /usr/local/hadoop/
$ sbin/start-all.sh
$ cd /usr/local/spark/
$ sbin/start-master.sh
启动所有Worker节点
Master节点
$ sbin/start-workers.sh
查看信息
Master主机
打开浏览器,访问http://hadoop01:8080
关闭Spark集群
Master节点
关闭Master节点
$ sbin/stop-master.sh
关闭Worker节点
$ sbin/stop-workers.sh
关闭Hadoop集群
$ cd /usr/local/hadoop/
$ sbin/stop-all.sh
启动Spark集群
启动Hadoop集群
$ cd /usr/local/hadoop/
$ sbin/start-all.sh
启动Spark的Master节点和所有Worker节点
$ cd /usr/local/spark/
$ sbin/start-master.sh
$ sbin/start-workers.sh
在集群中运行应用程序JAR包
主节点:spark://hadoop01:7077,测试SparkPi
在集群中运行spark-shell
启动spark-shell环境
$ cd /usr/local/spark
$ bin/spark-shell --master spark://hadoop01:7077
执行命令
读取HDFS上的文件:val textFile = sc.textFile("hdfs://hadoop01:9000/README.md")
计算行数:textFile.count()
查看首行:textFile.first()
...
查看集群信息
打开浏览器,访问http://hadoop01:8080/
树图思维导图提供 第八章 Spark MLlib——功能强大的算法库 在线思维导图免费制作,点击“编辑”按钮,可对 第八章 Spark MLlib——功能强大的算法库 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:67f780745912fc85a9e25a8d3596ccc3
树图思维导图提供 第七章 Spark GraphX——图计算框架 在线思维导图免费制作,点击“编辑”按钮,可对 第七章 Spark GraphX——图计算框架 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:3eef241ee87485bc29f6dcbb9e23b037