BigData-- 大数据常用开源组件一览

概述

最近有一个项目是跟公司的大数据平台有关,这里梳理一下常用的大数据组件,做个记录,同时,还有一个原因,就是希望用比较简洁的语言让我女朋友能对大数据的整体架构有个大致了解。 大数据平台的架构不一而足,市面上的开源工具非常多,所选用的组件也是因人而异,不过都是为了具体业务应用场景而服务,这里选取一些常用的开源组件,试图从大数据处理的整个流程出发,将各个开源组件的功能特点,适用场景等讲清楚,个人观点,难免纰漏。

大数据处理流程

在介绍大数据组件之前,先把大数据的整体处理流程梳理一下,因为要想了解整个大数据组件体系,首先得清楚我们要面临的问题,了解了问题才能去找相应的解决方案,如果只是一猛子扎进hadoop 体系里,反而会越看越迷糊。 大数据的处理流程大致包括数据收集,数据存储,数据计算与数据分析这四个阶段,其实数据计算与分析算是一个阶段,这里为了以后区分组件的方便将其分开,数据计算可以理解为计算引擎那部分,数据分析就是更上层的BI分析工具等等。接下来就从这四个流程出发,简单介绍下常用工具。

数据收集

在大数据还未兴盛之前,我们一般是将数据存储到关系型数据库(Mysql等),或者文本文件(日志文件等)中,这种方法在数据量不大的情况下是可以的,但在数据量达到TB,甚至PB级别,这种情况就不适用了。为了能够存储这种量级的数据,大数据存储组件应运而生,这里先暂时不说大数据存储,先说数据收集。出现了大数据存储组件之后,有一个问题就是要将数据收集到大数据存储组件中,于是,相应的组件也就出现了:

以下是收集组件:

除了收集之外,因为巨大的IO压力,我们通常会在收集组件与数据存储组件之间加一层消息队列用于削峰填谷,降低IO压力,常用的组件包括:

MQ组件的对比可以参考阿里中间件团队做的压测RocketMQ与kafka对比(18项差异),Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能

数据存储

数据存储这块分为两个部分,一部分是底层的文件系统,还有一部分就是之上的数据库或数据仓库。

文件系统

大数据文件系统其实是大数据平台架构最为基础的组件,其他的组件或多或少都会依赖这个基础组件,

目前应用最为广泛的大数据存储文件系统非Hadoop 的HDFS莫属,除此之外,简单介绍下号称可以取代HDFS的Ceph。

数据库或数据仓库

针对大数据的数据库大部分是NOSQL数据库,这里顺便澄清一下,NOSQL的真正意义是“ not only sql”,并非NOSQL是RMDB的对立面。

数据计算

简单介绍以下目前比较流行的几种大数据计算框架:

除了计算框架外,因为是分布式系统,我们还需要对计算资源进行分配调度,以及各种服务间的协调,发现,配置管理等,所以这里又出现了两个重要的组件:

两者的区别是:Yarn是resource management,解决的问题是怎样提高整个集群的资源利用率。Zookeeper是 Coordination,解决的是集群中各种服务的发现,同步,协调配合以保持整个集群的稳定。

数据分析

数据分析的工具就更多了,这里列举一些业界用的比较多的,相对成熟的工具:

整体框架

以上是按照数据处理的流程来区分的,这里从网上找到一张由下而上的整体架构:

data-bricks

参考文章

Big data architecture - Introduction

Exploring Big Data Solutions: When To Use Hadoop vs In-Memory vs MPP

[Hadoop大数据平台架构与实践 hadoop概述与安装 ](https://www.jianshu.com/p/0e8642e47fd2)

大数据领域常用的技术、框架

Hadoop 分布式文件系统 - HDFS

链家网大数据平台建设,平台枢纽——工具链

美团大数据平台架构实践

大数据开源组件图谱

大数据框架对比:Hadoop、Storm、Samza、Spark和Flink

本篇文章由pekingzcc采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,转载请注明。

END

Table of Contents