Hadoop应用开发基础
上QQ阅读APP看书,第一时间看更新

任务2 了解Hadoop基础

【任务描述】

了解Hadoop概念及由来,掌握Hadoop的核心组件及组件功能,了解Hadoop生态圈技术的功能。

【关键步骤】

(1)认识Hadoop。

(2)掌握Hadoop的核心组件及功能。

(3)了解Hadoop的生态圈技术及应用场景。

(4)了解大数据在目前行业中的应用案例。

1.2.1 Hadoop概述

1. 什么是Hadoop

Hadoop是由Apache软件基金会开发的一个可靠的、可扩展的分布式系统架构。架构中包含用于解决大数据存储的分布式文件系统(Hadoop Distributed File System,HDFS)、用于解决分布式计算的分布式计算框架MapReduce以及分布式资源管理系统YARN。Apache Hadoop软件库是一个框架,允许用户在不了解分布式系统底层细节的情况下,使用简单的编程模型开发分布式程序,并充分利用集群的分布式能力进行运算和存储。它的设计目的是从单一的服务器扩展到成千上万的机器,并将集群部署在多台机器中,每台机器提供本地计算和存储。Apache Hadoop生态圈已成为目前处理海量数据的首选架构。

2. Hadoop发展史

Apache Hadoop起源于开源的网络搜索引擎Apache Nutch,Nutch是Apache Lucene项目的一部分。2002年,Apache Lucene的创始人Doug Cutting创建了Hadoop。

2003—2004年,Google发表了The Google File SystemMapReduce: Simplifed Data Processing on Large Cluster两篇论文,向全世界展示了Google分布式文件系统(GFS)和MapReduce框架。

2005年年初,Nutch开发人员在Nutch上实现了一个MapReduce算法,花费半年左右的时间完成Nutch主要算法的移植,并用MapReduce和NDFS来运行。

2006年2月,开发人员将NDFS和MapReduce与Nutch分离,形成Lucene子项目,并命名为Hadoop。Doug Cutting几经周折加入Yahoo公司,并致力于Hadoop技术的进一步发展。

2008年1月,Hadoop成为Apache的顶级项目,同年4月,Hadoop打破世界纪录,成为最快的TB量级数据排序系统。

2009年3月,Cloudera公司基于Apache Hadoop发布了CDH版本。

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

2013年,Hadoop发布了2.2.0版本,Hadoop进入到2.x时代。

2014年,Hadoop2.x更新速度加快,先后发布了Hadoop2.3.0、Hadoop2.4.0、Hadoop2.5.0和Hadoop2.6.0,极大地完善了YARN框架和整个集群的功能。

2015年,发布了Hadoop2.7.0版本。

2016年,Hadoop及其生态圈在各行各业落地并且得到广泛应用,同年,Hadoop发布Hadoop3.0-alpha版本,标志着Hadoop进入3.x时代。

3. Hadoop VS RDBMS

在许多场景下,Hadoop能够被视为RDBMS(关系型数据库管理系统)的一种补充。两个系统之间的对比如表1-1所示。Hadoop很适合那些需要分析(尤其是自主分析)整个数据集的问题,以批处理的方式进行,而RDBMS适合于点查询和更新。Hadoop适合数据被一次写入和多次读取的应用,而RDBMS适合持续更新的数据集。

表1-1 RDBMS与Hadoop对比

4. Hadoop核心构成

Hadoop框架包括三个部分:分布式文件系统HDFS、计算系统MapReduce、资源管理系统YARN。

(1)分布式文件系统HDFS

HDFS是谷歌GFS的克隆版,是对谷歌2003年10月发表的GFS论文的开源实现。作为大数据领域的数据存储,HDFS的设计目标就是提供一个具有高可靠性、高容错性、高吞吐量以及能运行在通用硬件上的分布式文件存储系统。

HDFS的设计思想是将数据文件以指定的大小切分成数据块,将数据块以多副本的方式存储在多台机器上。这样的设计使HDFS可以更方便地做数据负载均衡以及容错,而且数据文件的切分、数据负载均衡和容错这些功能对用户都是透明的,用户在使用的时候,可以把HDFS当作普通的本地文件系统使用。

