Hadoop + Spark生态系统操作与实战指南
上QQ阅读APP看书,第一时间看更新

1.2 Hadoop版本和生态系统

1. Hadoop版本的优缺点

目前市面上Hadoop版本主要有两种:Apache版本和CDH版本。

(1)Aapche版本的Hadoop

官网:http://hadoop.apache.org/

Aapche Hadoop优势:对硬件要求低。

Aapche Hadoop劣势:搭建烦琐,维护烦琐,升级烦琐,添加组件烦琐。

Apache版本Hadoop集群中YARN的界面如图1-1所示,HDFS的界面图1-2所示。

图1-1 YARN的界面

图1-2 HDFS的界面

(2)CDH版本的Hadoop

官网:https://www.cloudera.com/

CDH优势:搭建方便,维护较为容易,升级以及迁移容易,添加组件容易。

CDH缺点:对硬件要求高。

Cloudera Manager是一个管理CDH的端到端的应用。主要作用包括:管理、监控、诊断、集成。

CDH的Hadoop版本集群中CDH管理界面如图1-3所示。

图1-3 CDH管理界面

2. CDH架构

CDH架构如图1-4所示。

图1-4 CDH架构

(1)Server

管理控制台服务器和应用程序逻辑。

负责软件安装、配置,启动和停止服务。

管理服务运行的集群。

(2)Agent

安装在每台主机上。

负责启动和停止进程,配置、监控主机。

(3)Management Service

由一组角色组成的服务,执行各种监视、报警和报告功能。

3. Hadoop生态系统和组件介绍

Hadoop生态组件主要包括:MapReduce、HDFS、HBase、Hive、Pig、ZooKeeper、Mahout。Hadoop生态系统组件如图1-5所示。

图1-5 Hadoop生态系统组件

(1)MapReduce:MapReduce是使用集群的并行、分布式算法处理大数据集的可编程模型。Apache MapReduce是从Google MapReduce派生而来的:在大型集群中简化数据处理。当前的Apache MapReduce版本基于Apache YARN框架构建。YARN是“Yet-Another-Resource-Negotiator”的缩写。YARN可以运行非MapReduce模型的应用。YARN是Apache Hadoop想要超越MapReduce数据处理能力的一种尝试。

(2)HDFS:The Hadoop Distributed File System(HDFS)提供跨多个机器存储大型文件的一种解决方案。Hadoop和HDFS都是从Google File System(GFS)中派生的。Hadoop 2.0.0之前,NameNode是HDFS集群的一个单点故障(SPOF)。利用ZooKeeper、HDFS高可用性特性解决了这个问题,提供选项来运行两个重复的NameNodes,在同一个集群中,同一个Active/Passive配置。

(3)HBase:灵感来源于Google BigTable。HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用ZooKeeper作为对应。

(4)Hive:Facebook开发的数据仓库基础设施。数据汇总、查询和分析。Hive提供类似SQL的语言(不兼容SQL92):HiveQL。

(5)Pig:Pig提供一个引擎在Hadoop并行执行数据流。Pig包含一个语言:Pig Latin,用来表达这些数据流。Pig Latin包括大量的传统数据操作(join、sort、filter等),也可以让用户开发他们自己的函数,用来查看、处理和编写数据。Pig在Hadoop上运行,在Hadoop分布式文件系统(HDFS)和Hadoop处理系统MapReduce中都有使用。Pig使用MapReduce来执行所有的数据处理,编译Pig Latin脚本,用户可以编写一个系列,一个或者多个的MapReduce作业,然后执行。Pig Latin看起来跟大多数编程语言都不一样,没有if状态和for循环。

(6)ZooKeeper:ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper是Google的Chubby一个开源的实现,是高效和可靠的协同工作系统。ZooKeeper能够用来执行leader选举、配置信息维护等。在一个分布式的环境中,我们需要一个Master实例用来存储一些配置信息,确保文件写入的一致性等。

(7)Mahout :基于MapReduce的机器学习库和数学库。