每天十分钟学会Spark

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

Spark概述 [参考Spark大数据技术与应用(第二版)]

Spark是什么

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop
Spark是一种基于内存的快速、通用、可拓展的大数据分析计算引擎。
Spark官网:http://spark.apache.org/

Spark的特点


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

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop
2、易用
  Spark支持使用Scala、Python、Java及R语言快速编写应用。同时Spark提供超过80个高阶算子,使得编写并行应用程序变得容易,并且可以在Scala、Python或R的交互模式下使用Spark。

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop


3、通用

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

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop

4、随时运行

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

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop

5、代码简洁

Spark支持使用Scala、Python等语言编写代码。Scala和Python的代码相对Java的代码而言比较简洁,因此,在Spark中一般都使用Scala或Python编写应用程序,这也比在MapReduce中编写应用程序简单方便。例如,MapReduce实现单词计数可能需要60多行代码,而Spark使用Scala语言实现只需要一行代码。

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop

sc.textFile("/user/root/a.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("/user/root/output")

以上是Spark的优点,难道Spark是完美无缺的吗?

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop

Spark的缺点 
1、功能单一
2、资源消耗

MapReduce PK Spark

1.通用性

Spark(实时)
一栈式,主要说的是,Spark不仅仅可以进行离线计算(SparkCore),同时还可以进行流式处理(SparkStreaming)、交互式计算(SparkShell,SparkSQL,StructStreaming,图计算(SparkGraphx),机器学习(SparkMLLib),也就是说我们可以在一个项目中,同时可以使用上述所有的框架,这是Spark相比较于其它框架最大的优势。可以使用多中语言进行编程。

MapReduce
MapReduce主要是擅长离线的计算,不擅长实时计算。

2.内存和磁盘的使用情况

Spark
Spark是基于RDD,主要使用内存进行储存计算的源数据及过程的数据,避免了写磁盘的IO操作,速度自然比较快。

MapReduce
MapReduce基于磁盘的计算,计算的过程中需要大量的溢写磁盘的操作,IO瓶颈比较明显,速度自然不好。

3.API

Spark
Spark编程过程中系统提供了大量的算子,transformation和action算子,功能之强大是MR无法比拟的,编程自由度比较高。

MapReduce
MapReduce的编程API只是提供了 map和reduce的操作,编程局限性比较大,什么操作都需要往规定好的模式上去套,死板。

4.系统自由度

Spark
Spark给用户提供了诸多的参数进行设置,适应不同场景的应用,比如sort,系统并没有强制进行sort,如果需要可以进行相应参数的设置,去掉自动排序的功能之后提高效率。

MapReduce
MapReduce的shuffle的过程中相当的复杂,虽然shuffle的过程是奇迹发生的地方,但是这里边做的事太多了,很多没有法子去掉,也就是说有可能对于场景无用的操作也做了,比如排序,本身其实我们有可能不需要sort,但是基于MR的特性,它必须依靠sort,这样白白浪费了性能。

5.系统容错性

Spark
Spark中有个血缘关系,在计算过程中如果出现问题造成数据丢失,系统不用重新计算,只需要根据血缘关系找到最近的中间过程数据进行计算,而且基于内存的中间数据存储增加了再次使用的读取的速度。

MapReduce
MapReduce的过程中的中间文件溢写磁盘,如计算过程中出现数据的丢失,只能重新来过.严重影响时效性。

MapReduce PK Spark简直完败,但是Hadoop能被Spark取代吗?每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop

答案是:不能!!!Spark 并不能完全替代 Hadoop,Spark 主要用于替代Hadoop中的MapReduce 计算模型。存储依然可以使用 HDFS,但是中间结果可以存放在内存中,调度可以使用 Spark 内置的,也可以使用更成熟的调度系统 YARN 等。

结构化数据与非结构化数据


结构化数据:即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据。
ps:二维表结构,用通俗的话来说就是excel表格,即:有行有列的。

非结构化数据:不方便用数据库二维逻辑表来表现的数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。 

半结构化数据:就是介于完全结构化数据(如关系型数据库、面向对象数据库中的数据)和完全无结构的数据(如声音、图像文件等)之间的数据,HTML文档就属于半结构化数据。它一般是自描述的,数据的结构和内容混在一起,没有明显的区分。

spark搭建的三种模式


1、Standalone模式(独立、本地模式)

Standalone模式是Spark自带的资源管理器。

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop

2、YARN模式

YARN模式根据Driver在集群中的位置又分为两种。

Spark on YARN

cluster模式:

driver运行在集群子节点上,适合用于生产,通信成本低,只能在日志中查看输出结果

yarn-client运行流程

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop

client模式:

dirver运行在提交任务的客户端上,通信成本高,可以直接查看输出结果

yarn-cluster运行流程

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop

3、Mesos模式

官方推荐这种模式(当然,原因之一是血缘关系)。正是由于Spark开发之初就考虑到支持Mesos,因此,目前而言,Spark运行在Mesos上会比运行在YARN上更加灵活,更加自然。

Spark RDD转换和操作示例

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop

宽依赖与窄依赖

窄依赖:表现为一个父RDD的分区对应于一个子RDD的分区或者多个父RDD的分区对应于一个子RDD的分区。(独生子女关系)

宽依赖:表现为存在一个父RDD的一个分区对应一个子RDD的多个分区。(超生现象)

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop

Q:Stage划分的依据是?

A:Stage划分基于数据依赖关系的,一般分为两类:宽依赖(Shuffle Dependency)与窄依赖(Narrow Dependency)。

Q:怎么定义一个Task?

A:Spark目前提供了两类Task,分别为ShuffleMapTask和ResultTask。一个stage可能包含一个或者多个task任务,task任务与partition、executor息息相关,即并行度。

每天十分钟学会Spark,spark,大数据,分布式,mapreduce,hadoop

总结上图,一个Stage内只会存在同一种Task,Task数量与Stage的Partition数量保持一致(运行的Task数量可能会大于Partition数量)

 文章来源地址https://www.toymoban.com/news/detail-841085.html

 

 

 

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

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

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

相关文章

  • C生万物 | 十分钟带你学会位段相关知识

    结构体相关知识可以先看看这篇文章 —— 链接 位段的声明和结构是类似的,有两个不同: 位段的成员必须是 int 、 unsigned int 或 signed int 位段的成员名后边有一个冒号和一个数字 在下面,我分别写了一个结构体和一个位段, 注意看位段的写法和结构体有什么不同 然后我们

    2023年04月09日
    浏览(23)
  • 使用cpolar内网穿透实现公网远程访问,十分钟就可以学会使用

    1.自己有公网IP,进入路由器做映射 2.自己有公网服务器搭建内网穿透 3.通过第三方公网服务器进行流量转发,映射本地端口 比较常见是第三种方式,不需要自己搭建服务,也不用去申请公网IP、不用设置路由器,不论是本地开发测试,远程联机还是远程访问都支持,随时可用

    2024年02月12日
    浏览(42)
  • 十分钟学会开发自己的Python AI应用【OpenAI API篇】

    最近 OpenAI 宣布 ChatGPT 将很快推出他们的 API。虽然我们不知道这需要多长时间,但这之前我们可以熟悉下OpenAI API,快速开发自己的AI应用! 通过今天学习 OpenAI API,你将能够访问 OpenAI 的强大模型,例如用于自然语言的 GPT-3、用于将自然语言翻译为代码的 Codex 以及用于创建和

    2024年04月25日
    浏览(25)
  • 十分钟带汝入门大数据开发语言Scala

    大家好,我是百思不得小赵。 创作时间:2022 年 6 月 7 日 博客主页: 🔍点此进入博客主页 —— 新时代的农民工 🙊 —— 换一种思维逻辑去看待这个世界 👀 今天是加入CSDN的第1193天。觉得有帮助麻烦👏点赞、🍀评论、❤️收藏 Scala是一门多范式的编程语言,一种类似Ja

    2024年02月02日
    浏览(43)
  • 十分钟掌握前端获取实时数据的三种主流方式

    前端获取实时数据的三种主流方式 本文聊聊前端获取实时数据的三种主要方式。想象一下,我们在网上购物时,经常能看到最新的优惠信息弹出,或者在社交媒体上看到朋友的最新动态更新。这些都是因为后端在默默地向我们的页面推送了最新的消息。那么,这背后到底使用

    2024年02月21日
    浏览(30)
  • Prometheus技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》

    宿主机挂载目录位置: 以及准备对应的挂载目录: /usr/local/docker/promethues/server 准备如下: data、config、rules、ClientAll、server   授权相关文件夹权限  目标容器位置: /etc/prometheus/prometheus.yml 使用代码编辑配置文件: 书写如下配置:  解释配置: 这个 prometheus.yml 文件是Prome

    2024年02月14日
    浏览(37)
  • Grafana技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》

    阿丹: Prometheus技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》_一单成的博客-CSDN博客         在正确安装了Prometheus之后开始使用并安装Grafana作为Prometheus的仪表盘。 搜索可拉取版本  拉取镜像       访问{ip}:3000 即可,使用账号密码 admin/admin进行登录即可 请按照

    2024年02月14日
    浏览(33)
  • 十分钟掌握 Flink CDC,实现Mysql数据增量备份到Clickhouse [纯干货,建议收藏]

    Clickhouse的优点. 真正的面向列的 DBMS ClickHouse 是一个 DBMS,而不是一个单一的数据库。它允许在运行时创建表和数据库、加载数据和运行 查询,而无需重新配置和重新启动服务器。 数据压缩 一些面向列的 DBMS(InfiniDB CE 和 MonetDB)不使用数据压缩。但是,数据压缩确实提高了

    2024年04月14日
    浏览(35)
  • 十分钟入门Zigbee

    大部分教程通常都是已Zigbee原理开始讲解和学习,各种概念让初学者难以理解。本教程从一个小白的角度出发,入门无需任何Zigbee底层原理知识,只需要基本的MCU研发经验就可以掌握,让您快速实现zigbee组网和节点之间通信。 本教程采用泰凌微TLSR8258芯片,芯片资料链接TLS

    2023年04月09日
    浏览(53)
  • 十分钟掌握Java本地缓存

    —————————— Yesterday is history, tomorrow is a mystery, but today is a gift. That is why it’s called the present. —————————— 缓存是Java开发中经常用到的组件,我们会使用缓存来存储一些 不经常改变 的 热点 数据,提高系统处理效率,其根本原因在于内存和硬盘读写速度的

    2024年02月05日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包