(2)分布式计算框架MapReduce

MapReduce是Hadoop的核心计算框架,用于PB量级数据的并行计算。MapReduce是一种简化应用程序开发的编程模型,模型中主要包括Map(映射)和Reduce(规约)两项核心操作。MapRecude编程模型为应用开发者隐藏了系统层实现细节,允许用户不必关注并行计算底层实现,只需按照MapReduce API的编程模型即可实现相应业务逻辑的开发。

当启动一个MapReduce任务时,作业会将输入的数据集切分成若干独立的数据块,由Map端将数据映射成需要的键值对类型,然后对Map的输出进行排序,再把结果输入Reduce端;Reduce端接收Map端传过来的键值对类型的数据,根据不同键分组,对每一组键相同的数据进行处理,得到新的键值对并输出,这就是MapReduce的核心思想。通常MapRedude任务的输入和输出都是使用HDFS进行存储,也就是说,MapReduce处理数据的大部分场景都存储在HDFS上。

(3)资源管理系统YARN

YARN(Yet Another Resource Negotiator,另一种资源协调者)是一种新的Hadoop资源管理器。在Hadoop1.x版本中还没有YARN,它的出现解决了Hadoop1.x版本中MapReduce架构中JobTracker负载压力过大的问题,它将JobTracker的资源管理和作业调度拆分成两个独立的服务,分别为全局的资源管理器(ResourceManager)和每个应用程序特有的ApplicationMaster。其中,ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。

YARN是随着Hadoop的不断发展而催生的新框架,它的引入不仅解决了JobTracker负载压力大的问题,同时也解决了Hadoop1.x中只能运行MapReduce作业的限制。YARN作为一个通用的资源管理系统,允许在其上运行各种不同类型的作业,比如MapReduce、Spark、Tez等。

YARN的引入,为Hadoop集群在利用率、资源统一管理和数据共享等方面带来了极大的提升。

5. 为什么选择Hadoop作为大数据的解决方案

企业在选择技术架构的时候,主要考量的方面包括源码的开放程度、社区的活跃程度、目前在业界的使用情况等。Hadoop能被选作大数据的解决方案,原因有很多,本节主要列举以下四个原因。

(1)Hadoop源代码开放。

(2)社区活跃、参与者众多。实际工作中遇到问题可以在社区得到很好的解决。

(3)Hadoop发展到现在,已经得到企业界的广泛验证。

(4)Hadoop生态圈可胜任分布式存储和计算的各个场景。

6. Hadoop发行版本

目前而言,Hadoop的发行版本主要有三个。

(1)Apache Hadoop。这是最原始的版本,所有的发行版都是基于这个版本进行改进的,也被称为社区版Hadoop。

(2)Cloudera CDH。是目前国内公司使用最多的。CDH完全开源,比起Apache Hadoop,在兼容性、安全性和稳定性上均有所增强。

(3)Hortonworks HDP。该版本的Hadoop是百分之百开源的,版本和社区版完全一致,它集成了开源监控方案Ganglia和Negios。2018年10月,两家大数据先驱Cloudera和Hortonworks宣布合并。

1.2.2 Hadoop生态圈

1. 概述

Hadoop自出现以后,得到快速发展,大量与其相关的应用也被开发出来,共同服务于Hadoop工程。现在Hadoop已经成为一个庞大的架构体系,只要是与大数据相关的,都会出现Hadoop的身影。这些相关组件系统与Hadoop一起构成Hadoop生态圈,如图1.1所示。

图1.1 Hadoop生态圈

2. Hadoop生态圈技术

(1)Hadoop核心

Hadoop的核心构成包括用于分布式存储的HDFS、用于分布式计算的MapReduce,以及用于分布式资源管理的YARN。三个核心的具体功能及架构在后面的章节会详细讲解。

(2)数据查询分析

Hadoop生态圈提供了方便用户使用的数据查询分析框架Hive和Pig。下面分别对这两种框架进行介绍。

