Hadoop 技术生态体系

广义上的Hadoop是指其整个技术生态体系,包括但不限于以下组件:

Hadoop 技术生态体系_第1张图片

图3-1-1:Hadoop技术生态体系

这里选择几个比较重要的组件简单介绍一下,之后会作详细介绍:

一、HBase:分布式数据库

Hadoop 技术生态体系_第2张图片

HBase是Hadoop的数据库,HBase是一个分布式的、面向列的开源非关系型数据库,它不同于一般的关系数据库,是一个适合非结构化数据存储的数据库。HBase利用Hadoop的HDFS作为其文件存储系统,利用ZooKeeper作为其协调工具,非常适合用来进行大数据的实时读写。

HBase表是一个稀疏多维表,表中的数据是未经解释的字符串,没有数据类型,每一行都有一个行键,表被分组成许多列族集合,列族支持动态扩展,可以很方便地添加一个列族或列,无须事先预定列的数量和类型,所有列都是以字符串的形式存储。

二、Hive:数据仓库工具

Hive是一个基于Hadoop的强大的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

三、Kafka:分布式发布订阅消息系统

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,Kafka是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

四、ZooKeeper:分布式协调服务

ZooKeeper作为一个高可用的分布式服务框架,主要用来解决分布式集群中应用系统的一致性问题,它可以减轻分布式应用程序所承担的协调任务,大数据培训在Hadoop、HBase、Kafka等分布式系统中,ZooKeeper都是作为核心组件使用的。其典型应用场景有:实现HDFS的NameNode高可用HA;实现HBase的HMaster高可用HA. ZooKeeper的部署节点一般为奇数个。

五、Spark:内存分布式计算框架

Spark是一个可以将输出结果保存在内存中的微批处理分布式快速计算框架,可以批处理和交互式处理,支持多语言(Java, Python, Scala, R等),具有丰富的API. 其优势在于能同时实现离线和实时计算。

  1. Spark SQL

Spark中处理结构化数据的一个模块,可以使用类SQL语句进行Spark编程。Spark SQL支持很多种结构化数据源,可以跳过复杂的读取过程,轻松从各种数据源读取到Row对象。这些数据源包括Hive表、JSON和Parquet文件等。

  1. Spark Streaming

为数据流处理而生,类似的还有Storm(准实时). 其原理是把接收到的数据流分很多小的批次(batches),然后分批处理输出,称为微批处理(非真正的准实时),且其处理计算过程是在内存中完成的,比MapReduce需要利用HDFS磁盘空间的离线批处理效率提高很多:

Hadoop 技术生态体系_第3张图片

图3-5-1:Spark Streaming

Spark Streaming的数据源可以是Kafka,Flume等,流处理过程中可以使用MLib库进行一些机器学习方面的建模等工作:

Hadoop 技术生态体系_第4张图片

图3-5-2:Spark Streaming

  1. Spark MLib

Spark中可以扩展的机器学习库,它由一系列的机器学习算法和实用程序组成。包括分类、回归、聚类、协同过滤等,还包含一些底层优化的方法。

  1. Spark GraphX

Saprk的一个分布式图(属性图、社交图、有向图、无向图等)处理框架,主要用于进行以图为核心的计算和分布式计算。它是基于Spark平台提供对图计算和图挖掘简洁易用而丰富的接口,极大的方便了对分布式图处理的需求。

你可能感兴趣的