其他分享
首页 > 其他分享> > Spark1_简介

Spark1_简介

作者:互联网

Spark1

1.MapReduce局限性

1.1开发繁杂:

本身只提供了map/reduce两个算子,并没有groupby跟join这类的聚合操作的算子,如果要实现groupby跟join操作,则是借助于map跟reduce来实现,同时在mapreduce中可能会出现没有reduce仅仅只有map的场景,比如说mapjoin;同时mapreduce的测试环节也很繁杂

1.2效率:

mapreduce的计算效率相较于spark是偏低的

​ 1.进程级别低:MapTask跟ReduceTask都是有很多的进程

2.IO: chain,串行作业中前一个作业的输出作为后一个作业的输入的场景,会有频繁的网络+磁盘的io,同时还有很多的序列化操作.

​ 3.排序:mapreduce在每个阶段都会进行排序,但是很多场景中,排序过程是完全没有必要的

​ Tips:面试题 mapreduce作业中key的类型是实现什么接口? 答案:Writable接口(实现序列化)跟WritableComparable接口(实现排序),Writable接口中有两个方法,一个是readFields读方法,一个是write写方法.

​ 4.Memory:mapreduce基于内存的处理是有限的

所以mapreduce不适合迭代处理,不适合实时流式处理.

2.很多框架各自为战

多框架串行处理(上方)与spark框架(下方)处理对比

3.Spark简介

官网地址: http://spark.apache.org

Apache Spark™ is a unified analytics engine for large-scale data processing.

Spark是一个快速的分布式计算框架

3.1Speed 速度快

​ 1.spark有基于memory内存的计算.

​ 2.spark基于thread线程模型的实现.

​ 3.spark中排序sort是可以自己指定的,可以不配置排序.

​ 4.spark中有向无环图DAG是pipeline形式的,可以减少中间io跟磁盘开销提升速度,例如rdd.filter… collect需要最后的collect才会执行(而mapreduce中是遇到Task就执行,DAG有大量的io开销)

3.2Easc of Use 易用

Write applications quickly in Java, Scala, Python, R, and SQL.

可以使用以上语言来实现spark框架

Spark offers over 80 high-level operators that make it easy to build parallel apps. And you can use it interactively from the Scala, Python, R, and SQL shells.

Spark提供了超过80种高级算子API,例如groupby,join等操作,同时还能在命令行上实现交互式操作

3.Generality 通用性

Combine SQL, streaming, and complex analytics.

Spark powers a stack of libraries including SQL and DataFrames, MLlib for machine learning, GraphX, and Spark Streaming. You can combine these libraries seamlessly in the same application.

有spark sql,流形式等形式的处理

4.Runs Everywhere 运行在任何地方

Spark runs on Hadoop, Apache Mesos, Kubernetes, standalone, or in the cloud. It can access diverse data sources.

spark可以在任何的模式上运行,并且可以访问各式各样的外部数据源.

5.小结

fast + genernal engine 速度快的通用引擎

write code: Java/Scala/Python/R interactive shell

run: memory/DAG/thread model/…

4.Spark版本

以Saprk 1.6.0为例

1:表示major version APIs的变化,一般是大版本的API的更迭与更新

6:表示minor version APIs的变化,一版本是小版本APIS/features的添加

0:表示patch version的变化,一般是bug的修复

建议:一般选择非0版本,0版本可能有bug未被修复

标签:简介,Spark1,mapreduce,版本,SQL,spark,排序,Spark
来源: https://blog.csdn.net/qq_31405633/article/details/89887767