Hive是建立在Hadoop之上的数据仓库基础框架,可以将结构化的数据文件映射为一张数据库表,并定义了一种类SQL语言(HQL),让不熟悉MapReduce的开发人员也能编写数据查询语句来对大数据进行分析统计操作。Hive的出现极大地降低了大数据技术的学习门槛,同时提高了开发效率。

Pig是一个基于Hadoop的大规模数据分析平台,它有一套叫作Pig Latin的类SQL语言,该语言的编译器会把类SQL的数据分析请求转换成一系列经过优化处理的MapReduce运算,处理的对象是HDFS上的文件。

(3)协调管理

在Hadoop生态圈中,使用ZooKeeper框架来解决分布式环境下的数据管理问题,比如统一命名、状态同步和配置同步等问题。Hadoop的大多数组件都依赖于ZooKeeper,比如HBase的高可用就是通过ZooKeeper来实现的。

(4)数据迁移

在数据应用中,通常会有不同系统间的数据迁移操作。在Hadoop生态圈中,Sqoop和Flume框架可以很好地解决不同系统间的数据收集和传输。

Sqoop是一款开源的工具,主要用在关系型数据库、数据仓库和Hadoop之间进行数据迁移。在实际应用中,可以使用Sqoop完成关系型数据库到HDFS、Hive等框架的数据导入导出操作。

Flume是Cloudera提供的一个高可用、高可靠、分布式的框架,主要用于分布式海量日志数据的高效搜集、聚合和传输。Flume支持在日志系统中定制各类数据发送方,用于收集数据,同时Flume提供对数据进行简单处理并写入各种数据接收方的能力。

(5)NoSQL

在Hadoop生态圈中,HBase提供了NoSQL数据库的功能,用于满足大数据应用中快速随机访问大数据量(PB量级)数据并及时响应用户的需求。

HBase是建立在HDFS上的面向列的NoSQL数据库,可以对大规模数据进行随机、实时读/写访问。HBase具有可伸缩、高可靠、高性能的特点。

(6)机器学习

目前,机器学习已经发展成为一个热门话题,Hadoop生态圈中提供了Mahout库来完成机器学习功能。

Mahout提供了一些可扩展的机器学习领域经典算法的实现,目的是帮助开发人员方便快捷地开发智能应用程序。Mahout是一个机器学习和数据挖掘库,包括聚类、分类、推荐引擎(协同过滤)等数据挖掘方法,用户可以通过调用算法包来缩短编程时间。

(7)任务调度

大数据实际应用中,通常会遇到多个作业协同完成一个业务分析的场景。这就需要一个能合理管理作业调度的框架,在Hadoop生态圈中,由Oozie负责解决任务调度问题。

Oozie是一个工作流引擎,是基于Hadoop的调度器,可以调度MapReduce、Pig、Hive、Spark等不同类型的单一或者具有依赖性的作业。当一个作业中需要调用几个任务时,就可以使用Oozie将任务串联,再通过Oozie调度整个任务进程。

1.2.3 Hadoop应用案例

1. 大数据在传媒行业的应用

大数据正逐渐上升为不同新闻媒体晋升一流媒体的优化路径,如何利用缜密的大数据思维和良好的大数据洞察力推动传媒生态升级转型,使自身完全具备大数据应用的能力,已被各大媒体提上重要议程。大数据时代正在推动整个传媒行业发生深刻变革,要想在这场变革中获得优势,必须构建创新思维体系,充分利用传统媒体和大数据时代的特点,发展壮大传媒行业。

通过全网舆情数据汇聚互联网上的文章内容,挖掘全网最热新闻话题和话题评价,为新闻发稿、栏目制作做参考,达到报道分析热点的抓取、节目制作的改进、明星邀约的助攻。通过智能算法得出有可能成为明日头条的新闻事件,实现最快新闻发稿,最贴合节目编辑,达到快人一步、领先全部。

通过创建微博分析任务进行传播分析,展现微博曝光数,挖掘话题的兴趣图谱、普通用户与大V的关系网络,整合标签进行多维透视,深度刻画人群画像,精准触达目标客户。

