嬛嬛喊你学Spark、Scala的安装

这篇具有很好参考价值的文章主要介绍了嬛嬛喊你学Spark、Scala的安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是spark

Apache SparkTM 是一个多语言引擎,用于在单节点机器或集群上执行数据工程、数据科学和机器学习。

scala生态系统,spark,大数据,分布式

Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子项目,Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的Spark已应用于凤巢、大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。

二、Spark的特点

1、快速

一般情况下,对于迭代次数较多的应用程序,Spark程序在内存中的运行速度是Hadoop MapReduce运行速度的100多倍,在磁盘上的运行速度是Hadoop MapReduce运行速度的10多倍。

scala生态系统,spark,大数据,分布式

Spark数据存放于内存中,有更高的迭代运算效率;Mapreduce数据存放于磁盘

2、易用

可以使用多种编程语言快速编写应用程序,例如Java、Scala、Python、R和SQL
Spark提供了80多个高阶函数,可以轻松构建Spark任务

scala生态系统,spark,大数据,分布式

3、通用

Spark 可以与 SQL 、 Streaming 及复杂的分析良好结合。 Spark 还有一系列的高级工具,包括 Spark SQL 、 MLlib (机器学习库)、 GraphX (图计算)和 Spark Streaming (流计算),并且支持在一个应用中同时使用这些组件

scala生态系统,spark,大数据,分布式

4、随处运行

用户可以使用Spark的独立集群模式运行Spark,也可以在EC2(亚马逊弹性计算云)、Hadoop YARN或者Apache Mesos上运行Spark。并且可以从HDFS、Cassandra、HBase、Hive、Tachyon和任何分布式文件系统读取数据。

scala生态系统,spark,大数据,分布式

5、代码简洁

三、Spark 和Mapreduce区别


spark是在MapReduce上发展而来,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷

1.提高了效率

Spark把中间数据放到内存中,迭代运算效率高。MapReduce中计算结果需要落地,保存到磁盘上,这样势必会影响整体速度,而Spark支持DAG图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率

2.容错性高

Spark引进了弹性分布式数据集RDD (Resilient Distributed Dataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,需要进行重建。

相比来说spark更加通用,spark提供了更多的数据集操作类型,处理节点之间通信模型不是向hadoop只采用Shuffle模式,而是采用用户可命名,控制中间结果的存储,分区。

3、生态系统

Spark拥有更加丰富的生态系统,提供了许多高级库和工具,如Spark SQL、Spark Streaming、MLlib和GraphX等。这些工具使得Spark在数据处理、机器学习和图计算等方面更加强大和便捷

Map Task详细工作流程

1、copy阶段:ReduceTask从各个MapTask上得到数据(一个ReduceTask会得到不同MapTask中同一个分区的数据)
2、merge阶段:将从MapTask上得到的数据进行归并排序,得到一个有序文件
3、reduce阶段:将合并后的有序文件读到reduce,并进行分组,通过用户编写的reduce()函数,得到新的key/value值。
4、write阶段:ReduceTask通过用户编写的RecordWriter,将key/value值输出为目标文件。

scala生态系统,spark,大数据,分布式

四、spark的框架

Spark 框架模块包含:Spark Core、 Spark SQL、 Spark Streaming、 Spark GraphX、 Spark MLlib,而后四项的能力都是建立在核心引擎之上。
【Spark Core】:Spark的核心,Spark核心功能均由Spark Core模块提供,是Spark运行的基础。Spark Core以RDD为数据抽象,提供Python、Java、
Scala、R语言的API,可以编程进行海量离线数据批处理计算。

【SparkSQL】:基于SparkCore之上,提供结构化数据的处理模块。SparkSQL支持以SQL语言对数据进行处理,SparkSQL本身针对离线计算场景。同
时基于SparkSQL,Spark提供了StructuredStreaming模块,可以以SparkSQL为基础,进行数据的流式计算。

【SparkStreaming】:以SparkCore为基础,提供数据的流式计算功能。
MLlib:以SparkCore为基础,进行机器学习计算,内置了大量的机器学习库和API算法等。方便用户以分布式计算的模式进行机器学习计算。

【GraphX】:以SparkCore为基础,进行图计算,提供了大量的图计算API,方便用于以分布式计算模式进行图计算

五、Spark的核心数据集RDD

1 RDD定义
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,
代表一个不可变类型、可分区、里面的元素可并行计算的集合。可以认为RDD是分布式的"列表List或数组Array"(与其说是列表不如说是元组【其本身是不可变类型,只能通过血缘追踪】

scala生态系统,spark,大数据,分布式

六、RDD特性


1.高效的容错性

现有容错机制:数据复制或者记录日志RDD具有天生的容错性:血缘关系,重新计算丢失分区,无需回滚系统,重算过程在不同节点之间并行,只记录粗粒度的操作

2.中间结果持久化到内存,数据在内存中的多个RDD操作直接按进行传递,避免了不必要的读写磁盘开销

3.存放的数据可以是JAVA对象,避免了不必要的对象序列化和反序列化

七、RDD的依赖关系

父RDD的一个分区只被一个子RDD的一个分区所使用就是窄依赖,否则就是宽依赖

scala生态系统,spark,大数据,分布式

窄依赖是子RDD的一个分区只依赖与某个父RDD中的一个分区

scala生态系统,spark,大数据,分布式

宽依赖是子RDD的每一个分区都依赖于某个父RDD中一个以上的分区

八、Scala特性

1)面向对象

Scala是一种纯粹的面向对象语言。一个 对象的类型和行为是由类和特征描述的。类通过子类化和灵活的混合类进行扩展,成为多重继承的可靠解决方案。

2)函数式编程

