概述
Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。目前已经形成一个高速发展应用广泛的生态系统
Spark特性:
- 快速:大多数操作均在内存中迭代,只有少部分函数需要落地到磁盘。
- 易用性:支持scala、Java、Python、R等语言;提供超过80个算子,API使用及其方便
- 通用性:Spark提供了针对数据处理的一站式解决方案,计算时用Spark Core算子(替代Hadoop Map/Reduce),批处理时用Spark SQL(替代HiveSQL),实时计算用Spark Streaming(替代Stom),机器学习用Spark MLlib(替代Mahout;另外,通过Spark GraphX进行图计算。
- 运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源
适用场景
- 复杂的批量处理(Batch Data Processing),偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数分钟到数小时;
- 基于历史数据的交互式查询(Interactive Query),通常的时间在数十秒到数十分钟之间
- 基于实时数据流的数据处理(Streaming Data Processing),通常在数百毫秒到数秒之间
为什么要学Spark
基于MapReduce的计算引擎通常会将中间结果输出到磁盘上进行存储和容错。出于任务管道承接的考虑,当一些查询翻译到MapReduce任务时,往往会产生多个Stage,而这些串联的Stage又依赖于底层文件系统(如HDFS)来存储每一个Stage的输出结果 Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可以融入Hadoop的生态系统,以弥补MapReduce的不足。与Hadoop MapReduce相比,Spark基于内存的运算要快100倍以上。
spark架构
Spark基本模式
Spark Core:大规模并行和分布式数据处理的基础引擎。核心是分布式执行引擎,Java、Scala和Python API为分布式ETL应用程序程序开发提供了一个平台。此外,在核心上构建的其它库允许用于流式传输,SQL和机器学习的各种工作负载。
主要作用
- 内存管理和故障恢复
- 集群调度、分发和监视作业
- 与存储系统交互
核心功能
- 基础设施:Spark中有很多基础设施,被Spark中的各种组件广泛使用,这些基础设施包括SparkConf(用于管理Spark应用程序的各种配置信息)、Spark内置RPC框架(使用Netty实现,有同步和异步的多种实现,Spark各个组件间的通信都依赖于此RPC框架)、事件总线ListenerBus(是SparkContext内部各个组件间使用事件–监听器模式异步调用的实现)、度量系统(是由Spark中的多种度量源【Source】和多种度量输出【Slink】构成,完成对整个Spark集群中各个组件运行期状态的监控。)
- SparkContext:SparkContext是Spark的入口,
未完,待续…
|