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

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

这里抉择几个比拟重要的组件简略介绍一下,之后会作具体介绍:

一、HBase:分布式数据库

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磁盘空间的离线批处理效率进步很多:

图3-5-1:Spark Streaming

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

图3-5-2:Spark Streaming

  1. Spark MLib

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

  1. Spark GraphX

Saprk的一个分布式图(属性图、社交图、有向图、无向图等)解决框架,次要用于进行以图为外围的计算和分布式计算。它是基于Spark平台提供对图计算和图开掘简洁易用而丰盛的接口,极大的不便了对分布式图解决的需要。