基于Hadoop与Spark的大数据开发实战
上QQ阅读APP看书,第一时间看更新

任务2 初识Hadoop

关键步骤如下。

认知Hadoop是什么。

了解Hadoop的发展史。

掌握Hadoop中的核心组件及功能。

了解Hadoop常用的发行版本。

了解Hadoop生态圈中常用的处理框架。

了解大数据在企业中的应用案例。

初识Hadoop

1.2.1 Hadoop概述

1.什么是Hadoop

Hadoop是Apache基金会旗下的一个分布式系统基础架构。主要包括分布式文件系统HDFS(Hadoop Distributed File System)、分布式计算系统Map Reduce和分布式资源管理系统YARN。Hadoop使用户可以在不了解分布式系统底层细节的情况下,开发分布式程序并充分利用集群的分布式能力进行运算和存储。以Apache Hadoop为生态圈的框架是目前分析海量数据的首选。

针对任务1中描述的大数据,我们该如何对这些数据进行分析或者提取出我们需要的有价值的信息呢?我们可以采用Hadoop及其生态圈提供的分布式存储和分布式计算的功能来完成。

2.Hadoop发展史

(1)2002年,Doug Cutting团队开发了网络搜索引擎Nutch,这就是Hadoop的前身。

(2)2003——2004年,随着Google两篇论文的发表诞生了GFS和Map Reduce。

(3)2006年,为致力于Hadoop技术的进一步发展,Doug Cutting加入Yahoo!。

(4)2008年1月,Hadoop成为Apache顶级项目,并在同年7月打破最快排序1TB数据的世界纪录。

(5)2008年9月,Hive成为Hadoop子项目。

(6)2009年3月,Cloudera推出CDH。

(7)2011年12月,发布1.0.0版本,标志着Hadoop已经初具生产规模。

(8)2013年10月,发布2.2.0版本,Hadoop正式进入2.x时代。

(9)2014年,先后发布Hadoop2.3.0、Hadoop2.4.0、Hadoop2.5.0和Hadoop2.6.0。

(10)2015年,发布Hadoop2.7.0。

(11)2016年,发布Hadoop3.0-alpha版本,预示着Hadoop进入3.x时代。

3.Hadoop核心构成

Hadoop框架主要包括三大部分:分布式文件系统、分布式计算系统、资源管理系统。

(1)分布式文件系统HDFS

源自Google发表于2003年10月的GFS论文,HDFS是GFS的克隆版。

Hadoop分布式文件系统(HDFS)适用于大数据场景的数据存储,因为HDFS提供了高可靠性(主要通过多副本来实现)、高扩展性(通过添加机器来达到线性扩展)和高吞吐率的数据存储服务。按照官方的说法,HDFS被设计成能够运行在通用硬件上的分布式文件系统,所以我们的Hadoop集群可以部署在普通的机器上,而不需要部署在价格昂贵的小型机或者其他机器上,能够大大减少公司的运营成本。

HDFS的基本原理是将数据文件以指定的块大小拆分成数据块,并将数据块以副本的方式存储到多台机器上,即使某个节点出现故障,该节点上存储的数据块副本丢失,但是在其他节点上还有对应的数据副本,所以在HDFS中即使某个节点出现问题也不会造成数据的丢失(前提是你的Hadoop集群的副本系数大于1)。HDFS将数据文件的切分、容错、负载均衡等功能透明化(用户是感知不到整个过程的,只知道上传了一个文件到HDFS上,有关数据切分、存储在哪些机器上是感知不到的,非常易用)。我们可将HDFS看成一个容量巨大、具有高容错性的磁盘,在使用的时候完全可以当作普通的本地磁盘使用。所以说HDFS是适合于海量数据的可靠性存储。

(2)分布式计算系统Map Reduce

Map Reduce是一个编程模型,用以进行大数据量的计算。Map Reduce的名字源于这个模型中的两项核心操作:Map(映射)和Reduce(归纳)。Map Reduce是一种简化应用程序开发的编程模型,能让没有多少并行应用开发经验的开发人员也可以快速地学会并行应用的开发,而不需要去关注并行计算中的一些底层问题,只要按照Map Reduce API的编程模型实现相应业务逻辑的开发即可。

