Spark机器学习技术及应用 课件 第2章 Spark 3.5安装和开发环境配置_第1页
Spark机器学习技术及应用 课件 第2章 Spark 3.5安装和开发环境配置_第2页
Spark机器学习技术及应用 课件 第2章 Spark 3.5安装和开发环境配置_第3页
Spark机器学习技术及应用 课件 第2章 Spark 3.5安装和开发环境配置_第4页
Spark机器学习技术及应用 课件 第2章 Spark 3.5安装和开发环境配置_第5页
已阅读5页,还剩50页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Spark3.5安装和开发环境配置第二章本章将介绍Spark的单机版安装方法和开发环境配置。ML是Spark数据处理框架的一个主要组件,其运行必须有Spark的支持。本书以讲解和演示ML原理和示例为主,在安装上将详细介绍基于IntellijIDEA、在Windows10操作系统上的单机运行环境,这也是Spark机器学习和调试的最常见形式,以便更好地帮助读者学习和掌握Spark程序编写精髓。本章主要知识点:Spark运行模式环境搭建Spark单机版的安装与配置写出第一个Spark程序目录01Spark的运行模式概述02单机模式下Spark环境安装与配置03WordCount实例04小结Spark的运行模式概述Spark的运行模式概述目前ApacheSpark支持三种分布式部署方式,分别是standalone、sparkonmesos和sparkonYARN,其中,第一种类似于MapReduce1.0所采用的模式,内部实现了容错性和资源管理,后两种则是未来发展的趋势,部分容错性和资源管理交由统一的资源管理系统完成:让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架,比如MapReduce,公用一个集群资源,最大的好处是降低运维成本和提高资源利用率(资源按需分配)。Spark的运行模式概述1.Standalone模式即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。从一定程度上说,该模式是其他两种的基础。借鉴Spark开发模式,我们可以得到一种开发新型计算框架的一般思路:先设计出它的standalone模式,为了快速开发,起初不需要考虑服务(比如master/slave)的容错性,之后再开发相应的wrapper,将standalone模式下的服务原封不动的部署到资源管理系统yarn或者mesos上,由资源管理系统负责服务本身的容错。目前Spark在standalone模式下是没有任何单点故障问题的,这是借助zookeeper实现的,思想类似于Hbasemaster单点故障解决方案。Spark的运行模式概述2.SparkOnMesos模式这是很多公司采用的模式,官方推荐这种模式(当然,原因之一是血缘关系)。正是由于Spark开发之初就考虑到支持Mesos,因此,目前而言,Spark运行在Mesos上会比运行在YARN上更加灵活,更加自然。目前在SparkOnMesos环境中,用户可选择两种调度模式之一运行自己的应用程序(可参考AndrewXia的“MesosSchedulingModeonSpark”):1)粗粒度模式(Coarse-grainedMode):每个应用程序的运行环境由一个Dirver和若干个Executor组成,其中,每个Executor占用若干资源,内部可运行多个Task(对应多少个“slot”)。应用程序的各个任务正式运行之前,需要将运行环境中的资源全部申请好,且运行过程中要一直占用这些资源,即使不用,最后程序运行结束后,回收这些资源。举个例子,比如你提交应用程序时,指定使用5个executor运行你的应用程序,每个executor占用5GB内存和5个CPU,每个executor内部设置了5个slot,则Mesos需要先为executor分配资源并启动它们,之后开始调度任务。另外,在程序运行过程中,mesos的master和slave并不知道executor内部各个task的运行情况,executor直接将任务状态通过内部的通信机制汇报给Driver,从一定程度上可以认为,每个应用程序利用mesos搭建了一个虚拟集群自己使用。Spark的运行模式概述2)细粒度模式(Fine-grainedMode):鉴于粗粒度模式会造成大量资源浪费,SparkOnMesos还提供了另外一种调度模式:细粒度模式,这种模式类似于现在的云计算,思想是按需分配。与粗粒度模式一样,应用程序启动时,先会启动executor,但每个executor占用资源仅仅是自己运行所需的资源,不需要考虑将来要运行的任务,之后,mesos会为每个executor动态分配资源,每分配一些,便可以运行一个新任务,单个Task运行完之后可以马上释放对应的资源。每个Task会汇报状态给Mesosslave和MesosMaster,便于更加细粒度管理和容错,这种调度模式类似于MapReduce调度模式,每个Task完全独立,优点是便于资源控制和隔离,但缺点也很明显,短作业运行延迟大。Spark的运行模式概述3.SparkOnYARN模式这是一种很有前景的部署模式。但限于YARN自身的发展,目前仅支持粗粒度模式(Coarse-grainedMode)。这是由于YARN上的Container资源是不可以动态伸缩的,一旦Container启动之后,可使用的资源不能再发生变化,不过这个已经在YARN计划中了。sparkonyarn的支持两种模式:1)yarn-cluster:适用于生产环境;2)yarn-client:适用于交互、调试,希望立即看到app的输出yarn-cluster和yarn-client的区别在于yarnappMaster,每个yarnapp实例有一个appMaster进程,是为app启动的第一个container;负责从ResourceManager请求资源,获取到资源后,告诉NodeManager为其启动container。yarn-cluster和yarn-client模式内部实现还是有很大的区别。如果你需要用于生产环境,那么请选择yarn-cluster;而如果你仅仅是Debug程序,可以选择yarn-client。Spark的运行模式概述这三种分布式部署方式各有利弊,通常需要根据实际情况决定采用哪种方案。进行方案选择时,往往要考虑公司的技术路线(采用Hadoop生态系统还是其他生态系统)、相关技术人才储备等。上面涉及到Spark的许多部署模式,究竟哪种模式好这个很难说,需要根据你的需求,如果你只是测试SparkApplication,你可以选择local模式。而如果你数据量不是很多,Standalone是个不错的选择。当你需要统一管理集群资源(Hadoop、Spark等),那么你可以选择Yarn或者mesos,但是这样维护成本就会变高。为了方便学习Spark机器学习程序的开发和调试,本书采用Spark单机模式运行程序,下面会详细介绍具体安装过程。单机模式下Spark环境安装与配置Java8安装Windows10系统是目前最常见的操作系统,本节将讲解如何在Windows10系统中下载、使用Spark单机模式。ML是Spark大数据处理框架中的一个重要组件,广泛应用于各类数据的分析和处理。Scala是一种基于JVM的函数式编程语言,而Spark是借助于JVM运行的一个数据处理框架,因此首选安装Java。Java8安装从Java地址下载安装Java安装程序,地址为/technetwork/java/javase/downloads/index.html。单击JavaDownLoad,进入下载页面。这里推荐读者全新安装时使用Java8,如图2-1所示。Java8安装单击JDKDownload按钮,之后按需求选择Java的版本号。为了统一安装,这里全部选择64位Java安装文件进行下载,如图2-2所示。Java8安装双击下载后的文件,在默认路径安装Java,如图2-3所示,然后静待安装结束即可。笔者采用的是1.8.151版本,学习时只要比此版本高即可。Java8安装安装结束后需要对环境变量进行配置,首先右击“我的电脑”|“属性”选项,在弹出的对话框中下方单击“高级系统设置”选项,然后选中“高级”标签,单击“环境变量”按钮,在当前用户名下新建JAVA_HOME安装路径,即前面JDK安装所在的路径,如图2-4所示。Java8安装安装结束后需要对环境变量进行配置,首先右击“我的电脑”|“属性”选项,在弹出的对话框中下方单击“高级系统设置”选项,然后选中“高级”标签,单击“环境变量”按钮,在当前用户名下新建JAVA_HOME安装路径,即前面JDK安装所在的路径,如图2-4所示。Java8安装对CLASSPATH进行配置。注意,在“变量值”(路径)文本框中一定要在开头加上“.;”(不包括引号),如图2-6所示。Java8安装单击Windows10开始菜单,在“附件”里面找到“运行”,输入“cmd”命令,如图2-7所示。Java8安装输入命令后打开控制台界面,在打开的界面中输入“java”,如图2-8所示。Java8安装行后出现如图2-9所示的界面,说明Java已经配置好,可以运行Java程序了。Scala安装Scala的安装比较容易,直接下载相应的编译软件,下载之后双击程序直接安装。Scala会在安装过程中自行设置。我们需要下载的版本是Scala2.12.10,下载地址为。打开Scala网站首页,如图2-10所示。Scala安装单击DOWNLOAD按钮,进入下载界面,单击如图2-11所示的圈住的链接。日期不同,在首页默认下载的Scala版本也不尽相同,这里选用的是2.12.10版本。单击图2-11中所示的ALLdownloads按钮进入版本选择页面,如图2-12所示。Scala安装单击图2-12中所示画横线的按钮进入Scala2.12.10版本的下载页面,选择Windows版本,如图2-13所示。等待程序下载完成后,双击进行程序安装。与Java安装时类似,安装结束后对环境变量进行配置,首先右击“我的电脑”|“属性”菜单,在弹出的对话框中单击“高级系统设置”选项,然后选中“高级”标签,单击“环境变量”按钮。在当前用户名下新建SCALA_HOME安装路径,即前面Scala安装所在的路径,如图2-14所示。Scala安装设置PATH变量:找到系统变量下的PATH项,单击“编辑”按钮。在“变量值”文本框的最前面添加“%SCALA_HOME%\bin;”,如图2-15所示。跟前面运行Java命令一样,还是通过在“运行”对话框输入“cmd”命令打开命令控制台。输入“scala”,显示如图2-16所示,即可认为Scala安装完毕。IntellijIDEA开发环境安装IntellijIDEA是常用的Java编译器,也可以用来作为Spark单机版的调试器。IntellijIDEA有社区免费版和付费版,这里使用免费版即可。IntellijIDEA的下载地址为/idea/download/,选择右侧的社区免费版下载即可,如图2-17所示。双击下载的IntellijIDEA安装包就会自动进行安装。这里基本没有什么需要特别注意的事项,如果在安装过程中碰到问题,可以自行搜索解决。Scala插件的安装Scala是一种把面向对象和函数式编程理念加入静态类型语言中的语言,可以把Scala应用在很大范围的编程任务上,无论是小脚本还是大系统都可以用Scala实现。Scala运行在标准的Java平台上(JVM),可以与所有的Java库实现无缝交互。Spark的ML库是基于Java平台的大数据处理框架,因此可以自由选择最方便的语言进行编译处理。Scala天生具有简洁性和性能上的优势,并且可以在JVM上直接使用,使其成为Spark官方推荐的首选程序语言。因此,笔者推荐使用Scala语言作为Spark机器学习的首选语言。IntellijIDEA本身并没有安装Scala编译插件,因此在使用IntellijIDEA编译Scala语言编写的Spark机器学习代码之前需要安装Scala编译插件,其安装步骤如下:Scala插件的安装在桌面上找到已安装的IntellijIDEA图标,双击打开后等待读取界面(见图2-18)结束。由于IntellijIDEA是首次使用,因此之后会进入创建工程选项界面,如图2-19所示。Scala插件的安装因为需要使用Scala语言编译程序,所以这里建议读者先选择新建工程,验证是否可以使用Scala创建工程,如图2-20所示。从图2-20可以看到,其中并没有可以建立Scala工程的选项。也就是说,如果需要使用Scala,IntellijIDEA需要进一步配置相应的开发组件。这里单击FileSetting…菜单项打开Setting窗口,在左边单击Plugins选择插件,会出现如图2-21所示的界面(显示当前可以安装的插件)。Scala插件的安装显示的插件过多时,可以在Search文本框中输入“scala”搜索相应的Scala插件,如图2-22所示。找到Scala插件后,单击右侧的installplugin绿色按钮,等待一段时间,即可完成安装。如图2-23所示是安装好了的界面,Installed按钮是灰色的。Scala插件的安装安装完毕后,在NewProject选项下有一项新的项目“Scala”,如图2-24所示。单击项目,可以创建相关程序。至此,IntellijIDEA的Scala插件安装完毕。编写Java程序单击桌面上的IntellijIDEA标记,打开IntellijIDEA软件。这里建议读者先新建工程,单击新建工程对应项后,操作界面如图2-25所示。上面已经成功安装了Java、Scala以及通用编译器IntellijIDEA,下面带领读者正式使用IntellijIDEA创建Java与Scala的HelloWorld小程序。编写Java程序这里首先创建的是Java程序,因此在图2-25所示的对话框左侧列表中选择Java选项、右侧列表中勾选Kotlin/JVM复选框。单击ProjectSDK下拉列表,在弹出的菜单项中选择JDK…,按操作提示选择JavaJDK安装目录,结果如图2-26所示。IDE已经自动认出Java的版本号(见图2-27),此时可以使用IntellijIDEA创建一个Java程序。编写Java程序单击Next按钮后,给创建的文件起一个名字(见图2-28),然后单击Finish按钮,即可创建程序文件。在IDEA界面左侧,右击项目名下的src目录,弹出快捷菜单,单击New|JavaClass菜单项,如图2-29所示。在打开的对话框中填写名称HelloJava,如图2-30所示,单击OK按钮后创建一个新的Java程序。编写Java程序在IDEA弹出的界面右侧补充代码,如程序2-1所示。右击文件,在弹出的菜单中选择“Run'HelloJava.main()'”运行此程序,结果如图2-31所示。这里使用Java语言创建了一个新的JavaClass文件,用于对程序进行编写与编译。虽然在后续的学习中,Java语言并不是作为本书Spark的主要程序设计语言,但是对于Spark来说,Java语言仍旧是一个非常重要的语言基础,有无可替代的作用。publicclassHelloJava{publicstaticvoidmain(String[]args){System.out.print("helloJava");}}编写Scala程序单击IDE主界面上的File标签,新建一个工程,如图2-32所示。本节将继续使用IntellijIDEA编译器编译Scala程序,这是本书的一个重要的基础内容。进入工作界面,这里有两种可以新建Scala程序的方式,推荐使用第二种方式,即使用图2-33所示的左边框中的Scala选项和右边的IDEA程序。编写Scala程序单击Finish按钮后,进入存放位置设置和Scala编译器设置的页面(见图2-34),这里选择输入2.1.2节中安装的Scala目录地址。这里已经在2.1.2节中安装过Scala,因此直接选择查找已安装的SDK即可。有需要的话也可以直接单击Download…按钮,下载不同版本的Scala语言。新建项目,如图2-35所示。编写Scala程序单击Finish按钮后,进入存放位置设置和Scala编译器设置的页面(见图2-34),这里选择输入2.1.2节中安装的Scala目录地址。这里已经在2.1.2节中安装过Scala,因此直接选择查找已安装的SDK即可。有需要的话也可以直接单击Download…按钮,下载不同版本的Scala语言。新建项目,如图2-35所示。这里使用了两个编译器,分别是Java和Scala的SDK。对于Scala来说,其实质也是运行在Java虚拟机上的一种编译语言,需要获得JDK的支持。编写Scala程序右击左侧列表中的src列表项新建文件,如图2-36所示。需要注意的是,这里要新建一个ScalaClass文件。弹出的对话框中输入Scala文件名,单击OK按钮即可创建一个空的Scala程序。需要注意的是,类型必须为Object而非Class,如图2-37所示。这一点和Java程序不同。ObjecthelloScala{defmain(args:Array[String]):Unit={print("helloScala")}}编写Scala程序与Java编译时类似,右击文件名helloScala,在弹出的快捷菜单中选择“Run'helloScala'”命令,如图2-38所示。最终运行结果如图2-39所示Spark3.5单机版安装Spark单机版安装首先需要下载Spark预编译版本,网站地址为/。单击网页左边的

