Hadoop是由Apache基金会所开发的分布式系统基础架构。所谓的分布式指的是多台服务器共同完成某一项任务。
之后的大数据框架比如Hbase, Hive, Spark都依赖于Hadoop。主要解决海量数据的存储和海量数据的计算问题。广义上讲Hadoop通常指一个更为广泛的概念-Hadoop生态圈。
Google是Hadoop的思想之源。Google在大数据方面的三篇论文:GFS-HDFS, Map-Reduce-MR, BigTable-HBase。
Hadoop三大发行版本:Apache, Cloudera, Hortonworks。
Apache版本是最原始的版本,适合入门学习。
Cloudera在大型互联网企业中应用的多。
Hortonworks文档好。
Hadoop的优势(4高):
- 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。至少会备份三份。
- 高拓展性:在集群间分配任务数据,可方便的拓展数以千计的结点。
- 高效性:在MapReduce的思想下,Hadoop是并行工作的,可以加快数据的处理速度。
- 高容错性:可以自动的将失败的任务重新分配。
Hadoop1.x和Hadoop2.x的区别:
在Hadoop1.x的时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大。在Hadoop2.x的时代,增加了Yarn,用于处理资源的调度,MapReduce只负责运算。降低了耦合性。
Hadoop结构
Hadoop3.x在组成上没有变化。和2.x相比主要变化在于纠删码和namenode可以配置多个。
其它Hadoop相关项目:
- Apache HBase:分布式NoSQL列数据库,类似谷歌公司的Big Table。
- Apache Hive:构建于Hadoop之上的数据仓库,通过一种类SQL语言HiveQL为用户提供数据的归纳、查询和分析等功能。Hive最初由Facebook贡献。
- Apache Mahout:机器学习算法软件包。
- Apache Sqoop:结构化数据(如关系型数据库)与Apache Hadoop之间的数据转换工具。
- Apache Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
- Apache Avro:新的数据序列化格式与传输工具将逐步取代原有的Hadoop IPC机制。
HDFS架构的概述
- NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等。
- DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
- Secondary NameNode(2nn):用于监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
Yarn架构
Yarn架构
Resource Manager(RM)的作用:
- 处理客户端的请求。
- 监控NodeManager。
- 启动或监控ApplicationMaster。
- 资源的分配与调度。
ResourceManager是整个集群资源(内存、CPU等)的老大。
NodeManager(NM)的作用:
- 管理单个结点上的资源。
- 处理来自ResourceManager上的命令。
- 处理来自ApplicationMaster上的命令。
NodeManager是单个节点服务器资源的老大。
ApplicationMaster的作用:
- 负责数据的切分。
- 为应用程序申请资源并分配给内部的任务。
- 任务的监控与容错。
ApplicationManager是单个任务运行的老大。
Container:
Container是Yarn中资源的抽象,它封装了某个结点上多维度的资源,如内存,CPU,磁盘,网络等。
Container相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。
说明:
- 客户端可以有多个。
- 集群上可以运行多个ApplicationMaster。
- 每个NodeManager上可以有多个Container。
MapReduce架构概述:
MapReduce将计算分为两个阶段分别为Map和Reduce。
- Map阶段并行处理输入的数据。
- Reduce阶段对Map的结果进行汇总。
大数据技术生态体系:
大数据技术生态体系
推荐系统项目框架图:
推荐系统项目框架图