一个Map Reduce作业通常会把输入的数据集切分为若干独立的数据块,由map任务以并行的方式处理它们,对map的输出先进行排序,然后再把结果输入reduce任务,由reduce任务来完成最终的统一处理。通常Map Reduce作业的输入和输出都是使用Hadoop分布式文件系统(HDFS)进行存储,换句话说,就是Map Reduce框架处理数据的输入源和输出目的地的大部分场景都是存储在HDFS上的。

在部署Hadoop集群时,通常是将计算节点和存储节点部署在相同的节点之上,这样做的好处是允许计算框架在进行任务调度时,可以将作业优先调度到那些已经存有数据的节点上进行数据的计算,使整个集群的网络带宽被非常高效地利用,这就是大数据中非常有名的一句话“移动计算而不是移动数据”。

(3)资源管理系统YARN

YARN的基本思想是将Hadoop1.x中Map Reduce架构中的Job Tracker的资源管理和作业调度监控功能进行分离,解决了在Hadoop1.x中只能运行Map Reduce框架的限制。

YARN是随着Hadoop的不断发展而催生的新框架,全称是Yet Another Resource Negotiator,是一个通用资源管理系统,可为运行在YARN之上的分布式应用程序提供统一的资源管理和调度。YARN的引入为Hadoop集群在利用率、资源统一管理和数据共享等方面带来了很大好处,而且在YARN之上还可运行各种不同类型的作业,比如:Map Reduce、Spark、Tez等不同的计算框架。

4.为什么很多公司选择Hadoop作为大数据平台的解决方案

(1)Hadoop源代码开放。

(2)社区活跃、参与者众多(这是我们选择某一项框架的很重要的原因,试想如果社区都不活跃,那么当我们在工作中遇到各种问题时,如何去解决)。

(3)涉及大数据分布式存储和计算的各个场景。

(4)发展了十余年,已得到企业界的验证。

5.Hadoop发行版本

Hadoop的发行版除了由社区维护的 Apache Hadoop之外,Cloudera、Hortonworks、Map R等都提供了自己的商业版。商业版主要是提供对各项服务的支持(高级功能要收取一定的费用),这对一些研发能力不是太强的企业来说是非常有利的,公司只要出一定的费用就能使用到一些高级功能。每个发行版都有自己的一些特点,这里对使用最多的CDH和HDP发行版的特点做简单介绍。

(1)Cloudera CDH

Cloudera CDH版本的Hadoop是现在国内公司使用最多的。

优点:Cloudera Manager(简称CM)采取“小白”式安装,配置简单、升级方便,资源分配设置方便,非常利于整合Impala,而且文档写得很好,与Spark的整合力度也非常好。在CM的基础之上,我们通过页面就能完成对Hadoop生态圈各种环境的安装、配置和升级。

缺点:CM不开源,Hadoop的功能和社区版有些出入。

(2)Hortonworks HDP

优点:原装Hadoop、纯开源,版本和社区版一致,支持Tez,集成开源监控方案Ganglia和Nagios。

缺点:安装、升级、添加、删除节点比较麻烦。

1.2.2 Hadoop生态圈

1.概述

当下Hadoop已经成长为一个庞大的体系,只要和海量数据相关的,没有哪个领域能缺少Hadoop的身影。

狭义的Hadoop:是一个适合大数据分布式存储和分布式计算的平台,包括HDFS、Map Reduce和YARN。

广义的Hadoop:指以Hadoop为基础的生态圈,是一个很庞大的体系,Hadoop只是其中最重要、最基础的一部分;生态圈中的每个子系统只负责解决某一个特定的问题域(甚至可能更窄),它并不是一个全能系统,而是多个小而精的系统。Hadoop生态圈的主要构成如图1.1所示。

图1.1 Hadoop生态圈

2.HDFS

Hadoop生态圈的基本组成部分是Hadoop分布式文件系统(HDFS)。大数据处理框架如Map Reduce或者Spark等要处理的数据源大部分都是存储在HDFS之上,Hive或者HBase等框架的数据通常情况下也是存储在HDFS之上。简而言之,HDFS为大数据的存储提供了保障。

3.Map Reduce