标签进入下载页面,如图2-40所示。本小节通过Windows10系统模拟了一个Spark运行环境,从而使得读者学习Spark机器学习更加方便、简单。Spark3.5单机版安装选择Spark的下载版本,因为笔者将在Windows10上虚拟出一个Spark的运行环境,因此建议读者下载安装Spark3.5.1的预编译版本。这里选用的是Spark3.5版本的文件,所以推荐读者也使用Spark3.5版本,如图2-41所示。下载后的文件是tgz格式的压缩文件。可能有读者使用Linux初步学习过Spark,但是单机版本的Spark与Linux不同,此时下载的tgz文件不要安装,直接使用Winrar软件或者Bandizip软件解压打开即可。在压缩包文件中,所有的jars包是Spark的核心文件,也是其运行和计算的主体,如图2-42所示。Spark3.5单机版安装要在IntellijIDEA上运行Spark项目,就必须把里面的jars包都加入ProjectStructure的Libraries中。单击IntellijIDEA菜单栏上的File选项,选择ProjectStructure,在弹出的对话框中单击左侧的Libraries选项,之后单击中部上方的+按钮,选择Java文件,添加刚才下载的jars包文件,如图2-43所示。添加后的lib文件库,如图2-44所示。Spark3.5单机版安装返回主界面,打开左边工程栏下的工程扩展文件库,也可以看到Spark核心文件已经被安装,如图2-45所示。基于Python语言的环境配置Spark3.5实现wordCount经典的wordCount(统计文章中的词频)是MapReduce入门必看的例子,可以称为分布式框架的HelloWorld,也是大数据处理人员必须掌握的入门技能:考察对基本Spark语法的运用,还是一个简单的自然语言处理程序。源代码参照Spark官网的wordCount中的示例代码,实现了text文件的单词计数功能,单词之间按照空格来区分,形式如图2-46所示。这是需要计数的数据内容,我们需要计算出文章中每个单词出现的次数,Spark代码如程序2-3所示。valspark=SparkSession

