核心
- 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 算法.
本文参考资料
docs: update docs
于 2024/11/19整理文章格式
于 2024/10/29update
于 2024/10/17新增文字+CRLF全部替换为LF
于 2024/10/17升级主题+规整文章格式
于 2024/10/15升级主题+新增文章+修改格式
于 2024/10/14升级版本+规整文档中的格式
于 2024/10/11调整头图
于 2024/9/30整理图片格式和名称(not finished)
于 2024/9/30给予文件夹顺序
于 2024/9/24整理文章
于 2024/9/23first commit
于 2024/9/20