核心
- HDFS(Hadoop Distributed File System)。
- MapReduce。
Hadoop 是一个开源的、可运行于大规模集群上的分布式计算平台,它实现了 MapReduce 计算模型和分布式文件系统HDFS等功能,在行业内得到了广泛的应用,同时也成为了大数据的代名词。
本文将介绍 Hadoop 的重要特性和其生态系统的各个组件。
Hadoop 是 Apache 软件基金会旗下的一个开源分布式计算平台。开发语言为 Java。
核心
HDFS 是 Hadoop 项目的两大核心之一,是针对于 Google File System(GFS)的开源实现。HDFS 具有处理超大数据,流式处理和可以运行在廉价服务器上的特点。
HBase 是一个提供高可靠性,高性能,可伸缩,实时读写,分布式的列式存储数据库,一般采用 HDFS 作为其底层存储。
HBase 是针对谷歌 BigTable 的开源实现,二者都采用了相同的数据模型,具有强大的非结构化数据存储能力。
Hadoop MapReduce 是针对谷歌 MapReduce 的开源实现。MapReduce 是一种编程模型,用于大规模数据集(大于 1 TB)的并行运算。将大规模集群的并行计算过程高度抽象成两个函数:Map 和 Reduce。
Hive 是一个基于 Hadoop 的数据仓库工具,可以用于对 Hadoop 文件中的数据集进行数据整理和查询。学习成本较低,因为提供了类似于关系型数据库的 SQL 语言--Hive QL,可以通过 Hive QL 语句快速实现简单的 MapReduce 统计。
Pig 是一种数据流语言和运行环境,可以大大简化 MapReduce 的开发,在 MapReduce 的基础上创建了更简单的过程语言抽象,为 Hadoop 应用程序提供了一种更加接近 SQL 的接口。
Mahout 提供一些可扩展的机器学习领域经典算法的实现。例如: 聚类,分类,推荐过滤,频繁子项挖掘等。
Zookeeper 是针对谷歌 Chubby 的一个开源实现,提供分布式协调服务。例如: 发布/订阅,负载均衡,命名服务,分布式协调/通知,Master 选举,分布式锁等。
Flume 是一个可靠的分布式海量日志采集,聚合和运输系统。支持在日志系统中定制各类数据的发送方用于收集数据,同时提供对数据进行简单处理并写道各种数据接收方的能力。
Sqoop 是 SQL-to-Hadoop 的缩写,主要是用来在 Hadoop 和关系数据库之间交换数据。通过 Sqoop 可以很方便地从 MySQL,Oracle,PostgreSQL 等关系型数据库中导入 Hadoop,或者从 Hadoop 导出到关系型数据库。
Ambari 是一种基于 Web 的工具,支持 Hadoop 集群的安装,部署,配置和管理。
提示
下面是架构图中没有,但是也非常重要的组件。
Impala 是 Cloudera 公司主导开发的新型查询系统,它提供 SQL 语义,能查询存储在 Hadoop 的 HDFS 和 HBase 中的 PB 级大数据。已有的 Hive 系统虽然也提供了 SQL 语义,但由于 Hive 底层执行使用的是 MapReduce 引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala 的最大特点也是最大卖点就是它的快速。
Kafka 是一个基于 Zookeeper 协调的分布式日志系统。常用于日志的收集和消息系统。
如果对 Kafka 这个中间件感兴趣的话,可以查看我的另一篇文章:Kafka 相关的基本概念和常见问题。
Spark 是 UC Berkeley AMP lab 开源的类 MapReduce 的通用并行框架。不同于 MapReduce 的是 Job 中间结果可保存在内存中,从而减少了对 HDFS 的读写。因此 Spark 能更好地适用于数据挖掘和机器学习等需要迭代的 MapReduce 算法。
本文参考资料
3e4d9
-improve(docs): use svg picture于 4cc96
-improve(docs): use chinese punctuation于 1ca4c
-improve(docs): use chinese punctuation于 1289a
-improve(docs): delete extra whitespace and blank lines于 c2111
-modify(docs): remanage folders and rename files于 96e66
-docs: update docs于 978a9
-整理文章格式于 f86ee
-update于 93933
-新增文字+CRLF全部替换为LF于 5ada9
-升级主题+规整文章格式于