.builder .master("local") .appName("wordCount") .getOrCreate()valdata=spark.read.text("wc.txt")implicitvalencoder=org.apache.spark.sql.Encoders.STRINGdata.as[String].rdd.flatMap(_.split("")).map((_,1)).reduceByKey(_+_).collect().foreach(println)Spark3.5实现wordCount下面是对程序进行分析。(1)首先创建一个SparkSession(),目的是创建一个会话变量实例,告诉系统开始Spark计算。之后的master("local")启动本地化运算、appName("wordCount")设置本程序名称。(2)getOrCreate()的作用是创建环境变量实例,准备开始任务。(3)spark.read.text("c://wc.txt")的作用是读取文件。顺便提一下,此时的文件读取是按照正常顺序读取,本书后面章节会介绍如何读取特定格式的文件。这种形式读出来的格式为SparkDataFrame,并非之前的RDD形式。(4)flatMap()是Scala中提取相关数据按行处理的一个方法。在_.split("")中,_是一个占位符,代表传送进来的任意一个数据,对其按""分割。map((_,1))对每个字符进行计数,在这个过程中并不涉及合并和计算,只是单纯地将每个数据行中的单词加1。最后的reduceByKey方法对传递进来的数据按key值相加,最终形成wordCount计算结果。valspark=SparkSession

.builder .master("local") .appName("wordCount") .getOrCreate()valdata=spark.read.text("wc.txt")implicitvalencoder=org.apache.spark.sql.Encoders.STRINGdata.as[String].rdd.flatMap(_.split("")).map((_,1)).reduceByKey(_+_).collect().foreach(println)Spark3.5实现wordCount目前程序流程如图2-47所示。Spark3.5实现wordCount(5)collect()对程序进行启动。因为Spark编程的优化,很多方法在计算过程中属于lazy模式,操作是延迟计算的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论