一、 Hadoop
1.1、Hadoop的概念
Hadoop是一个由Apache基金会所开发的分布式系统及基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。主要解决海量数据的存储和海量数据的分析计算。广义来说HADOOP通常是指一个更广泛的概念,即HADOOP生态圈。
1.2、Hadoop的发展历史
Lucene--Doug Cutting 开创的开源软件,用 java 书写代码,实现与 Google 类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎 ,2001年年底成为 apache 基金会的一个子项目 ,对于大数量的场景,Lucene 面对与 Google 同样的困难 ,学习和模仿 Google 解决这些问题的办法 :微型版 Nutch,可以说 Google 是 hadoop 的思想之源(Google 在大数据方面的三篇论文)
GFS --->HDFS
Map-Reduce --->MR
BigTable --->Hbase
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 儿子的玩具大象
1.3、Hadoop三大发行版本
Hadoop 三大发行版本: Apache、Cloudera、Hortonworks。
Apache 版本最原始(最基础)的版本,对于入门学习最好。
Cloudera 在大型互联网企业中用的较多。
Hortonworks 文档较好。
Apache Hadoop
官方网址: https://hadoop.apache.org/#
Cloudera Hadoop
官网地址:https://www.cloudera.com/
Hortonworks Hadoop 被Cloudera收购
1.4、Hadoop的优势
1、高可靠性:因为 Hadoop 假设计算元素和存储会出现故障,因为它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理。
2、高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
3、高效性:在 MapReduce 的思想下,Hadoop 是并行工作的,以加快任务处理速度。
4、高容错性:自动保存多份副本数据,并且能够自动将失败的任务重新分配。
1.5、Hadoop组成
Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统
Hadoop MapReduce:一个分布式的离线并行计算框架
Hadoop YARN:作业调度与集群资源管理的框架
Hadoop Common:支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)
HDFS架构概述:
NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、 文件权限),以及每个文件的块列表和块所在的DataNode等
DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和
Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照
YARN架构概述:
ResourceManager(rm):处理客户端请求、启动/监控 ApplicationMaster、监控 NodeManager、资源分配与调度;
NodeManager(nm):单个节点上的资源管理、处理来自 ResourceManager 的命令、处理来自 ApplicationMaster 的命令
ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。
Container:对任务运行环境的抽象,封装了 CPU、内存等多维资源以及环境变量、启动
命令等任务运行相关的信息
MapReduce 架构概述
MapReduce 将计算过程分为两个阶段:Map 和 Reduce
Map 阶段并行处理输入数据
Reduce 阶段对 Map 结果进行汇总