一、简介
最初由美国加州伯克利大学实验室于2009年开发,2013年加入Apache开源项目,开始崭露头角。Spark是基于内存计算的大数据并行计算框架,可用于构建大型、低延迟数据分析程序,成为Apache最重要的三大分布式计算系统开源项目之一。(Hadoop、Spark、Storm)Hadoop基于MapReduce进行批量数据处理,Storm适合流式数据处理。
运行速度测试:Spark/206个节点/23分钟/100TB的排序。
二、特点
1、运行速度快:使用DAG执行引擎以支持循环数据流与内存计算。
2、容易使用:支持Scala/Java/Python/R语言进行编程,可通过Spark Shell 进行交互式编程。
3、通用性,Spark提供了完整而强大的技术栈,包括支持内存计算的Spark Core,可以完成SQL查询分析的Spark SQL,可以完成流式计算的Spark Streaming,机器学习组件Spark MLlib、图计算软件GraphX。
4、运行模式多样,可运行于独立的集群模式中,也可运行于Hadoop中,并且可以访问Cassandra/HBase/Hive等多种数据源。
三、Scala简介
Scala兼容Java,具有强大的并发性,很容易融入Hadoop生态圈。
四、Hadoop与Spark对比
1、Hadoop缺点:磁盘IO开销大,延迟高。
2、Spark提供了内存计算,可将结果表放到内存中。
五、Spark生态系统
1、RDD:弹性分布式数据集 ,分布式内存。
六、Spark SQL
仅仅依赖于HiveQL解析,Hive元数据,得到一个语法树之后,自己实现。
1、与其他组件对比:
Hive:
构建在Hadoop之上,查询管理分布式存储上的大数据集的数据仓库组件。底层使用MapReduce计算框架,Hive查询被转化为MapReduce代码并执行。生产环境建议使用RDBMS存储元数据。支持JDBC、ODBC、CLI等连接方式。
Spark SQL:
底层使用Spark计算框架,提供有向无环图,比MapReduce更灵活。Spark SQL以Schema RDD为核心,模糊了RDD与关系表之间的界线。Schema RDD是一个由Row对象组成的RDD,附带包含每列数据类型的结构信息。Spark SQL复用Hive的元数据存储。支持JDBC、ODBC、CLI等连接方式,并提供多种语言的API。
Impala:
底层采用MPP技术,支持快速交互式SQL查询。与Hive共享元数据存储。Impalad是核心进程,负责接收查询请求并向多个数据节点分发任务。statestored进程负责监控所有Impalad进程,并向集群中的节点报告各个Impalad进程的状态。catalogd进程负责广播通知元数据的最新信息。
另外,Spark Streaming 支持到秒级,不支持到毫秒级。