简述大数据技术

大数据是什么?真的太宽泛了,从任何角度都可以回答这个问题。简单概述,大数据的几个表现就是海量数据,数据源多样,数据增速快。面临着数据存储的问题,数据计算的问题,所以大数据技术的出现就是为了解决上述问题。今天主要从数据流程方便介绍每个流程下的大数据技术以及应用。

数据流程

数据流程

不管是传统的数据批处理还是实时流处理,数据端到端的过程都包含:数据产生、数据采集和传输、数据存储,处理、数据应用这几个过程。具体的流程图以及关键环节如下图 1-1

image.png
图 1-1

具体的细节这里不做介绍了,数据的处理由传统的数据库发展到数据仓库,由离线的批处理发展到实时的流处理,技术一直在变迁,但是上述流程大致是保持不变的,改变的只是技术细节。

开源技术

开源技术

根据上述几个流程,下面介绍一下这些流程下都有哪些常用的开源技术,如图 1-2 所示

image.png
图 1-2

并没有把所有的开源框架都列进去,而且商业软件上不在讨论范围之内。

数据采集和传输主要用到的技术分为离线的批处理和实时采集数据,离线的批处理使用 Sqoop,下游主要是离线数据处理平台,比如说 Hive。实时的数据采集和传输主要使用 Flume + Kafka , 下游一般是实时流处理平台,比如 Spark, Storm, Flink 等。

数据处理 主要用到的技术最为多,离线和准实时的工具主要包括 MapReduce、Hive 、Spark, 流处理的工具主要包含 Storm, Flink, Beam 等。

其中 MapReduce 抽象出 Map 和 Reduce 模型,使得不会分布式编程的程序员也可以编写分布式的程序在分布式集群上运行。

Hive 是建立在 Hadoop 上的 SQL 抽象,降低了使用门槛,使得只会 SQL 的工程师不必编写程序就可以处理大数据的计算,Hive 会将 SQL 解析成 mapReduce 程序运行。尽管 MR + Hive 能够完成海量数据大多数批处理工作,但是延迟太大,不适合迭代计算和 DAG。

由于 Spark 具有可以伸缩性、基于内存等特点,能够较好的支持数据及时查询和迭代分析的需求。其中,Spark 还提供了了 SQL 接口来方便业务任务来处理和分析数据。此外,Spark 还有流处理的功能,提供了计算框架 spark streaming , 以微批处理的方式将实时数据分成小的时间片段(秒或者几百毫秒)来处理。

Storm 是实时处理的开山鼻祖,提供了 Spout 和 Bolt 原语,底层是 Topology(拓扑) ,它会一直运行,除非 kill 它。

Flink 把批处理和实时流处理计算整合起来了,将二者统一起来,Flink 完全支持流处理,批处理被看做是一种特殊的流处理,即它的输入数据被定义为有界。具体的细节这里不做展示,感兴趣的可以去官网看一下它的数据处理流程。

Beam 不单单是相统一批流处理,还希望统一大数据处理范式和标准,该项目的重点是在于处理数据的编程范式和接口。Beam 主要是由 Beam SDK 和 Beam Runner 组成。

数据存储 的主要技术,HDFS 是分布式文件系统,它是谷歌的 GFS 思想提出之后,Doug 受到启发而开发的一种类 GFS 的文件系统,高容错、高吞吐的特性使之非常适合大规模数据集。HBase 是构建在 HDFS 上的分布式、面向列的存储数据库,在需要实时读写和随机访问的超大规模数据集情况下时候。同样,HBase 是由 Google 的 BigTable 的思想发展而来的。还有其他如 Redis, Mysql 等存放一些结果数据或当做缓存来使用。


结束。