当今互联网发展迅速,大型网站系统的日志量呈指数级增长,而日志对互联网公司是非常重要的,可以通过分析用户操作日志获取用户行为,从而有针对性地对用户进行推荐,提高产品的价值。假如一天产生的日志量为300 GB,一年产生的日志量则为300 GB×365=107 TB,这么大的数据量如何进行备份和容错?又如何进行分析呢?
Apache Hadoop是大数据开发所使用的一个核心框架,是一个允许使用简单编程模型跨计算机集群分布式处理大型数据集的系统。使用Hadoop可以方便地管理分布式集群,将海量数据分布式地存储在集群中,并使用分布式并行程序来处理这些数据。它被设计成从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。Hadoop本身的设计目的不是依靠硬件来提供高可用性,而是在应用层检测和处理故障。
Hadoop的生态系统主要组成架构,如图3-1所示。
图3-1 Hadoop生态系统主要组成架构
随着Hadoop生态系统的成长,出现了越来越多新的项目,这些项目有的需要依赖于Hadoop,有的可以独立运行,有的对Hadoop提供了很好的补充。
下面对Hadoop生态系统架构中的关键技术进行简要介绍,本书后续章节将对每一项技术进行详细讲解。
Hadoop的核心主要包含以下模块。
其他Hadoop相关的系统。
Hadoop 1.x与2.x的架构对比如图3-2所示。
图3-2 Hadoop 1.x与2.x架构对比
Hadoop 1.x的主要核心组成是MapReduce和HDFS。MapReduce不仅负责数据的计算,而且负责集群作业调度和资源(内存、CPU)管理;HDFS负责数据的存储。
Hadoop 2.x在原来的基础上引入了新的框架YARN(Yet Another Resource Negotiator)。YARN负责集群资源管理和统一调度,而MapReduce功能变得单一,其运行于YARN之上,只负责进行数据的计算。由于YARN具有通用性,因此YARN也可以作为其他计算框架(例如,Spark、Storm等)的资源管理系统,不仅限于MapReduce。
这种基于YARN的共享集群方式有以下好处:
以YARN为中心的共享集群资源架构如图3-3所示。
图3-3 以YARN为中心的共享集群资源
说到底,YARN其实是一个通用的资源管理系统。所谓资源管理,就是按照一定的策略将资源(内存、CPU)分配给各个应用程序使用,并且会采取一定的隔离机制防止应用程序之间彼此抢占资源而相互干扰。