使用的典型场景是什么?
Spark使用SparkSQL、Spark Streaming、MLlib、Graph几乎完美地解决了大数据中的Batch Processing、Stream Processing、Ad-hocQuery(即席查询)等三大核心问题。
Spark定义
a.是一个通用的大规模数据快速处理引擎。
b.Spark就是一个大数据分布式处理框架。
3.Spark在性能和方案的统一性都具有显著的优势。
如何学习Spark
- 配置spark环境:先安装linux,java,Scala,spark等软件,配置环境变量,搭建集群。建议你先熟悉一下linux系统。
- 学习scala语言 ,函数式编程,这些有点难度。我是学java过来的,感觉很不适应,语法感觉很怪,需要冷静下来好好学习,trait ,object 伴生对象,柯里化等概念还是需要好好理解的,他也有很多好处,比如apply()方法,很方便的新建一个对象那个,用得多了,就觉得很好用,我现在就觉得很好用,学过java好理解一些,本质一样,表达方式不同而已。建议您学习一下java。
- spark学习,最好学习spark的方式就是看官方文档,跟着官方文档过一遍手,基本就理解的差不多啦,接下来用idea集成编程完成的程序,调试测试等,基本就可以上手啦!
- 接下深入理解就看源码,深入Spark内核,通过源码掌握Spark的任务提交过程,掌握Spark集群的任务调度,尤其要精通DAGScheduler、TaskScheduler和Worker节点内部的工作的每一步的细节。
-
基于Spark上的核心框架的使用,学习SparkSQL(关系型操作)、Spark Streaming(实时处理)、MLlib(机器学习)、GraphX(图处理)这些。
-
我们使用spark一般都使用Yarn框架,所以我觉得还需要学些Hadoop学习。有hdfs和mr(现在是YARN)组成,有兴趣可以看https://www.toutiao.com/i6506428976062267907/这篇文章
场景
-
Spark是一个分布式内存型计算框架,吸收MR的优点,以RDD数据来表示模型,提供多种算子,例如map|filter|flatMap|sample|groupByKey|reduceByKey|union|join等,并将中间数据放到内存中,使得迭代运算效率更高,更适合于实时计算|交互式计算或者要求计算量大、效率要求高等场景。与Yarn的结合,使得Spark可以与MR运行与同一个集群中,共享存储资源与计算资源,不断完善的SparkSQL,可以与Hive兼容,大大增强了Spark的应用范围及优越性。
-
Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小。
总的来说Spark的适用面比较广泛且比较通用。
Spark的特点
a.快速基于内存计算速度是MR的100倍,基于磁盘计算的速度是MR的10倍
快的原因是:Spark有一个DAG(有向无环图)执行引擎,支持循环数据流和内存计算。
b.易用
提供多语言的API,能快速实现应用,相比MR有简洁的代码,安装部署简单
c.通用
提供一个强大的技术栈,包括查询语言SparkSQL、实时流处理工具Spark Streaming、机器学习工具MLlib、图计算工具GraphX, Spark的目的在于构建一个结构上一体化功能上多元化的高效数据流水线技术栈。
d.集成Hadoop
Spark可以运行在YARN上,可以读取Hadoop的任何数据
下面是Spark生态系统
Spark Core:它包含Spark的基本功能(任务调度、内存管理、故障恢复以及存储系统的交互),包含RDD|Stage|DAG|它的核心思想就是将数据缓存在内存中,并用Lineage机制容错。
a.RDD:
-
Resilient Distributed DataSets,是分布式只读的且已分区的集合对象。
-
这些集合是弹性的,如果数据集的一部分丢失,则可以对它们进行重建。
-
具有自动容错|位置感知调度|可伸缩性的特点。
-
对于记录数据的更新,RDD也只支持粗粒度的转换(记录如何从其他RDD转换而来即Lineage,以便恢复丢失的分区)
-
数据集容错的两种方式:数据检查点(成本高,服务器之间的传输的问题)和记录数据的更新。
Spark大数据处理框架
1.Spark速度快的原因
a.统一的RDD抽象和操作:Spark基于RDD抽象,使得Spark的框架轻而易举地使用Spark Core中的所有内容, 并且各个框架可以在内存中无缝地集成和完成系统任务。
b.Spark是基于统一的技术堆栈。
2.基于内存的迭代式计算
-
MR在每次执行时都要从磁盘读数据,计算完毕之后都要把数据存放在磁盘上。
-
Spark是基于内存的,每次运算都是在内存中计算的。
3.DAG
a.是另外一个快的重要原因
b.基于RDD,Spark具备了非常精致的作业调度系统
c.DAG中的依赖有宽依赖和窄依赖之分,DAG可以根据依赖对pipeline等进行优化操作
d.基于RDD和DAG并行计算整个Job.
4.出色的容错机制
a.基于DAG图,lineage是轻量级且高效的
b.操作之间相互具备lineage的关系,每个操作只关系其父操作,各个分片的数据之间互不影响,
出现错误时只要恢复单个split的特定部分
觉得spark挺好用的,但是有一些场景还是不适用
欢迎各位大神来指点
三台32g 1T固态,就20万数据用HBase跟SPark比Sql慢太多?为啥?
MySQL是单机性能很好,基本都是内存操作,而且没有任何中间步骤。所以数据量在几千万级别一般都是直接MySQL了。
hadoop是大型分布式系统,最经典的就是MapReduce的思想,特别适合处理TB以上的数据。每次处理其实内部都是分了很多步骤的,可以调度大量机器,还会对中间结果再进行汇总计算等。所以数据量小的时候就特别繁琐。但是数据量一旦起来了,优势也就来了。
大数据零基础的学习,怎样可以快速学好?
这是一个非常好的问题,作为一名科研教育工作者,我来回答一下。
首先,大数据技术体系是非常庞大的,要想全面了解大数据技术需要一个系统的学习过程,而且还需要突破一系列学习难点,对于零基础的初学者来说,要想实现快速入门,最为直接和有效的方式之一就是选择一个切入点,然后基于应用场景来学习大数据技术。
大数据的应用场景非常多,不同的应用场景对于大数据技术的要求也有所不同,初学者可以基于自己的知识结构和所处的行业环境,来选择一个适合自己的应用场景。大数据的行业应用无非有三大场景,其一是数据采集场景,其二是数据分析场景,其三是数据应用场景,可以结合具体的场景来制定学习规划。
数据采集的应用场景非常多,很多行业领域在开展业务的过程中,都需要先完成数据采集任务,而数据采集领域的人才需求量也相对比较大,整个数据采集涉及到的环节也比较多,包括数据采集、整理和存储三大部分。相对于数据分析和应用环节来说,数据采集的入门还是相对比较容易的,初学者可以从爬虫开始学起,然后再逐渐展开和深入。
数据分析是大数据技术的核心之一,数据分析也是当前实现数据价值化的主要方式之一,所以学习大数据技术通常都一定要重视数据分析技术。数据分析当前有两大方式,其一是统计学方式,其二是机器学习方式,这两种方式的学习都需要一个过程,可以从基本的统计学知识开始学起,要重视数据分析工具的学习。
数据应用是大数据价值的出口,当前的数据应用目标有两大类,其一是给决策者使用,其二是给智能体使用,当前随着大数据逐渐成为互联网价值的一个重要载体,数据应用目标还将增加一个价值载体的分类。
最后,对于大数据初学者来说,不论选择哪个学习场景,最好要能够得到专业人士的指导,这对于提升学习效率有非常直接的影响。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以私信我!