Hadoop 学习笔记一:介绍
Hadoop 是什么
- Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构
- 主要解决,海量数据的存储和海量数据的分析计算问题。
- 广义上来说,Hadoop 通常是指一个更广泛的概念 —— Hadoop 生态圈
Hadoop 发展历史
- Lucene 框架是 Doug Cutting 开创的开源软件,用 Java 书写代码,实现与 Google 类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎。
- 2001 年年底 Lucene 成为 Apache 基金会的一个子项目
- 对于海量数据的场景,Lucene 面对与 Google 同样的困难,存储数据困难,检索速度慢。
- 学习和模仿 Google 解决这些问题的办法:微型版 Nutch。
- 可以说 Google 是 Hadoop 的思想之源(Google 在大数据方面的三篇论文)
GFS,Map-Reduce,BigTable - 2003 - 2004 年,Google 公开了部分 GFS 和 MapReduce 思想的细节,以此为基础 Doug Cutting 等人用了2年业余时间实现了 DFS 和 MapReduce 机制,使 Nutch 性能飙升。
- 2005 年 Hadoop 作为 Lucene 的子项目 Nutch 的一部分正式引入 Apache 基金会。
- 2006 年 3月份, Map-Reduce 和 Nutch Distributed File System (NDFS)分别被纳入称为 Hadoop 的项目中。
- 名字来源于 Doug Cutting 儿子的玩具大象
- Hadoop 就此诞生并迅速发展,标志着大数据时代来临。
Hadoop 三大发行版本
Hadoop 三大发行版本:Apache、Cloudera、Hortonworks。
- Apache 版本最原始版本(最基础)的版本,对于入门学习最好。
- Cloudera 在大型互联网企业中用的较多。
- Hortonworks 文档较好
Hadoop 优势
- 高可用性:Hadoop 底层维护了多个数据副本,所以即使 Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。
- 高扩展性:在集群键分配任务数据,可 方便的扩展数以千计的节点。
- 高效性:在 MapReduce 的思想下, Hadoop 是并行工作的,以加快任务处理速度。
- 高容错性:能够自动将失败的任务重新分配
Hadoop 的组成
- Hadoop 1.x 组成 : Common(辅助工具) 、HDFS(数据存储)、MapReduce(计算 + 资源调度)
- Hadoop 2.x 组成 : Common(辅助工具)、HDFS(数据存储)、MapReduce(计算)、YARN(资源调度)
HDFS 架构概述
- NameNode(nn):存储文件和元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的 DataNode 等。
- DataNode(dn): 在本地文件系统存储文件块数据,以及块数据的校验和。
- Secondary(2nn): 用来监控 HDFS 状态的辅助后台程序,每个一段时间获取 HDFS 元数据的快照。
YARN 架构
- ResourceManager (RM)主要作用如下
- 处理客户端请求
- 监控 NodeManager
- 启动或监控 ApplicationMaster
- 资源的分配与调度
- NodeManager(NM)主要作用如下
- 管理单个节点上的资源
- 处理来自 ResourceManager 的命令
- 处理来自 ApplicationMater 的命令
- ApplicationMaster (AM) 作用如下
- 负责数据的切分
- 为应用程序申请资源并分配给内部的任务
- 任务的监控与容错
- Container:是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
MapReduce 架构概述
MapReduce 将计算过程分为两个阶段:Map 和 Reduce
Map 阶段并行处理输入数据
Reduce 阶段对 Map 结果进行汇总
大数据技术生态体系
数据来源层:数据库(结构化数据)、文件日志(半结构化数据)、视频、ppt 等(非结构化数据)
数据传输层:sqoop 数据传递、Flume 数据收集、Kafka 消息队列
数据存储层:HDFS 文件存储 、HBase 非关系型数据库、Kafka 消息队列
资源管理层:YARN 资源管理
数据计算层:MapReduce 离线计算(Hive 数据查询、Mahout 数据挖掘)、Spark Core 内存计算(Spark Mlib 数据挖掘、Spark R 数据分析、Spark Sql 数据查询、Spark Streaming 实时计算)、Storm 实时计算、Flink
任务调度层:Oozie 任务调度、Azkaban 任务调度、crontab 任务调度
ZooKeeper 数据平台配置和调度
业务模型层:业务模型、数据可视化、业务应用