2. 大数据在智能交通领域的应用

近年来,随着我国经济的快速发展,机动车持有量迅速增加,交通管理现状和需求的矛盾进一步加剧。在此情况下,如何利用先进的科技手段提高交通管理水平,抑制交通事故发生,是当前交通管理部门亟待解决的问题。

针对交通管理部门的需求以及我国的道路特点,可通过整合图像处理、模式识别等技术,对监控路段的机动车道、非机动车道进行全天候实时监控和数据采集。前端卡口处理系统对拍摄的图像进行分析,获取车牌号码、车牌颜色、车身颜色、车标、车辆子品牌等数据,并将获取到的车辆信息连同车辆的通过时间、地点、行驶方向等信息,通过计算机网络传输到卡口系统控制中心的数据库中,进行数据存储、查询、比对等处理,当发现肇事逃逸、违章或可疑车辆时,系统会自动向拦截系统及相关人员发出告警信号,为交通违章处理、交通事故逃逸、盗抢机动车辆等案件的及时侦破提供重要的信息和证据。同时,随着全城Smart系统的建设,新型的Smart IPC监控前端也将成为一个卡口系统,这使得城市卡口系统更加严密,能够获取到更多的过往车辆数据,能够更准确地描绘出车辆动态信息。

基于大数据的智慧交通存在多种可能。交通的智能化是根本的趋势,利用大数据技术和智能分析技术,整合城市管理的其他数据,将真正推动智慧交通建设,为交通管理奠定良好的基础。目前大数据技术主要应用在交管部门所辖道路,随着数据的进一步联网开放,可以整合停车场、铁路、轨道交通、公交等各种来源的数据,提供更为丰富的城市交通应用,让道路更加畅通,停车位不再难找,提升城市交通整体运营效率。

3. 大数据在金融行业的应用

下面从四个方面介绍大数据技术在金融行业的应用。

(1)客户画像应用

在银行业务中,银行拥有的客户信息并不全面,基于银行自身拥有的数据有时难以得出理想的结果甚至可能得出错误的结论。比如,某位信用卡客户月均刷卡8次,平均每次刷卡金额800元,平均每年拨打4次客服电话,从未有过投诉。按照传统的数据分析,该客户应该是一位满意度较高、流失风险较低的客户。但如果看到该客户的微博,看到的真实情况却是:由于工资卡和信用卡不在同一家银行,导致还款不方便,该客户好几次打客服电话没接通,并多次在微博上抱怨。可见该客户的流失风险较高。所以银行不仅要考虑银行自身业务采集到的数据,还应考虑整合更多的外部数据,可以使用大数据客户画像方式采集客户特征、客户标签,完成有效的客户画像,便能对客户进行有效的数据建模和有效准确的营销。

(2)精准营销

在客户画像的基础上银行可以有效地开展精准营销,包括:

实时营销:根据客户的实时状态来进行营销。

交叉营销:即不同业务或产品的交叉推荐。

个性化推荐:根据客户的喜好进行服务或者进行产品的个性化推荐。

客户生命周期的管理:新客户获取、老客户流失和老客户赢回等。

(3)风险管控

风险管控包括中小企业贷款风险评估、欺诈交易识别和反洗钱等手段。

中小企业贷款风险评估:将企业的产品、流通、销售、财务等信息结合大数据挖掘方法进行贷款风险分析。

欺诈交易识别和反洗钱:利用持卡人基本信息、交易模式、行为模式等,结合智能规则进行交易反欺诈分析。

(4)运营优化

市场和渠道分析优化:通过大数据,银行可以监控不同市场推广渠道尤其是网络渠道推广的质量,从而进行合作渠道的调整和优化。

产品和服务优化:金融行业可以将客户行为转化为信息流,并从中分析客户的个性特征和风险偏好,更深层次地理解客户习惯,智能化分析和预测客户需求,从而进行产品创新和服务优化。

舆情分析:金融行业可以通过爬虫技术,抓取社区、论坛和微博上关于银行以及银行产品和服务的相关信息,并通过自然语言处理技术进行正负面舆情判断。