Hadoop 简介
Hadoop 的由来
![](https://i-blog.csdnimg.cn/blog_migrate/c36850c9d94431739d4fe5a0b78645fe.png#pic_center)
大数据时代已经到来,每天都产生大量的数据,大数据数据层次特征最为经典的是大数据的 4V 特征。
- Volume (数据量巨大)
- Variety (数据类型繁多)
- Velocity (信息处理速度快)
- Value (价值密度低)
以前数据的存储往往是传统的数据库存储,现在是行不通的,而 Hadoop 是一个分布式系统基础框架,用来解决数据的存储和计算,他是由 Doug Cutting(Apache Lucene 创始人)基于 Google 的三辆马车(论文)实现的。
Google公司三篇论文的思想:
- GFS 的思想:描述了一个分布式文件系统的设计思路。(HDFS 是这篇论文思想的实现)
- MapReduce 的思想:分而治之。(Hadoop 的 MapReduce 与 MapReduce 论文中的实现思路一样)
- BigTable 的思想:一个分布式的结构化数据存储系统的设计思路。(HBase 是这篇论文思想的实现。)
Hadoop 生态系统和组件介绍
Hadoop 生态组件主要包括:Mapreduce、Hdfs、Yarn、HBase、Hive、Pig、Zookeeper、Mahout。
![](https://i-blog.csdnimg.cn/blog_migrate/2f61378173f69734ca8e5949345dac7d.png#pic_center)
Hadoop 特点
优点
- 高可靠性: Hadoop 底层对同一个数据维护这多个复本,即使 Hadoop 某个计算元素或者存储出现问题,也不会导致数据的丢失。
- 高扩展性: 能在廉价机器组成的集群间分配任务数据,可方便的扩展数以干计的节点。
- 高效性: 在 Mapreduce的思想下,Hadoop 是并行工作的,以加快任务处理速度。
- 高容错性: 能够自动将失败的任务重新分配。
缺点
- 不适用于低延迟数据访问。
- 不能高效存储大量小文件。
- 不支持多用户写入并任意修改文件。
Hadoop 三种模式
Hadoop安装模式有三种:单机模式(Standalone Mode)、伪分布式模式(Pseudo-Distributed Mode)、完全分布式模式(Fully-Distributed Mode)。
单机模式: 单机模式是指 Hadoop 运行在一台主机上,按默认配置以非分布式模式运行一个 java 进程。
特点:
(1) 没有分布式文件系统,直接在本地操作系统的文件系统进行读 / 写 。
(2) 不需要加载任何 Hadoop 守护进程。
(3) 一般用户本地 Mapreduce 调试。
(4) Hadoop 的默认模式。
伪分布式模式: 伪分布式模式是指 Hadoop 运行在一台主机上,使用多个 java 进程,模仿完全分布式模式的节点。
特点:
(1) 有完全分布式模式的全部功能 。
(2) 常用于调试程序。
(3) 只有一个节点。
完全分布式模式: 完全分布式模式也称做 集群模式。
特点:
(1) 将 Hadoop 运行在多台主机中,各主机按照相关配置运行相应的 Hadoop 守护进程。
(2) 真正的分布式环境。
(3) 可用于实际生产环境。
Hadoop 架构设计
Hadoop 的 2.x 跟 1.x 版本相比,2.x 主要是将1.x Mapreduce 中资源调度的任务解耦出来交给 Yarn 来管理了。
-
在1.x中:由一个 JobTracker 和若干个 TaskTracker 两类服务组成,其中 JobTracker 负责资源管理和所有作业的控制,TaskTracker 负责接收来自 JobTracker 的命令并执行它,所以 Mapreduce 即是任务调度框架又是计算框架。1.0中会出现JobTracker 大包大揽任务过重,而且存在单点故障问题,并且容易出现 OOM(内存耗尽)问题,资源分配不合理等问题。
-
在2.x中:Master 端由 ResourceManager 进行资源管理调度,有 ApplicationMaster 进行任务管理和任务监控。Slave 端由 NodeManager 替代 TaskTracker 进行具体任务的执行,所以 Mapreduce2.x 只是一个计算框架,具体资源调度全部交给 Yarn 框架。
![](https://i-blog.csdnimg.cn/blog_migrate/3426dc1b6fb21554ddfc9bcb6e592140.png#pic_center)
其他系列文章: