X

曜彤.手记

随手写写,关于互联网技术、产品与创业

大数据基础架构概述


本篇文章用于记录大数据系统基础架构中的一些常用框架和工具介绍。从总体上来了解大数据相关(机器学习、深度学习等)处理的基本系统架构和各个软件框架、数据仓库、计算引擎的使用场景。

1、Hadoop:

最早诞生的大数据处理计算框架,由 Java 语言编写。其结构主要包括三层:HDFS - Hadoop 分布式文件系统、HBase NoSQL 存储系统和一个基于 MapReduce 的分布式计算引擎;由于 Hadoop 会把计算的中间结果也存储到 HDFS,因此它并不适合有大量迭代计算的场景;并且一个 Job 只有 Map 和 Reduce 两个阶段,每个 Job 之间的数据依赖关系需要自己控制。同时其 MapTask 和 ReduceTask 也无法并行,数据处理效率较低。

2、Hadoop Yarn:

是 Hadoop 自 0.23.0 版本后对其内部资源管理系统中的 JobTracker 和 TaskTracker 进行了大幅的的修改和重构以提高其性能。它的基本设计思想是将 MRv1 中的 JobTracker 拆分成了两个独立的服务,一个全局的资源管理器 ResourceManager(RM) 和每个应用程序特有的 ApplicationMaster。其中ResourceManager 负责整个系统的资源管理和分配,而 ApplicationMaster 负责单个应用程序的管理。这个新版本框架被命名为 Yarn。

3、Spark:

是继 Hadoop MapReduce 之后的第二代大数据计算引擎,基于 Scala 开发。Spark 并不基于 MapReduce,它将所有的数据处理过程(从磁盘读取到内存)放在了集群的内存中进行,相较于 Hadoop 使用 Map 和 Reduce 直接在磁盘上处理数据,Spark 的速度则更快。因此 Spark 更适合处理类似机器学习、深度学习等计算过程中有大量迭代的中间结果的场景。

4、Hive:

是一个基于 MapReduce 的数据仓库工具。它提供来 HQL 可以以 SQL 的方式来描述 MapReduce,它可以将普通的 Hive QL 转换为 MapReduce 任务来运行。但由于 Hive 直接运行在 Hadoop 上,其数据处理作业但速度并不快,效率并不高。

5、Hive on Spark:

Hive on Spark 是从 Hive on MapReduce 演进而来,Hive 的整体解决方案很不错,但是从查询提交到结果返回需要相当长的时间,查询耗时太长,这个主要原因就是由于 Hive 原生是基于 MapReduce 的,那么如果我们不生成 MapReduce Job,而是生成 Spark Job,就可以充分利用 Spark 的快速执行能力来缩短 HiveQL 的响应时间。

6、SparkSQL:

Spark 早先有 Shark 项目用来实现 SQL 层,不过后来推翻重做就变成了 SparkSQL,其本质和 Hive on Spark 类似。

7、Spark Streaming:

是一个基于 Spark 的实时流式计算框架。Spark Streaming 在内部的处理机制是,接收实时流的数据,并根据一定的时间间隔拆分成一批批的数据,然后通过 Spark Engine 处理这些批数据,最终得到处理后的一批批结果数据。在流数据分成一批一批后,通过一个先进先出的队列,然后 Spark Engine 从该队列中依次取出一个个批数据,把批数据封装成一个 RDD(弹性分布式数据集),然后进行处理。

总结下来,一个数据仓库的基本架构如此:底层存储系统使用 HDFS,接下来是一层计算引擎使用 MapReduce、Tez 或 Spark,再上面跑基于 SQL 或者脚本的 Wrapper 层 Hive 或者 Pig。或者直接在 HDFS 上跑 Impala、Drill、Presto 等交互式的 SQL 引擎。



这是文章底线,下面是评论
  暂无评论,欢迎勾搭 :)