4、大数据系统组件

在对大数据系统有了个初步的理解后,明白了大数据系统的架构其实是各不相同的,都是根据企业各自的需求来选择相应的组件构成自己的系统,那么常用的组件有哪些呢?它们分别的作用是什么呢?这一小节就来梳理一下大数据系统中的常用组件。


大数据生态圈

首先是Hadoop,它是大数据系统的基础组件,很多其他组件都依赖它分布式存储、计算,它是Apache旗下一套开源软件平台,在这个平台之下还包括了HDFS(分布式文件系统)、YARN(运算调度系统)、MapReduce(分布式编程运算框架)。Hoodop通常指的是一个生态圈。


大数据技术生态架构图

接着是HDFS,它是一个分布式文件系统,用于存储文件,它由很多台服务器联合起来实现功能,为各类分布式运算框架(MapReduce、Spark、tez)提供数据存储服务。
接着是YARN(Yet Another Resource Negotiator)另一个资源协调者,负责工作调度和集群资源管理。

然后是MapReduce,是一种分布式运算编程组件,将一个算法抽象成了两部分,是少量的代码可以实现海量的数据离线并行计算。
接着是HIVE。它是一种基于大数据技术(文件系统+运算框架)的SQL数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,并且可以直接将sql语句转换为MapReduce任务运行。
然后是Hbase,它是基于Hadoop的分布式海量数据库,是建立在HDFS之上的分布式列数据库。提供对数据的随机实时读、写访问,支持横向扩展。HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。其具有方便横向扩展,备份机制健全、查找数据快等优点。
ZooKeeper,分布式协调服务基础组件,是一个用来协调分布式服务的分布式程序,需要有半数以上节点存活,才能正常服务,主要功能为,主从协调、服务器节点动态上下线,管理(储存、读取)用户程序提交的数据,为用户程序提供数据节点监听服务。
Mahout,是基于MapReduce、spark、flink等分布式运算框架的机器学习算法库,支持横向扩展。
Oozie,是工作流调度框架,以key-object形式的对象存储模块,适合小文件存储。
Sqoop,数据导入导出工具,是用来实现结构化数据库和Hadoop之间的数据迁移工具。利用MapReduce并行加快数据传输,实现容错。
Flume,日志数据采集框架,是一个基于六十数据的架构,简单灵活,有容错机制、故障转移机制和恢复机制。
pig,是一种处理hadoop数据流的轻量级脚本语言。
Spark,大数据快速计算通用引擎。与MapReduce不同之处在于,可以将中间结果存在内存中,不需要反复读写HDFS,所以更适用于数据挖掘和机器学习这种需要迭代的场景。
Tez,基于Hadoop YARN之上的DAG(有向无环图)计算框架,把MapReduce拆分为多个子过程,并把多个任务组合为一个DAG任务,减少文件存储。
Storm,用来实时计算数据流的工具,是一个实时计算系统。即流式计算,用于实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。
Kafka,是开源的分布式消息队列系统,根据Topic进行归类,发送消息即为Producer,接受消息称为Consumer,集群可由多个kafka实例(broker)组成。

你可能感兴趣的:(4、大数据系统组件)