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