Map Reduce是一个分布式、并行处理的编程模型。开发人员只需编写Hadoop的Map Reduce作业就能使用存储在HDFS中的数据来完成相应的数据处理功能。

4.YARN

YARN是Hadoop2.x之后对Hadoop1.x之前Job Tracker和Task Tracker模型进行优化而诞生的,主要负责整个系统的资源管理和调度,而且在YARN之上能运行各种不同类型(Map Reduce、Tez、Spark)的执行框架。

5.HBase

HBase是一个建立在HDFS之上的面向列的数据库,用于快速读/写大量数据。HBase使用Zoo Keeper进行管理,以确保所有组件都能正常运行。HBase保障查询速度的一个关键因素就是其Row Key设计得是否合理,这点需要重点关注。

6.Zoo Keeper

Zoo Keeper是分布式协调服务的框架。Hadoop的许多组件都依赖于Zoo Keeper,比如HDFS Name Node HA的自动切换、HBase的高可用,以及Spark Standalone模式Master的HA机制都是通过Zoo Keeper来实现的。

7.Hive

Hive让不熟悉Map Reduce的开发人员能编写数据查询语句(SQL语句)来对大数据进行统计分析操作。Hive的执行原理就是将SQL语句翻译为Map Reduce作业,并提交到Hadoop集群上运行。Hive框架一诞生就受到了很多熟悉SQL人员的追捧,因为只需要写SQL语句,而不需要面向Map Reduce编程API进行相应代码的开发,大大降低了学习的门槛,同时也提升了开发的效率。

8.Pig

Pig是一个用于并行计算的高级数据流语言和执行框架,有一套和SQL类似的执行语句,处理的对象是HDFS上的文件。Pig的数据处理语言采取数据流方式,一步一步地进行处理(该框架简单了解即可,近些年在生产上使用得并不是太多)。

9.Sqoop

Sqoop是一个用于在关系数据库、数据仓库(Hive)和Hadoop之间转移数据的框架。可以借助Sqoop完成关系型数据库到HDFS、Hive、HBase等Hadoop生态圈中框架的数据导入导出操作,其底层也是通过Map Reduce作业来实现的。

10.Flume

Flume是由Cloudera提供的一个分布式、高可靠、高可用的服务,是用于分布式的海量日志的高效收集、聚合、移动/传输系统的框架;Flume是一个基于流式数据的非常简单的(只需要一个配置文件)、灵活的、健壮的、容错的架构。

11.Oozie

Oozie是一个工作流调度引擎,在Oozie上可以执行Map Reduce、Hive、Spark等不同类型的单一或者具有依赖性(后一个作业的执行依赖于前一个或者多个作业的成功执行)的作业。可以使用Cloudera Manager中的HUE子项目在页面上对Oozie进行配置和管理。类似的在大数据中使用的工作流调度引擎还有Azkaban,后续章节会详细介绍。

12.Mahout

Mahout是一个机器学习和数据挖掘库,它提供的Map Reduce包含很多实现,包括聚类算法、回归测试、统计建模。

1.2.3 Hadoop应用案例

1.大数据在华数传媒的应用

当下大数据之热使得技术界有关Hadoop的话题讨论得热火朝天。但在日常工作中,企业往往还是遵循既有模式,对于Hadoop到底能否真正有益于企业的应用依然心存顾虑。Hadoop是不是很年轻?这个开源的事物能否符合公司业务级的严谨要求?有没有企业真的应用过?一系列问题萦绕在人们心头。这完全可以理解,毕竟任何一个新生事物出来人们都要有一个接受过程。

对于Hadoop,其实这些都不是问题。专业人士都知道,Hadoop已发展了十余年,这对于一个实用技术的稳定发展已足够长。事实上,虽然“大数据”一词才出来两三年,但它实际所指的海量的、多类型的数据现象早已有了,不但在互联网领域,更在工业、商业、通信、金融、传媒等领域存在久远。比如,生产线上巨量传感器数据的接收与分析、通信系统全程全网的实时日志文件采集与分析、医疗系统密集数据采集与分析等,所有这些都需要新型的数据处理技术来支撑。Hadoop在这些领域突显了强大的竞争力,并在国内外的相关实践中获得广泛应用。

