版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Spark环境搭建和使用方法第4章目
录01安装Spark02在spark-shell中运行代码03开发Spark独立应用程序04Spark集群环境搭建05在集群上运行Spark应用程序安装
Spark4.1安装Spark
基础环境
下载安装文件
配置相关文件
Spark和Hadoop的交互安装Spark4.1.1基础环境4.1.1基础环境Hadoop安装教程_单机/伪分布式配置_Hadoop3.1.3/Ubuntu16.04/blog/2441-2/4.1.1基础环境Spark安装包下载地址:解压安装包spark-3.2.0-bin-without-hadoop.tgz至路径/usr/local$sudotar-zxf~/下载/spark-3.2.0-bin-without-hadoop.tgz-C/usr/local/$cd/usr/local$sudomv./spark-3.2.0-bin-without-hadoop/./spark#更改文件夹名$sudochown-Rhadoop./spark#此处的hadoop为系统用户名4.1.2下载安装文件4.1.3配置相关文件配置Spark的classpath$cd/usr/local/spark$cp./conf/spark-env.sh.template./conf/spark-env.sh#拷贝配置文件编辑该配置文件,在文件最后面加上如下一行内容exportSPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoopclasspath)保存配置文件后,就可以启动、运行Spark了若需要使用HDFS中的文件,则在使用Spark前需要启动Hadoop
通过运行Spark自带的实例SparkPi,可以验证Spark是否安装成功$cd/usr/local/spark$bin/run-exampleSparkPi可以通过grep命令进行过滤,快速找到我们想要的执行结果$bin/run-exampleSparkPi2>&1|grep"Piisroughly"过滤后的运行结果中包含了π的近似值,具体如下Piisroughly3.1456957284786424.1.3配置相关文件4.1.4Spark和Hadoop的交互单机模式HDFSHBaseSpark负责计算负责存储输入如下命令启动HDFS$cd/usr/local/hadoop$./sbin/start-dfs.sh使用结束以后,可以使用如下命令关闭HDFS$./sbin/stop-dfs.sh4.1.4Spark和Hadoop的交互4.1.4Spark和Hadoop的交互Local模式Standalone模式YARN模式Mesos模式Spark部署模式4.1.4Spark和Hadoop的交互Local模式Mesos模式YARN模式Standalone模式单机模式Spark部署模式4.1.4Spark和Hadoop的交互Spark部署模式集群模式Local模式Mesos模式YARN模式Standalone模式4.1.4Spark和Hadoop的交互使用Spark自带的集群资源管理器Standalone模式效率比较低!4.1.4Spark和Hadoop的交互0102030405搭建在Kubernetes集群上使用Mesos作为集群管理器使用YARN作为集群管理器使用Spark自带的集群管理器单机模式Kubernetes模式Mesos模式YARN模式Standalone模式Local模式4.1.4Spark和Hadoop的交互单机模式HDFSHBaseSpark负责计算负责存储在spark-shell中运行代码4.2
在spark-shell中运行代码交互式执行环境spark-shell提供Spark开发效率高4.2
在spark-shell中运行代码交互式执行环境spark-shell分析数据一条语句执行4.2
在spark-shell中运行代码spark-shell交互式执行环境交互式环境交互式环境SparkShell本身就是一个Driver,里面已经包含了main方法4.2.1spark-shell命令./bin/spark-shell--master<master-url>*local
使用一个Worker线程本地化运行SPARK(完全不并行)*local[*]
使用逻辑CPU个数数量的线程来本地化运行Spark*local[K]
使用K个Worker线程本地化运行Spark(理想情况下,K应该根据运行机器的CPU核数设定)*local[*,F]
使用与逻辑CPU个数相同数量的线程来本地化运行Spark,并且允许任务最大失败次数为F*local[K,F]
使用K个Worker线程本地化运行Spark,并且允许任务最大失败次数为F*local-cluster[N,C,M]
local-cluster模式只用于单元测试。它会在单个JVM中模拟出一个具有N个Worker的集群,每个Worker具有C个核心(Core)和MMB的内存spark-shell命令及其常用的参数4.2.1spark-shell命令spark://:7077默认端口7077spark://HOST:PORTspark://localhost:7077独立集群模式4.2.1spark-shell命令YARN的两种模式02yarn-cluster01yarn-client./bin/spark-shell--masteryarn-client./bin/spark-shell--masteryarn-cluster4.2.1spark-shell命令集群客户端电脑4.2.1spark-shell命令任务控制节点DriverProgramSparkContext客户端电脑集群资源管理器客户端是不能关掉ClusterManageryarn-client4.2.1spark-shell命令客户端电脑发起应用程序集群yarn-cluster4.2.1spark-shell命令集群4.2.1spark-shell命令yarn-cluster客户端集群客户端不可关客户端可关调试正在使用yarn-client4.2.1spark-shell命令mesos://HOST:PORTMesos集群:默认接口是5050./bin/spark-shell--mastermesos://HOST:PORT4.2.1spark-shell命令k8s://HOST:PORTKubernetes集群deploy-mode的值为client时以客户端模式连接Kubernetes集群deploy-mode的值为cluster时以集群模式连接Kubernetes集群4.2.1spark-shell命令在Spark中采用本地模式启动SparkShell的命令主要包含以下参数表示当前的SparkShell要连接到哪个master,如果是local[*],就是使用本地模式启动spark-shell,星号表示需要使用几个CPU核心(core)这个参数用于把相关的JAR包添加到CLASSPATH中;如果有多个jar包,可以使用逗号分隔符连接它们-master-jars4.2.1spark-shell命令比如,要采用本地模式,在4个CPU核心上运行spark-shell$cd/usr/local/spark$./bin/spark-shell--masterlocal[4]可以在CLASSPATH中添加code.jar,命令如下$cd/usr/local/spark$./bin/spark-shell--masterlocal[4]--jarscode.jar可以执行“spark-shell--help”命令,获取完整的选项列表$cd/usr/local/spark$./bin/spark-shell--help4.2.2启动spark-shell执行如下命令启动SparkShell(默认是local模式)$./bin/spark-shell启动SparkShell成功后在输出信息末尾可看到“Scala>”的命令提示符4.2.2启动spark-shell可以在里面输入scala代码进行调试可以使用命令“:quit”退出SparkShell可以直接使用“Ctrl+D”组合键,退出SparkShell4.2.3SparkUISpark包含一个图形用户界面,可用于以各种粒度(作业、执行阶段、任务)检查或监控Spark应用。根据Spark的部署方式,驱动器会启动基于网页的用户界面,默认在端口4040上运行开发
Spark独立应用程序4.3开发Spark独立应用程序安装编译打包工具编译打包通过spark-submit运行程序编写Spark应用程序代码030104024.3.1安装编译打包工具安装sbt下载sbt安装包sbt-1.3.8.tgz以后,执行如下命令$sudomkdir/usr/local/sbt#创建安装目录$cd~/Downloads$sudotar-zxvf./sbt-1.3.8.tgz-C/usr/local$cd/usr/local/sbt$sudochown-Rhadoop/usr/local/sbt#此处的hadoop为系统当前用户名$cd/usr/local/sbt$cp./bin/sbt-launch.jar./#把bin目录下的sbt-launch.jar复制到sbt安装目录下4.3.1安装编译打包工具接着在/usr/local/sbt中创建sbt脚本(vim./sbt),添加如下内容#!/bin/bashSBT_OPTS="-Xms512M-Xmx1536M-Xss1M-XX:+CMSClassUnloadingEnabled-XX:MaxPermSize=256M"java$SBT_OPTS-jar`dirname$0`/sbt-launch.jar"$@"4.3.1安装编译打包工具保存后,为./sbt脚本增加可执行权限检验sbt是否可用4.3.1安装编译打包工具只要能得到如下图的版本信息就没问题$./sbtsbtVersionJavaHotSpot(TM)64-BitServerVMwarning:ignoringoptionMaxPermSize=256M;supportwasremovedin8.0[warn]Nosbt.versionsetinproject/perties,basedirectory:/usr/local/sbt[info]Setcurrentprojecttosbt(inbuildfile:/usr/local/sbt/)[info]1.3.84.3.2编写Spark应用程序代码在终端中执行如下命令创建一个文件夹sparkapp作为应用程序根目录4.3.2编写Spark应用程序代码在./sparkapp/src/main/scala下建立一个名为SimpleApp.scala的文件4.3.3编译打包使用sbt对Scala程序进行编译打包name:="SimpleProject"version:="1.0"scalaVersion:="2.12.15"libraryDependencies+="org.apache.spark"%%"spark-core"%"3.2.0"请在./sparkapp中新建文件
simple.sbt(vim./sparkapp/simple.sbt),添加内容如下4.3.3编译打包Spark和Scala的版本信息可以在启动信息中找到4.3.3编译打包使用
sbt
对
Scala程序进行编译打包——关于百分号的说明libraryDependencies++=Seq(
"org.json4s"%%"json4s-native"%"3.2.10",
"org.json4s"%%"json4s-jackson"%"3.2.10")中间两个百分号的依赖是不指定版本的,版本由Scala的版本确定中间有一个百分号的依赖是指定版本的libraryDependencies+="org.apache.kafka"%"kafka_2.12"%"2.6.0"4.3.3编译打包为保证sbt能正常运行,先执行如下命令检查整个应用程序的文件结构文件结构应如下图所示4.3.3编译打包接着就可通过如下代码将整个应用程序打包成JAR(首次运行同样需要下载依赖包)打包成功的话,会输出类似如下信息hadoop@dblab:~/sparkapp$/usr/local/sbt/sbtpackageOpenJDK64-BitServerVMwarning:ignoringoptionMaxPermSize=256M;supportwasremovedin8.0[info]SetcurrentprojecttoSimpleProject(inbuildfile:/home/hadoop/sparkapp/)[success]Totaltime:4s,completedJan26,20235:57:56AM生成的jar包的位置为~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar$
/usr/local/sbt/sbtpackage4.3.3编译打包Maven~/sparkapp2~/sparkapp2/src/main/scalaSimpleApp.scala使用Maven对Scala程序进行编译打包4.3.3编译打包<project><groupId>.xmu</groupId><artifactId>simple-project</artifactId><modelVersion>4.0.0</modelVersion><name>SimpleProject</name><packaging>jar</packaging><version>1.0</version><repositories><repository><id>jboss</id><name>JBossRepository</name><url>/maven2/</url></repository></repositories><dependencies>
在“~/sparkapp2”目录中新建文件pom.xml4.3.3编译打包<dependency><!--Sparkdependency--><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.2.0</version></dependency></dependencies><build><sourceDirectory>src/main/scala</sourceDirectory><plugins><plugin><groupId>org.scala-tools</groupId><artifactId>maven-scala-plugin</artifactId><executions><execution><goals><goal>compile</goal></goals></execution></executions><configuration><scalaVersion>2.12.15</scalaVersion><args><arg>-target:jvm-1.8</arg></args></configuration></plugin></plugins></build></project>4.3.3编译打包4.3.3编译打包
在“~/sparkapp2”目录中新建文件pom.xml<project><groupId>.xmu</groupId><artifactId>simple-project</artifactId><modelVersion>4.0.0</modelVersion><name>SimpleProject</name><packaging>jar</packaging><version>1.0</version><repositories><repository><id>jboss</id><name>JBossRepository</name><url>/maven2/</url></repository></repositories><dependencies><dependency><!--Sparkdependency--><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.2.0</version></dependency></dependencies>4.3.3编译打包
在“~/sparkapp2”目录中新建文件pom.xml<build><sourceDirectory>src/main/scala</sourceDirectory><plugins><plugin><groupId>org.scala-tools</groupId><artifactId>maven-scala-plugin</artifactId><executions><execution><goals><goal>compile</goal></goals></execution></executions>4.3.3编译打包
在“~/sparkapp2”目录中新建文件pom.xml<configuration><scalaVersion>2.12.15</scalaVersion><args><arg>-target:jvm-1.8</arg></args></configuration> </plugin></plugins></build></project>4.3.3编译打包可以通过如下代码将整个应用程序打包成JAR包$cd~/sparkapp2#一定把这个目录设置为当前目录$/usr/local/maven/bin/mvnpackage如果屏幕返回如下信息,则说明生成JAR包成功[INFO]Buildingjar:/home/hadoop/sparkapp2/target/simple-project-1.0.jar[INFO]------------------------------------------------------------------------[INFO]BUILDSUCCESS[INFO]------------------------------------------------------------------------[INFO]Totaltime:
02:02min[INFO]Finishedat:2023-01-26T07:34:02-08:00[INFO]------------------------------------------------------------------------4.3.4通过spark-submit运行程序可以通过spark-submit提交应用程序,该命令的格式如下./bin/spark-submit--class<main-class>//需要运行的程序的主类,应用程序的入口点--master<master-url>//MasterURL,下面会有具体解释--deploy-mode<deploy-mode>//部署模式...#otheroptions//其他参数<application-jar>//应用程序JAR包[application-arguments]//传递给主类的主方法的参数4.3.4通过spark-submit运行程序对于之前得到的jar包,就可以通过spark-submit提交到Spark中运行了$/usr/local/spark/bin/spark-submit--class"SimpleApp"~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar#上面命令执行后会输出太多信息,可以不使用上面命令,而使用下面命令查看想要的结果$/usr/local/spark/bin/spark-submit--class"SimpleApp"~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar2>&1|grep"Lineswitha:"最终得到的结果如下
Lineswitha:65,Lineswithb:33Spark集群环境搭建4.4Spark集群环境搭建集群概况搭建Hadoop集群环境安装Spark配置环境变量Spark配置启动Spark集群关闭Spark集群4.4.1集群概况构建局域网4.4.1集群概况WorkerWorkerMaster4.4.2准备工作:搭建Hadoop集群环境《Hadoop3.1.3分布式集群环境搭建》/blog/2775-2/4.4.2准备工作:搭建Hadoop集群环境4.4.3安装Spark在Master节点上,访问Spark官网下载Spark安装包sudotar-zxf~/下载/spark-3.2.0-bin-without-hadoop.tgz-C/usr/local/cd/usr/localsudomv./spark-3.2.0-bin-without-hadoop/./sparksudochown-Rhadoop./spark4.4.4配置环境变量在.bashrc添加如下配置$vim~/.bashrc在Master节点主机的终端中执行如下命令exportSPARK_HOME=/usr/local/sparkexportPATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin$source~/.bashrc运行source命令使得配置立即生效4.4.5Spark配置workers文件设置Worker节点,编辑workers内容,把默认内容localhost替换如下$cd/usr/local/spark/$cp./conf/workers.template./conf/workers(1)配置workers文件—将workers.template拷贝到workershadoop02hadoop03
编辑spark-env.sh,添加如下内容$cp./conf/spark-env.sh.template./conf/spark-env.sh
(2)配置spark-env.sh文件—将spark-env.sh.template拷贝到spark-env.shexportSPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoopclasspath)exportHADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoopexportSPARK_MASTER_IP=294.4.5Spark配置4.4.5Spark配置在hadoop02,hadoop03节点上分别执行下面同样的操作cd/usr/local/tar-zcf~/spark.master.tar.gz./sparkcd~scp./spark.master.tar.gzhadoop02:/home/hadoopscp./spark.master.tar.gzhadoop03:/home/hadoop将Master主机上的/usr/local/spark文件夹复制到各节点,执行如下命令sudorm-rf/usr/local/spark/sudotar-zxf~/spark.master.tar.gz-C/usr/localsudochown-Rhadoop/usr/local/spark
4.4.6启动Spark集群$cd/usr/local/hadoop/$sbin/start-all.sh(1)首先启动Hadoop集群。在Master节点主机上运行如下命令$cd/usr/local/spark/$sbin/start-master.sh$sbin/start-workers.sh(2)启动Master节点—在Master节点主机上运行如下命令(3)启动所有Worker节点—在Master节点主机上运行如下命令(4)在浏览器上查看Spark独立集群管理器的集群信息4.4.6启动Spark集群4.4.7关闭Spark集群$s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026兴业银行莆田分行春季校园招聘备考题库附答案详解ab卷
- 2026中国科学院广州地球化学研究所科研助理招聘2人备考题库(应用矿物学学科组)及参考答案详解(培优a卷)
- 2026四川泸州龙马潭区人民医院招聘3人备考题库附答案详解(能力提升)
- 2026广东广州市爱莎文华高中招聘备考题库及答案详解一套
- 2026新疆塔城地区检察机关面向社会考试招聘聘用制书记员13人备考题库附答案详解(综合卷)
- 2026辽宁鞍山市卫健系统事业单位招聘高层次人才8人备考题库附参考答案详解(黄金题型)
- 2026新疆喀什昆仑建设有限公司招聘3人备考题库及参考答案详解(研优卷)
- 2026四川省医医学验光配镜眼镜有限公司招聘4人备考题库带答案详解(考试直接用)
- 2026福建福州新区(长乐区)新任教师(教育部直属师范大学公费师范生)招聘1人备考题库及答案详解(新)
- 2026爱莎荔湾学校专任教师招聘备考题库(广东)及参考答案详解(综合题)
- JJG 1148-2022 电动汽车交流充电桩(试行)
- 商铺门面关闭协议书
- 向量为基,几何为本-以2025年全国新高考数学Ⅰ卷17题为例说题比赛
- 2026-2031年中国鲜冻马肉行业市场发展趋势与前景展望战略研究报告
- 军人二次召回通知书
- 曲臂车安全施工方案
- 《制氢现场氢安全管理规范》
- 防溺水事故应急预案
- 室分业务发展操作指导手册(试行)
- 水泥厂安全事故培训内容课件
- 上市公司再融资困境深度剖析与突围路径探寻
评论
0/150
提交评论