你好,游客 登录
背景:
阅读新闻

云日志分析:hadoop spark编程实战入门教程6-5:spark系统入门

[日期:2017-09-04] 来源:aboutyun  作者:pig2 [字体: ]
1.什么是spark
spark起源
Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架

spark特点
Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS

spark编程语言
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。

spark是什么框架
内存计算框架

2.spark场景

目前大数据处理场景有以下几个类型:
1.复杂的批量处理(Batch Data Processing),偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数十分钟到数小时;
2.基于历史数据的交互式查询(Interactive Query),通常的时间在数十秒到数十分钟之间;
3.基于实时数据流的数据处理(Streaming Data Processing),通常在数百毫秒到数秒之间;

目前对以上三种场景需求都有比较成熟的处理框架,第一种情况可以用Hadoop的MapReduce来进行批量海量数据处理,第二种情况可以Impala 进行交互式查询,对于第三中情况可以用Storm分布式处理框架处理实时流式数据。以上三者都是比较独立,各自一套维护成本比较高,而Spark的出现能 够一站式平台满意以上需求。
以上分析

Spark适用场景:

1.Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小。
2.由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。
3.数据量不是特别大,但是要求近实时统计分析需求

Spark不适用场景:

1.内存hold不住的场景,在内存不足的情况下,Spark会下放到磁盘,会降低应有的性能
2.有高实时性要求的流式计算业务,例如实时性要求毫秒级
3.由于RDD设计上的只读特点,所以Spark对于待分析数据频繁变动的情景很难做(并不是不可以),比如题主例子里的搜索,假设你的数据集在频繁��化(不停增删改),而且又需要结果具有很强的一致性(不一致时间窗口很小),那么就不合适了。
4.流线长或文件流量非常大的数据集不适合。你会发现你的内存不够用,集群压力大时一旦一个task失败会导致他前面一条线所有的前置任务全部重跑,然后恶性循环会导致更多的task失败,整个spark app效率极低。就不如MapReduce啦!
比较MapReduce与storm
1.相比hadoop MapReduce 主要的改进:
(1)迭代运算,一次创建数据集。多次使用,减少了IO的开销。
(2)允许多种计算模型(包含map-reduce)
(3)支持非OO式算法实现,对机器学习算法,图计算能力有很好的支持。

2.storm比较
单纯的统计,要求实时性比较高的,用storm比较合适
涉及到机器学习和模型计算,spark 和spark streaming比较好




spark生态系统





Spark生态圈以Spark Core为核心,从HDFS、Amazon S3和HBase等持久层读取数据,以MESS、YARN和自身携带的Standalone为资源管理器调度Job完成Spark应用程序的计算。 这些应用程序可以来自于不同的组件,如Spark Shell/Spark Submit的批处理、Spark Streaming的实时处理应用、Spark SQL的即席查询、BlinkDB的权衡查询、MLlib/MLbase的机器学习、GraphX的图处理和SparkR的数学计算等等。

spark core
Spark Core提供内存计算框架,以下总结一下Spark内核架构:
1.提供了有向无环图(DAG)的分布式并行计算框架,并提供Cache机制来支持多次迭代计算或者数据共享,大大减少迭代计算之间读取数据局的开销,这对于需要进行多次迭代的数据挖掘和分析性能有很大提升

2. 在Spark中引入了RDD (Resilient Distributed Dataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”对它们进行重建,保证了数据的高容错性;在后 面版本中又引入了DataFrame,DataSet。

3.  移动计算而非移动数据,RDD Partition可以就近读取分布式文件系统中的数据块到各个节点内存中进行计算

4.  使用多线程池模型来减少task启动开稍

5.  采用容错的、高可伸缩性的akka作为通讯框架

相关内容spark core组件:RDD、DataFrame和DataSet介绍、场景与比较
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20902

Spark SQL
而hive on spark是一个hive的发展计划,该计划将spark作为hive的底层引擎之一,也就是说,hive将不再受限于一个引擎,可以采用map-reduce、Tez、spark等引擎。
spark sql比hive sql性能更快,sparkSQL组成包含四个模块,core、catalyst、hive、hive-Thriftserver其中最核心为 catalyst。catalyst包含的组件包括:sqlParse(sql解析器),Analyzer(语法分析器),Optimizer(优化 器),Planner,CostModel
对于spark sql的查询计划,则可以通过hive/console的query.queryExecution查看
更多更详细内容

Spark Sql系统入门2:spark sql精简总结

Spark Sql系统入门1:什么是spark sql及包含哪些组件




Spark Streaming
用于流式计算。Spark Streaming支持Kafka、Flume、Twitter、MQTT、ZeroMQ、Kinesis和简单的TCP套接字等多种数据输入源。输入流 接收器(Receiver)负责接入数据,是接入数据流的接口规范。Dstream是Spark Streaming中所有数据流的抽象,Dstream可以被组织为Dstream Graph。Dstream本质上由一系列连续的RDD组成。

GraphX
Spark提供的分布式图计算框架。GraphX主要遵循整体同步并行(bulk Synchronous parallel,BSP)计算模式下的Pregel模型实现。GraphX提供了对图的抽象Graph,Graph由顶点(Vertex),边 (Edge)及继承了Edge的EdgeTriplet三种结构组成。GraphX目前已经封装了最短路径,网页排名,连接组件,三角关系统计等算法的实 现,用户可以选择使用。

MLlib
Spark提供的机器学习框架。机器学习是一门设计概率论、统计学、逼近论、凸分析、算法复杂度理论等多领域的交叉学科。MLlib目前已经提供了基础统 计、分析、回归、决策树、随机森林、朴素贝叶斯、保序回归、协同过滤、聚类、维数缩减、特征提取与转型、频繁模式挖掘、预言模型标记语言、管道等多种数理 统计、概率论、数据挖掘方面的数学算法。






spark部署方式

1.spark on local【本地模式
常用于本地开发测试,本地还分为local单线程和local-cluster多线程;

2.spark独立模式(standalone)【集群模式
Spark原生的完全分布式集群,典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持 ZooKeeper来实现HA
2.spark on yarn【集群模式
运行在yarn资源管理器框架之上,由yarn负责资源管理,Spark负责任务调度和计算

3.spark on mesos【集群模式
运行在mesos资源管理器框架之上,由mesos负责资源管理,Spark负责任务调度和计算

4.spark On cloud【集群模式】
比如AWS的EC2,使用这个模式能很方便的访问Amazon的S3;
Spark支持多种分布式存储系统:HDFS和S3



Spark目录结构


子目录         功能       
core            Spark核心代码都在此目录下       
sql             Spark sql相关的代码       
streaming      Spark Streaming(实时计算)代码
mlib            MLib(机器学习)相关代码       
graphx         GraphX(图计算)相关代码       
yarn            支持Spark运行在Yarn上的模块       
example        各种spark作业的例子       
Assembly       组装spark项目的地方           
ec2             提交spark集群到Amazon EC2       
external         与一些外部系统的依赖       
extra            包含了spark默认不构建的组件       
repl             Spark shell功能模块       
tools            工具包
收藏 推荐 打印 | 阅读: