一、Hadoop是什么
Hadoop是一个由Apache基金会所开发的分布式系统基础架构
主要解决,海量数据的存储和海量数据的分析计算问题
广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈
二、Hadoop发展历史
1)Lucene--Doug Cutting开创的开源软件,用java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎
2)2001年年底成为apache基金会的一个子项目办法;
3)对于大数量的场景,Lucene面对与Google同样的困难
4)学习和模仿Google解决这些问题的办法 :微型版Nutch
5)Hadoop的思想之源:Google在大数据方面的三篇论文
6)2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和Mapreduce机制,使Nutch性能飙升
7)2005 年Hadoop 作为 Lucene的子项目 Nutch的一部分正式引入Apache基金会。2006 年 3 月份,Map-Reduce和Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中
8)名字来源于Doug Cutting儿子的玩具大象
9)Hadoop就此诞生并迅速发展,标志这云计算时代来临
三、Hadoop思想
1、思考案例
1T的数据如何实现秒级别的计算?
回答:分布式并行计算,数据向计算移动
2、Hadoop思想之源:Google
主要是面对海量的数据和计算难题
2.1 Google三驾马车
1)存储:GFS
核心功能
- 存储数据-分布式文件系统
- 并发写入-顺序写入
不足与缺陷
- 缺乏高可用性
- “至少一次”的弱一致性
2)计算:MapReduce
核心功能
- 数据本地化的并行计算
- 系统容错和自动恢复
不足与缺陷
- 计算模型简单
- 海量硬盘读写
3)在线服务:Bigtable
核心功能
- 在线服务
- 高性能随机读写
- 自动调度和分片
2.2 开源技术
1)GFS对应HDFS
分布式存储系统
提供了高可靠性、高扩展性和高吞吐率的数据存储服务
2)Map-Reduce对应MapReduce
分布式计算框架(计算向数据移动)
具有易于编程、高容错性和高扩展性等优点
3)Bigtable对应HBase
四、Hadoop设计思想
分布式存储和计算
分而治之:并行计算
计算向数据移动
五、Hadoop三大发行版本
1)Apache、Cloudera、Hortonworks
2)Apache版本最原始(最基础)的版本,对于入门学习最好
3)Cloudera在大型互联网企业中用的较多
4)Hortonworks文档较好
六、Hadoop优势
高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失
高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点
高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
高容错性:能够自动将失败的任务重新分配
七、Hadoop组成
1、概述
1.1 Hadoop 1.X组成
- HDFS
- MapReduce
- Common
1.2 Hadoop 2.X和Hadoop 3.X组成
- HDFS
- MapReduce
- YARN
- Common
1.3 HDFS
一个高可靠、高吞吐量的分布式文件系统
1.4 MapReduce
一个分布式的离线并行计算框架
1.5 YARN
资源调度平台,负责作业调度与集群资源管理的框架
1.6 Common
Hadoop体系最底层的一个模块,为Hadoop各子项目提供支持其他模块的工具模块,如:配置文件和日志操作等。
2、HDFS架构概述
NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
3、MapReduce架构概述
MapReduce将计算过程分为两个阶段:Map和Reduce
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总
4、YARN架构概述
ResourceManager(RM):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度
NodeManager(NM):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令
ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错
Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息
标签:总结,存储,Google,基础,Hadoop,MapReduce,计算,数据 From: https://blog.51cto.com/u_15553407/5827288