2013年,华数传媒的大数据系统完成了从无到有的基础建设,实现了基本应用。然而,系统仍面临很多挑战:数据量增加带来的服务性能压力、数据分析无法满足高时效性要求、业务支撑功能无法满足复杂的商用需求、对网络和服务器质量等数据分析仍为空白等。为此,华数传媒亟需解决如下问题。

(1)数据采集、存储和转发。通过大数据技术满足海量、多来源、多样性数据的存储、管理要求,支持平台硬件的线性扩展,提供快速实时的数据分析结果,并迅速作用于业务。

(2)个性化用户推荐。不仅限于数据本身的分析和决策价值,通过构建在大数据平台之上的整合业务能力,还能为用户提供融合、个性化的内容服务。

(3)从内容传输到内容制造。使用大数据挖掘技术可先于观众知道他们的需求,预知将受到追捧的电视节目。另外,通过观众对演员、情节、基调、类型等元数据的标签化,来了解受众偏好,从而进行分析观测,为后续影视制作的内容开发等做好准备。

(4)使用大数据平台提供基于全量数据的实时榜单。从时间(小时/天/周)、用户等维度,对点播节目、直播节目、节目类别、搜索关键词等进行排名分析、同比环比分析、趋势分析等。地区风向标主要从城市和时间等维度分析点播排行、剧集排行、分类排行、热搜排行及用户数量的变化。另外,从时间、频道、影片类型、剧集等维度,根据在看数量、新增数量、结束观看数量、完整看完数量等指标分析用户走向。

(5)新媒体指数分析。通过对用户行为进行分析获取很多的隐性指标,从侧面反映用户对业务的认可度、用户的使用行为习惯等。在此基础之上,大数据分析可帮助华数传媒构建规范的指标分析和衡量体系,为业务运营提供更加强有力的指导。

(6)智能推荐。运用星环科技大数据基础架构,通过对用户行为数据的采集分析,进行精准画像;使用智能推荐引擎,实现信息的个性化推荐(TV屏、手机、PC)和个性化营销(个性化广告、丰富产品组合、市场分析)。

基于可持续扩展和优化的智能推荐算法,以及大数据带来的实时数据交互能力,为每一个用户量身定制的推荐节目极大地提高了产品的到达率,增强了用户的忠诚度。

2.大数据在全球最大超市沃尔玛的应用

沃尔玛应用大数据技术分析顾客的商品搜索行为,找出超越竞争对手的商机。

全球最大连锁超市沃尔玛虽然十年前就投入了在线电子商务,但在线销售的营业收入远远落后于亚马逊。后来,沃尔玛采用Hadoop来分析顾客搜索商品的行为,以及用户通过搜索引擎找到沃尔玛网站的关键词,再利用这些关键词的分析结果发掘顾客需求,以规划下一季商品的促销策略,沃尔玛还打算分析顾客在Facebook、Twitter等社交网站上对商品的讨论,甚至沃尔玛能比父亲更快知道女儿怀孕的消息,并且主动寄送相关商品的促销邮件,期望能比竞争对手提前一步发现顾客需求。

3.大数据在全球最大拍卖网站eBay的应用

eBay用Hadoop拆解非结构性巨量数据,降低数据仓储负载。eBay用Hadoop来分析买卖双方在网站上的行为。eBay拥有全世界最大的数据仓储系统,每天增加的数据量有50TB,光是存储就是一大挑战,更何况要分析这些数据。

eBay是全球最大的拍卖网站,8千万名用户每天产生的50TB数据量,相当于5天就增加了1座美国国会图书馆的数据量。

eBay分析平台高级总监Oliver Ratzesberger也坦言,大数据分析面临的最大挑战就是要同时处理结构化以及非结构化的数据。eBay正是利用Hadoop来解决了这一难题。

eBay在5年多前就另外设置了一个软硬件整合的平台Singularity,并搭配压缩技术来解决结构化数据和半结构化数据分析问题,3年前更在这个平台上整合了Hadoop来处理非结构化数据,以及进行数据预处理,将大块结构化和非结构化数据拆解成小型数据,再放入数据仓储系统的数据模型中进行分析,以加快分析速度,也减轻数据仓储系统的分析负载。