狭义上的 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. 其劣势在于能同时实现离线和实时计算。
- Spark SQL
Spark 中解决结构化数据的一个模块,能够应用类 SQL 语句进行 Spark 编程。Spark SQL 反对很多种结构化数据源,能够跳过简单的读取过程,轻松从各种数据源读取到 Row 对象。这些数据源包含 Hive 表、JSON 和 Parquet 文件等。
- Spark Streaming
为数据流解决而生,相似的还有 Storm(准实时). 其原理是把接管到的数据流分很多小的批次(batches),而后分批解决输入,称为微批处理(非真正的准实时),且其解决计算过程是在内存中实现的,比 MapReduce 须要利用 HDFS 磁盘空间的离线批处理效率进步很多:
图 3 -5-1:Spark Streaming
Spark Streaming 的数据源能够是 Kafka,Flume 等,流处理过程中能够应用 MLib 库进行一些机器学习方面的建模等工作:
图 3 -5-2:Spark Streaming
- Spark MLib
Spark 中能够扩大的机器学习库,它由一系列的机器学习算法和实用程序组成。包含分类、回归、聚类、协同过滤等,还蕴含一些底层优化的办法。
- Spark GraphX
Saprk 的一个分布式图(属性图、社交图、有向图、无向图等)解决框架,次要用于进行以图为外围的计算和分布式计算。它是基于 Spark 平台提供对图计算和图开掘简洁易用而丰盛的接口,极大的不便了对分布式图解决的需要。