spark
-
翻译 Apache Spark is a fast and general-purpose cluster computing system. It provides high-level APIs in Java, Scala, Python and R, and an optimized engine that supports general execution graphs. It also supports a rich set of higher-level tools including Spark SQL for SQL and structured data processing, MLlib for machine learning, GraphX for graph processing, and Spark Streaming.
-
什么是spark?
Spark是一个基于内存的快速,通用,可扩展的大数据分析引擎
-
Spark使用Scala语言进行实现,它是一种面向对象、函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集,在Spark官网上介绍,它具有运行速度快、易用性好、通用性强和随处运行等特点。
-
-
spark生态:
-
spark core: spark 的核心计算
-
spark sql :对历史数据做交互式查询(即席查询:用户根据自己的需求 自定义查询)
-
spark Streaming : 近实时计算
-
spark ml :机器学习
-
spark graph :图计算(关注事物本身而且关注事物之间的联系)
-
-
什么是结构化和非结构化?
-
结构化:列固定,值不能随便写
-
非结构化:列不固定,内容随便写
-
-
实时计算框架Storm sparkString flink 区别?
-
有限数据集与无限数据集区别
-
Storm和Flink是属于无限数据集数据持续增长,用于流式处理
-
SparkString是属于有限数据集,处理数据大小有限,批量处理
-
-
Flink是原生的流处理系统,提供high level的API。Flink也提供 API来像Spark一样进行批处理,但两者处理的基础是完全不同的。Flink把批处理当作流处理中的一种特殊情况。在Flink中,所有 的数据都看作流,是一种很好的抽象,因为这更接近于现实世界
-
Storm是一个免费并开源的分布式实时计算系统。利用Storm可以很容易做到可靠地处理无限的数据流,像Hadoop批量处理大数据一样,Storm可以实时处理数据。
Storm 很简单,可用于任意编程语言。Apache Storm 采用 Clojure 开发。Storm 有很多应用场景,包括实时数据分析、联机学习、持续计算、分布式 RPC、ETL 等。
-
Spark流是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可以由多个源取得,例如:Kafka,Flume,Twitter,ZeroMQ,Kinesis或者TCP接口,同时可以使用由如map,reduce,join和window这样的高层接口描述的复杂算法进行处理。最终,处理过的数据可以被推送到文件系统,数据库和HDFS。Spark Streaming是一个粗粒度的框架【也就是只能对一批数据指定处理方法】,核心是采用微批次(Mcro-batch)架构。和Storm采用的以条处理的不同
-
-
spark 的资源调度?
-
standalone yarn mesos
-
Spark中涉及的资源调度可以分为4层:
-
YARN对不同SparkApplication(SparkContext)的调度
-
同一个SparkAppliction内不同资源池(pool)之间的调度
-
同一个SparkAppliction内同一个资源池(pool)内不同TaskSetManager的调度
-
同一个SparkAppliction内同一个资源池(pool)内同一个TaskSetManager内的Task调度
-
-
-
什么是Rdd?
-
RDD(Resilient Distributed Dataset)叫做分布式数据集,是 Spark 中最基本的数据抽象。
代码中是一个抽象类,它代表一个不可变、可分区、里面的元素可并行计算的集合。
-
-
Rdd的属性?
-
一组分区(Partition),即数据集的基本组成单位;
-
一个计算每个分区的函数;
-
RDD 之间的依赖关系;
-
一个 Partitioner,即 RDD 的分片函数;
-
一个列表,存储存取每个 Partition 的优先位置(preferred location)。
-
-
Rdd的特点?
-
RDD 表示只读的分区的数据集,对 RDD 进行改动,只能通过 RDD 的转换操作,由一个 RDD 得到一个新的 RDD,新的 RDD 包含了从其他 RDD 衍生所必需的信息。RDDs 之间存在依赖,RDD 的执行是按照血缘关系延时计算的。如果血缘关系较长,可以通过持久化RDD 来切断血缘关系。
-
-
spark on hive 和 hive on spark?
-
spark on hive:hive作为数据源,spark计算
-
hive on spark:spark 作为hive 底层的计算引擎
-
-
spark 为什么比hadoop 的mr快?
-
基于内存
-
spark实现了DAG引擎
-
spark的容错
-
-
什么是DAG?
-
有向无环图,DAG(Directed Acyclic Graph)叫做有向无环图,原始的 RDD 通过一系列的转换就就形成了 DAG,根据 RDD 之间的依赖关系的不同将 DAG 划分成不同的 Stage,对于窄依赖, partition 的转换处理在 Stage 中完成计算。对于宽依赖,由于有 Shuffle 的存在,只能在 parent。
-
-
spark 的特点?
-
快
-
与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上
-
-