Scala提供了轻量级语法来定义匿名函数,支持高阶函数,允许函数嵌套,并支持函数 柯里化。Scala 的样例类与模式匹配支持函数式编程语言中的代数类型。Scala 的单例对象 提供了方便的方法来组合不属于类的函数。用户还可以使用Scala 的模式匹配,编写类似 正则表达式的代码处理可扩展标记语言( Extensible Markup Language, XML )格式的数据。

3)静态类型

Scala配备了表现型的系统,以静态的方式进行抽象,以安全和连贯的方式进行使用。系统支持将通用类、内部类、抽象类和复合类作为对象成员,也支持隐式参数、转换和多

4)可扩展

Scala提供了许多独特的语言机制,可以以库的形式无缝添加新的语言结构

九、Scala安装

1)上传并解压安装spark安装包

tar -zxvf / export/ software/ spark-3.0.3-bin-hadoop2.7.tgz

2)设置环境变量

vim /etc/profile
exportSPARK_HOME=/usr/local/soft/spark-3.0.3
export PATH=$PATH:${SPARK_HOME}/bin
export PATH=$PATH:${SPARK_HOME}/sbin

 source一下是环境变量生效

source /etc/profile

 3)修改配置文件

cd spark/ conf/
cpspark env.sh.template spark env.sh
cp slaves. template slaves

加环境变量 

vim spark-env.sh
exportSCALA_HOME=/usr/local/soft/scala-2.12.12
exportJAVA_HOME=/usr/local/soft/jdk1.8.0_202
exportSPARK_MASTER_IP=master
exportSPARK_WOKER_CORES=2
exportSPARK_WOKER_MEMORY=2g
exportHADOOP_CONF_DIR=/usr/local/soft/hadoop-3.1.3/etc/hadoop
#exportSPARK_MASTER_WEBUI_PORT=8080
#export SPARK_MASTER_PORT=7070

修改从节点ip

vim slaves

 修改内容为slave1slave2

4)发布文件

scp -r/usr/local/soft/spark-3.0.3/ slave1:/usr/local/soft/
scp -r /usr/local/soft/spark-3.0.3/ slave2:/usr/local/soft/

 5)分别在slave1 slave2上设置环境变量

vim /etc/profile
exportSPARK_HOME=/usr/local/soft/spark-3.0.3
export PATH=$PATH:${SPARK_HOME}/binexportPATH=$PATH:${SPARK_HOME}/sbin

 source一下是环境变量生效

source /etc/profile

 6)启动集群:spark目录下

./start-all.sh

查看节点 :jps(master、slave1、slave2)主节点master上出现master在slave1出现Worker在slave2出现Worker文章来源地址https://www.toymoban.com/news/detail-839905.html

到了这里,关于嬛嬛喊你学Spark、Scala的安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 认识spark,Scala简介

    Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发的通用内存并行计算框架Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京

    2024年03月20日
    浏览(41)
  • spark源码的scala解析

    一、scala抽象类和java的有何不同? 在org/apache/spark/util/collection/SortDataFormat.scala中有以下抽象类 private[spark] abstract class SortDataFormat[K, Buffer] {...}    然后在org/apache/spark/graphx/Edge.scala中,直接调用了xxx = new SortDataFormat[Edge[ED], Array[Edge[ED]]] {...} 为啥可以直接new一个抽象类呢??sc

    2024年02月12日
    浏览(37)
  • Spark Scala大数据编程实例

    Scala是一门现代的多范式编程语言,平滑地集成了面向对象和函数式语言的特性,旨在以简练、优雅的方式来表达常用编程模式。Scala的设计吸收借鉴了许多种编程语言的思想,只有很少量特点是Scala自己独有的。Scala语言的名称来自于“可伸展的语言”,从写个小脚本到建立

    2024年02月04日
    浏览(49)
  • Spark-Scala语言实战(6)

    在之前的文章中,我们学习了如何在scala中定义与使用类和对象,并做了几道例题。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战(5)-CSDN博客 文章浏览阅读1.6k次,点赞51次,

    2024年04月17日
    浏览(42)
  • Spark-Scala语言实战(9)

    之前的文章中,我们学习了如何在spark中使用RDD方法的flatMap,take,union。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战(8)-CSDN博客 文章浏览阅读675次,点赞16次,收藏10次。​今

    2024年04月15日
    浏览(47)
  • spark与scala的对应版本查看

    https://mvnrepository.com/artifact/org.apache.spark/spark-core 总结 spark3.0 以后,不再支持 scala2.11 spark3.0 以后,只能用 scala2.12以上

    2024年02月02日
    浏览(30)
  • Spark算子-Scala版本 头歌答案

    第1关 Spark算子--Scala版本 编程要求 根据提示,在右侧编辑器 begin-end 处补充代码,输出每个元素及其长度并去重。 测试说明 平台会对你编写的代码进行测试: 预期输出: 开始你的任务吧,祝你成功! 第2关:转换算子之flatMap和filter算子 编程要求 根据提示,在右侧编辑器

    2023年04月15日
    浏览(48)
  • Spark-Scala语言实战(7)

    在之前的文章中,我们学习了如何在IDEA中导入jars包,并做了一道例题,了解了RDD。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战(6)-CSDN博客 文章浏览阅读695次,点赞15次,

    2024年04月15日
    浏览(54)
  • Spark-Scala语言实战(15)

    在之前的文章中,我们学习了如何在spark中使用键值对中的学习键值对方法中的lookup,cogroup两种方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战(14)-CSDN博客 文章浏览阅

    2024年04月15日
    浏览(50)
  • Spark-Scala语言实战(14)

    在之前的文章中,我们学习了如何在spark中使用键值对中的fullOuterJoin,zip,combineByKey三种方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-Scala语言实战(13)-CSDN博客 文章浏览阅读735次

    2024年04月10日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包