核心组件

HDFS是Hadoop分布式文件系统,用于将数据存储在Hadoop集群。HDFS是冗余和高度可靠的分布式的文件系统。

HDFS的特点:

一次写/多次读的设计方便了流式读取。

文件可以被追加,但不允许随机查找。它是没有数据缓存的。

集中数据存储和处理发生在相同的服务器节点上。

“移动计算比移动数据更廉价”

它是一种跨集群维护数据的多个副本的可靠的文件系统。因此,单个节点(或甚至在一个大型集群中的机架)的故障不会停止文件系统

使用专门的文件系统,它不是为常规使用设计的。

YARM是另一种资源管理器,它为集群提供所有的调度和资源管理

YARN是为集群提供MapReduce功能的YARN应用程序框架。它与Hadoop V1 MapReduce兼容并作为许多更高级的Hadoop工具的基础

Hadoop 数据库

Apache HCatalog是使用Hadoop创建的数据的表和存储管理服务。抽象为表让用户不需要知道数据的存储位置。

Apache HBase 是Hadoop数据库,是分布式和可扩展的列式数据库,类似于谷歌Big Table。HBase提供集群中数据的随机、实时访问。HBase被设计为容纳几十亿行和数百万列的非常大的表。

MapReduce查询工具

Apache Pig是一种高级语言,使程序员能够使用简单的脚本语言编写复杂的MapReduce转换。Pig Latin(实际语言)在数据集上定义一组转换,包括聚合、连接和排序。它通常用于提取、转换和加载(ETL)数据管道,快速研究原始数据和迭代数据处理。这种语言提高了对MapReduce作业进行java编程的效率。

Apache Hive是一种建立在Hadoop之上的数仓库基础设施,使用成为HiveQL的类似于SQL的语言提供大数据集的数据汇总、即时查询和分析。Hive透明地把在HBase中执行的查询转化为MapRedece作业。Hive被认为是使用Hadoop的海量数据的交互式SQL查询事实上的标准。

Data导入导出

Apache Sqoop 是设计为高效地在HDFS和关系数据库之间传输大量数据的工具。一旦数据被放在HDFS中,Hadoop 应用程序就可以使用它。

Apache Flume是高效地收集、聚合和移动大量的动态串行数据(例如,日志数据)的分布式、可靠的服务。

Apache Avro 是使得数据能在任何语言编写的程序之间交换的序列化格式。它通常用于连接Flume数据流。

工作流自动化

Apache Oozie 是一个管理多级Hadoop作业的工作流/协调系统。它使工作流决策基于作业的依赖关系。对于设计工作执行图形,Oozie是最好的工具。

Apache Falcon使得插入、管道和复制操作的数据移动和处理自动化。当数据更改或变得可用时,Falcon可以触发作业启动。

管理

Apache Ambari 是一个基于web的Apache Hadoop 集群资源调配、管理和监控工具。

YARN应用程序框架

应用程序框架是专门为YARN环境编写的应用程序。核心MapReduce框架就是一个示例。其他项目包括诸如Apache Giraph(图形处理)、Apache Spark(内存中处理)、Apache Storm(流处理)和其他应用程序。

其他

Apache Zookeeper是应用程序用于维护配置、健康程度和节点之间的其他状态元素的集中式服务。它维护了在大型集群环境中需要的一些常见对象,包括配置信息、分层命名空间,等等。应用程序可以使用这些服务来协调在Hadoop集群中的分布式处理。zookeeper还提供应用程序的可靠性。如果某个应用程序主程序出故障了,zookeeper就会产生新的应用程序主控程序来恢复此任务。

Apache Mahout 是一个可扩展的机器学习库,它实现了许多不同的机器学习的方法。