GIS大数据开发框架一张图

文章目录

  • 1 前言
  • 2 一张图
  • 3 参考资料

1 前言

由于自己经验并不丰富,理解也不深刻,但是被hadoop、spark、flink、geospark、sedona之间的关系搞得头晕,于是搜集了网络资料。
因为并非亲自体验,不对之处,欢迎指正!!!

Hadoop Ecosystem

GIS大数据开发框架一张图_第1张图片

2 一张图

所有的资料汇集成一张图如下
GIS大数据开发框架一张图_第2张图片

3 参考资料

各自辨别吧

https://baike.baidu.com/item/Hadoop/3526507
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。 充分利用集群的威力进行高速运算和存储。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

https://baike.baidu.com/item/SPARK/2229312
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。 Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。

https://baike.baidu.com/item/flink/9078426
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。

GeoSpark是基于Spark分布式的地理信息计算引擎,相比于传统的ArcGIS,GeoSpark可以提供更好性能的空间分析、查询服务。
功能:并行计算,空间查询,查询服务
GeoSpark 继承自Apache Apark,并拥有创造性的空间弹性分布式数据集(SRDD),
GeoSpark 将JTS集成到项目中,支持拓扑运算
GeoSpark 支持PostGIS SQL语法
GeoSpark 内置了 GeoTools

https://www.jianshu.com/p/d97af269e05a
Sedona是基于Spark分布式的地理信息计算引擎,原为GeoSpark,后被Apache收录孵化,更名为Sedona,相比于传统的ArcGIS、QGIS等分析工具,Sedona可以提供更好分布式空间分析。
GeoSpark已于2020年被Apache收录孵化,官方说这个GeoSpark的名字可能会与Spark有冲突,因此就改成了Sedona。

https://www.cnblogs.com/hdc520/p/13206443.html
设计理念
1、Spark的技术理念是使用微批来模拟流的计算,基于Micro-batch,数据流以时间为单位被切分为一个个批次,通过分布式数据集RDD进行批量处理,是一种伪实时。
2、Flink是基于事件驱动的,是面向流的处理框架, Flink基于每个事件一行一行地流式处理,是真正的流式计算. 另外他也可以基于流来模拟批进行计算实现批处理。

https://www.zhihu.com/question/437569406/answer/1769368747
根据实际情况来选择对应的框架
spark中分布式RDD缓存是一个非常强大的功能,在这一点上比flink好用很多,比如在实时计算过程中还需要一些离线大数据与之关联,就可以用spark。spark实时计算本来就是微批处理,所以批处理能做的事情流处理都能做,代码也是批流高度统一
flink重在它的高实时性,是真正的实时计算,在状态数据和checkpoint容错上做的比较好,能够做到exactly once,对实时性要求高肯定用flink
另外还有一点我觉得spark比flink好的地方就是spark的executor死了不会导致整个job挂掉,而是会创建新的executor再重新执行失败的任务。而flink某个taskmanager死了整个job就失败了,必须设置checkpoint来进行容错。在机器迁移的过程中spark要比flink方便许多
spark和flink的核心源码我都看过,设计的都非常棒,怎么选择还是看自己的应用场景
另外,我非常不喜欢那些鼓吹flink,贬低spark的观点,我不清楚他们对spark和flink到底了解多少就下这样的结论。不过这样的观点一般都出自于营销号,下面肯定有卖flink的一些课程,还需要自己理性看待

https://www.zhihu.com/question/437569406/answer/1658227172
两个都要学习。
学习批处理重点学习Spark,包括Spark Core、Spark SQL、GraphX这些。
学习流处理重点学习Flink,包括Flink DataStream、Flink SQL、Flink CEP这些。
先学Spark、再学习Flink会容易一些。

简单来说:实时flink更好,批次spak更成熟
因为spark年代长一点,相对成熟一点;而flink的话是现在最好的实时计算框架
可以根据实际需求去学习

https://www.jianshu.com/p/75b2c5aae857
Hadoop、Spark、Flink三大框架对比
1、数据处理对比
Hadoop专为批处理而生,一次将大量数据集输入到输入中,进行处理并产生结果。
Spark:定义是一个批处理系统,但也支持流处理。
Flink:为流和批处理提供了一个运行时。
2、流引擎对比
Hadoop:Hadoop默认的MapReduce,仅面向于批处理。
Spark:Spark Streaming以微批处理数据流,实现准实时的批处理和流处理。
Flink:Flink是真正的流引擎,使用流来处理工作负载,包括流,SQL,微批处理和批处理。
3、数据流对比
Hadoop:MapReduce计算数据流没有任何循环,每个阶段使用上一阶段的输出,并为下一阶段产生输入。
Spark:尽管机器学习算法是循环数据流,但Spark将其表示为(DAG)直接非循环图或有向无环图。
Flink:Flink在运行时支持受控循环依赖图,支持机器学习算法非常有效。
4、计算模型对比
Hadoop:MapReduce采用了面向批处理的模型,批处理静态数据。
Spark:Spark采用了微批处理。微批处理本质上是一种“先收集再处理”的计算模型。
Flink:Flink采用连续流式流传输模型,实时对数据进行处理,而不会在收集数据或处理数据时出现任何延迟。
5、性能对比
Hadoop:Hadoop仅支持批处理,不支持处理流数据,与Spark和Flink相比,性能会降低。
Spark:支持微批处理,但流处理效率不如Apache Flink。
Flink: Flink使用本机闭环迭代运算符,尤其在支持机器学习和图形处理方面,表现优异。
6、内存管理对比
Hadoop:提供可配置的内存管理,可以动态或静态地执行此操作。
Spark:提供可配置的内存管理,从Spark 1.6开始已朝着自动进行内存管理的方向发展。
Flink:有自己的内存管理系统,提供自动内存管理

https://www.zhihu.com/question/421110994/answer/1611342297
hadoop是大数据的基础也是开山石,个人建议要学习的,至于flink spark 和storm 他们的实现技术大同小异,了解里面的思想即可。现在阿里再推flink 可以去官网看看学习。

你可能感兴趣的:(BigData,spark,hadoop,big,data)