1 Hadoop是什么
1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
2)主要解决海量数据的存储和海量数据的分析计算问题。
3)广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。
核心部分有HDFS,mapReduce,HBase等。
周围的主要框架还有Hive,zookeeper等。
2 Hadoop发展历史
1)创始人Doug Cutting为了实现与Google类似的全文搜索功能,在Lucene框架基础上进行优化升级查询引擎和索引引擎。
2)2001年年底Lucene成为Apache基金会的一个子项目;
3)学习和模仿Google解决这些问题的办法:微型版Nutch
4)Google是Hadoop的思想之源(Google在大数据方面的三篇论文)
GFS——>HDFS
Map-Reduce——>MR
BigTable——>HBase
5) 2003-2004年,Google公开了部分GFS和MapReduce思想细节,Doug Cutting等人利用业余时间实现了DFS和MapReduce机制,使得Nutch性能飙升。
6)2005年Hadoop作为Lucene子项目Nutch的一部分正式引入Apache基金会。
7)2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入到Hadoop项目中,Hadoop就此正式诞生,标志着大数据时代来临。
8)名字来源于Doug Cutting儿子的玩具大象。
3 Hadoop三大发行版本
Apache 最基础版本,适合入门学习,始于2006年;
Cloudera内部集成了很多大数据框架,对应产品CDH,2008;收费。
Hortonworks,对应产品HDP,2011年。收费。
4 Hadoop优势
1)高可靠性:即时某个硬盘坏掉,仍然会有其他硬盘存储,保证数据不丢失。
2)高扩展性:比如双十一来临时可以动态增加服务器。
3)高效性:可以集群工作。
4)高容错性:自动将失败的任务重新分配。
5 Hadoop组成
1.2x版本将1.1的MapReduce(计算+资源调度)拆分为了MapReduce(计算)和Yarn(资源调度)。
5.1 HDFS架构概述
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。
1)NameNode(NN):存储文件的元数据,如文件名,文件目录结构,文件属性,每个文件的块列表和块所在的DataNode等。
2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
3)Secondary NameNode(2nn):每个一段时间对NameNode元数据备份。
例子一:
在星爷演的鹿鼎记电影里,陈近南教韦小宝武功,韦小宝说“这么大一本,我要练个把月吧”,陈近南说“这一本只不过是绝世武功的目录(NameNode),那一堆才是绝世武功的秘籍。(DataNode)”
例子二:
例如将200G岛国资料存储到400台服务器上(每台服务器有1T),NameNode为200T岛国资源,DataNode各个服务器。
5.2 Yarn架构概述
(1)Resource(RM):整个集群资源(内存、GPU等)的老大。
(2)NodeManager(NM):单个节点服务器资源老大。
(3)ApplicationMaster(AM):单个任务运行的老大。
(4)Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。比如阿里云的400个云服务器,实际可能只有4台服务器实体。
说明:
- 客户端可以有多个
- 集群上可以运行多个ApplicationMaster
- 每个NodeManger上可以有多个Container
运行原理:每个App Master都运行在Container,当要生成一个App Master时,就会向Resource Manger申请资源,在一个节点上开辟一块资源,如果资源不够,还可以继续在其他节点开辟新的container。
5.3 MapReduce架构概述
MapReduce负责海量存储的计算。
分为Map和Reduce两个过程。
比如要从100T的小视频里找出15年5月的wuma视频,可以把100T资源分到多个hadoop服务器中,这个是Map的过程;然后每个服务器再进行查找,并将查找的结果记录下来,汇总到总服务器中,这个是Reduce过程。
5.4 三者关系
step1:提交作业。某个时刻来了一个查询作业:要求查询15年5月的wuma视频,然后集群开始工作。
step2:启动App Master。ResourceManager会找到一个NodeManager节点,开启一个Container,把App Master放到里面。
step3:Map阶段,开启Map Task。App Master向ResourceManager节点申请两个hadoop节点进行map计算。然后开启对应的Container资源。App Master在各个Container中启动Map Task,每一个Map Task独立工作,负责计算是否有1505的wuma视频。返回是否有视频的结果。
step4:Reduce阶段,把整个Map阶段计算的结果进行整个写入到一个磁盘中输出。
6 Hadoop大数据技术生态体系
数据源有三类,分别是:数据库(结构化数据,数据库有行和列的数据),日志文件(半结构化数据,通过分隔符分开了数据,可以通过处理导入到结构化数据中),视频、ppt等(非结构化数据,无法转化为结构化数据)。
数据传输层:用Sqoop同步mysql数据库;比如用户点赞,评论等用户文件数据是文件日志,通过Flume日志收集,视频和ppt等通过Kafka消息队列传输。
数据存储层:结构化和半结构化可以通过HDFS与HBase进行存储。
资源管理层:YARN资源管理。
数据计算层:MapReduce离线计算(完全基于硬盘),Spark Core内存计算(更高效)。Hive数据查询通过HQL进行数据查询,省去了MapReduce写代码的过程。Spark Mlib数据挖掘和Spark Sql数据查询,省去了Spark写代码的过程。Storm实时计算。
任务调度层:Oozie任务调度,Azkaban任务调度。比如我半夜要跑100个任务,其中有5个任务要在凌晨1点执行完后再执行剩下的任务,要用任务调度器实现。
管理框架:Zookeeper数据平台配置和调度。
业务层:业务模型、数据可视化、业务应用。
7 推荐系统架构图
我们在使用淘宝购买物品时,每个人看到的主页都是不一样的,可谓是千人千面。
当我打开淘宝,看到一个人参丸并点进去时,这个行为就会被淘宝后台给记录下来,通过Nginx打入到日志收集的服务中。
这种日志是非结构化数据。通过Flume进行日志收集。
由于这种推荐系统是要求实时的,所以我们采用Kafka来讲数据发送给Spark Streaming进行实时计算。
讲分析结果文件写入到结果数据库中。
最后通过推荐业务服务器计算出推荐的结果,通过前端展现出想要看的页面。