大数据解决方案三驾马车和Apacha Flink简介 | 青训营笔记

129 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第2天。

1.1 大数据解决方案的三驾马车

HDFS、Hadoop MapReduce和HBase

1.1.1 Google File System(GFS)的开源实现:HDFS

HDFS: Hadoop Distributed File System.

分布式文件存储(HDFS)是分布式计算的基础。

img

HDFS的关键组件有两个,一个是DataNode,一个是NameNode

DataNode负责文件数据的存储和读写操作,HDFS将文件数据分割成若干数据块(Block),每个DataNode存储一部分数据块,这样文件就分布存储在整个HDFS服务器集群中。

NameNode负责整个分布式文件系统的元数据(MetaData)管理,也就是文件路径名、数据块的ID以及存储位置等信息,相当于操作系统中文件分配表(FAT)的角色。

1.1.2 MapReduce的开源实现:Hadoop MapReduce

MapReduce既是一个编程模型,又是一个计算框架。也就是说,开发人员必须基于MapReduce编程模型进行编程开发,然后将程序通过MapReduce计算框架分发到Hadoop集群中运行。

举个WordCount的例子,WordCount主要解决的是文本处理中词频统计的问题,就是统计文本中每一个单词出现的次数。MapReduce版本WordCount程序的核心是一个map函数和一个reduce函数

分布式计算需要将不同服务器上的相关数据合并到一起进行下一步计算,这就是shuffle

1.1.3 BigTable的开源实现:HBase

HBase为可伸缩海量数据储存而设计,实现面向在线业务的实时数据访问延迟。HBase的伸缩性主要依赖其可分裂的HRegion及可伸缩的分布式文件系统HDFS实现。

详情请点击:

zhuanlan.zhihu.com/p/55015439

1.2 Apache Flink 是什么?

Apache Flink 是一个框架和分布式处理引擎,用于在无边界有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。

利用内存性能

有状态的 Flink 程序针对本地状态访问进行了优化。任务的状态始终保留在内存中,如果状态大小超过可用内存,则会保存在能高效访问的磁盘数据结构中。任务通过访问本地(通常在内存中)状态来进行所有的计算,从而产生非常低的处理延迟。Flink 通过定期异步地对本地状态进行持久化存储来保证故障场景下精确一次的状态一致性。

img

详情请点击:

https://flink.apache.org/zh/flink-architecture.html