一、Spark简介与优点:
Spark 是专为大规模数据处理而设计的开源、快速、通用的计算引擎。可以使用Java、Scala、Python、R 和 SQL 等语言调用API来执行spark 。Spark可以在Hadoop YARN、Apache Mesos 和独立集群管理器上运行。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。Spark借鉴Hadoop MapReduce优点的同时,解决了MapReduce所面临的问题,相比Hadoop MapReduce,主要具有如下优点:
1、Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,如:filter、flatMap、lookup 、reduce、groupByKey等,编程模式更加灵活;
2、Spark提供的内存计算,可将中间输出结果直接保存在内存中,而不需要读写HDFS磁盘文件,有数据验证执行逻辑回归的运行速度比Hadoop MapReduce提升100倍,但是,在磁盘上,它的运行速度也比Hadoop快10倍;
3、Spark基于DAG的任务调试执行机制,要优于Hadoop MapReduce迭代执行机制;
4、而且Spark生态与社区越来越活跃,很多厂家与开发人员加入Spark大本营;
二、Spark常用术语:
RDD:是弹性分布式数据集(Resilient Distributed Dataset)的简称,是分布式内存的一个抽象概念,它是一个不可变的数据集,不能随时间变化。这些数据可以存储在整个集群的内存或磁盘中。数据在集群上进行逻辑分区。它提供跨集群的并行操作。由于 RDD 无法更改,因此可以使用多种操作进行转换。此外,RDD 是容错的。如果发生任何故障,它可以通过逻辑拓普图自动重建丢失的数据。
DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系。
Driver Program:驱动程序是运行应用程序main()函数的进程。它还创建了 SparkContext。该程序运行在机器的主节点上。同时,它还声明了对数据 RDD 的转换和操作。负责为Application构建DAG图。
Cluster Manager:集群资源管理中心,负责分配计算资源,spark支持Apache Spark Standalone集群管理器、Hadoop Yarn、Mesos等。
Worker Node:工作节点,负责完成具体计算,集群中任何运行程序的节点都被定义为工作节点。
Executor:是运行在工作节点(Worker Node)上的一个进程,负责运行Task,并为应用程序存储数据。
Application:用户编写的Spark应用程序,一个Application包含多个Job。
Job:作业,一个Job包含多个RDD及作用于相应RDD上的各种操作。
Stage:阶段,是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”。
Task:任务,运行在Executor上的工作单元,是Executor中的一个线程。
总结:Application由多个Job组成,Job由多个Stage组成,Stage由多个Task组成。Stage是作业调度的基本单位。