版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目6大数据处理技术目录1任务6.1:熟悉大数据处理技术
【导读案例】Cloudera领衔大数据基础设施
【任务描述】
【知识准备】大数据处理的内容与技术【作业】【实训操作】理解和熟悉大数据处理技术【导读案例】Cloudera领衔大数据基础设施讨论:(1)请通过网络搜索,进一步了解Cloudera公司,并做简单描述。(2)除了Cloudera,你还知道哪些领衔大数据基础设施的公司?其中属于中国的公司主要有哪些?(3)文中为什么说:“大数据技术需要花费很长时间才能融入企业中”?(4)请简单记述你所知道的上一周内发生的国
际、国内或者身边的大事。【任务描述】(1)熟悉大数据处理的基本技术,了解大数据处理的基本概念和技术架构。(2)熟悉大数据处理的批处理模式和实时处理模式。(3)掌握大数据处理的处理工作量,熟悉SCV原则。(4)分析ETI企业,掌握大数据处理工作量与处理模式工作方式。【知识准备】大数据处理的内容与技术大数据处理如今已不再是新话题了。在考虑数据仓库与其相关数据市场的关系时,把庞大的数据集分成多个较小的数据集来处理可以加快大数据处理的速度。人们已经把存储在分布式文件系统、分布式数据库上的大数据集分成较小的数据集了。要理解大数据处理,关键是要意识到处理大数据与在传统关系型数据库中处理数据是不同的,大数据通常以分布式的方式在其各自存储的位置进行并行处理。许多大数据处理采用批处理模式,而针对以一定速度按时间顺序到达的流式数据,现今已经有了相关的分析方法,例如,利用内存架构,意义构建理论可以提供态势感知。流式大数据的处理应遵循一项重要的原则,即SCV原则,其中:S代表Speed(速度),C代表Consistency(一致性),V代表Volume(容量)。开源技术的商业支援6.1.16.1.1开源技术的商业支援在大数据生态系统中,基础设施主要负责数据存储以及处理公司掌握的海量数据。应用程序则是指人类和计算机系统通过使用这些程序,从数据中获知关键信息。人们使用应用程序使数据可视化,并由此做出更好的决策;而计算机则使用应用系统将广告投放到合适的人群,或者监测信用卡欺诈行为。在大数据的演变中,开源软件起到了很大的作用。如今,Linux已经成为主流操作系统,并与低成本的服务器硬件系统相结合。有了Linux,企业就能在低成本硬件上使用开源操作系统,以低成本获得许多相同的功能。MySQL开源数据库、Apache开源网络服务器以及PHP开源脚本语言(最初为创建网站开发)搭配起来的实用性也推动了Linux的普及。6.1.1开源技术的商业支援随着越来越多的企业将Linux大规模地用于商业用途,他们期望获得企业级的商业支持和保障。在众多的供应商中,红帽子Linux(RedHat)脱颖而出,成为Linux商业支持及服务的市场领导者。甲骨文公司(Oracle)也购并了最初属于瑞典MySQLAB公司的开源MySQL关系数据库项目。6.1.1开源技术的商业支援IBM、Oracle(甲骨文)以及其他公司都在将他们所拥有的大型关系型数据库商业化。关系型数据库使数据存储在自定义表中,再通过一个密码进行访问。例如,一个雇员可以通过一个雇员编号认定,然后该编号就会与包含该雇员信息的其他字段相联系——她的名字、地址、雇用日期及职位等。本来这样的结构化数据库还是可以适用的,直到公司不得不解决大量的非结构化数据。比如谷歌必须处理海量网页以及这些网页链接之间的关系,而Facebook必须应付社交图谱数据。社交图谱是其社交网站上人与人之间关系的数字表示——社交图谱上每个点末端连接所有非结构化数据,例如照片、信息、个人档案等。因此,这些公司也想利用低成本商用硬件。6.1.1开源技术的商业支援于是,像谷歌、雅虎、脸书以及其他这样的公司开发出各自的解决方案,以存储和处理大量的数据。正如UNIX的开源版本和甲骨文的数据库以Linux和MySQL这样的形式应运而生一样,大数据世界里有许多类似的事物在不断涌现。6.1.1开源技术的商业支援ApacheHadoop是一个开源分布式计算平台,通过Hadoop分布式文件系统HDFS(HadoopDistributedFileSystem)存储大量数据,再通过名为MapReduce的编程模型将这些数据的操作分成小片段。ApacheHadoop源自谷歌的原始创建技术,随后,开发了一系列围绕Hadoop的开源技术。ApacheHive提供数据仓库功能,包括数据抽取、转换、装载(ETL),即将数据从各种来源中抽取出来,再实行转换以满足操作需要(包括确保数据质量),然后装载到目标数据库。ApacheHBase则提供处于Hadoop顶部的海量结构化表的实时读写访问功能,它仿照了谷歌的BigTable。同时,ApacheCassandra通过复制数据来提供容错数据存储功能。6.1.1开源技术的商业支援在过去,这些功能通常只能从商业软件供应商处依靠专门的硬件获取。开源大数据技术正在使数据存储和处理能力——这些本来只有像谷歌或其他商用运营商之类的公司才具备的能力,在商用硬件上也得到了应用。这样就降低了使用大数据的先期投入,并且具备了使大数据接触到更多潜在用户的潜力。6.1.1开源技术的商业支援开源软件在开始使用时是免费的,这使其对大多数人颇具吸引力,从而使一些商用运营商采用免费增值的商业模式参与到竞争当中。产品在个人使用或有限数据的前提下是免费的,但顾客需要在之后为部分或大量数据的使用付费。久而久之,采用开源技术的这些企业往往需要商业支援,一如当初使用Linux碰到的情形。像Cloudera、HortonWorks及MapR这样的公司在为Hadoop解决这种需要的同时,类似DataStax的公司也在为非关系型数据库(cassandra)做着同样的事情,LucidWorks之于ApacheLucerne也是如此(后者是一种开源搜索解决方案,用于索引并搜索大量网页或文件)。大数据的技术架构6.1.26.1.2大数据的技术架构要容纳数据本身,IT基础架构必须能够以经济的方式存储比以往更大量、类型更多的数据。此外,还必须能适应数据变化的速度。由于数量如此大的数据难以在当今的网络连接条件下快速移动,因此,大数据基础架构必须分布计算能力,以便能在接近用户的位置进行数据分析,减少跨越网络所引起的延迟。企业逐渐认识到必须在数据驻留的位置进行分析,分布这类计算能力,以便为分析工具提供实时响应将带来的挑战。考虑到数据速度和数据量,移动数据进行处理是不现实的,相反,计算和分析工具可能会移到数据附近。而且,云计算模式对大数据的成功至关重要。云模型在从大数据中提取商业价值的同时也能为企业提供一种灵活的选择,以实现大数据分析所需的效率、可扩展性、数据便携性和经济性。6.1.2大数据的技术架构仅仅存储和提供数据还不够,必须以新的方式合成、分析和关联数据,才能提供商业价值。部分大数据方法要求处理未经建模的数据,因此,可以对毫不相干的数据源进行不同类型数据的比较和模式匹配。这使得大数据分析能以新视角挖掘企业传统数据,并带来传统上
未曾分析过的数据洞察力。基于上述考虑构建的适合大数据的4层堆栈
式技术架构(见图)。图6-24层堆栈式大数据技术架构6.1.2大数据的技术架构(1)基础层:第一层作为整个大数据技术架构基础的最底层,也是基础层。要实现大数据规模的应用,企业需要一个高度自动化的、可横向扩展的存储和计算平台。这个基础设施需要从以前的存储孤岛发展为具有共享能力的高容量存储池。容量、性能和吞吐量必须可以线性扩展。云模型鼓励访问数据并提供弹性资源池来应对大规模问题,解决了如何存储大量数据,以及如何积聚所需的计算资源来操作数据的问题。在云中,数据跨多个节点调配和分布,使得数据更接近需要它的用户,从而缩短响应时间和提高生产率。6.1.2大数据的技术架构(2)管理层:要支持在多源数据上做深层次的分析,大数据技术架构中需要一个管理平台,使结构化和非结构化数据管理融为一体,具备实时传送和查询、计算功能。本层既包括数据的存储和管理,也涉及数据的计算。并行化和分布式是大数据管理平台所必须考虑的要素。(3)分析层:大数据应用需要大数据分析。分析层提供基于统计学的数据挖掘和机器学习算法,用于分析和解释数据集,帮助企业获得对数据价值深入的领悟。可扩展性强、使用灵活的大数据分析平台更可成为数据科学家的利器,起到事半功倍的效果。6.1.2大数据的技术架构(4)应用层:大数据的价值体现在帮助企业进行决策和为终端用户提供服务的应用。不同的新型商业需求驱动了大数据的应用。另一方面,大数据应用为企业提供的竞争优势使得企业更加重视大数据的价值。新型大数据应用对大数据技术不断提出新的要求,大数据技术也因此在不断地发展变化中日趋成熟。Hadoop数据处理基础6.1.36.1.3Hadoop数据处理基础在传统的数据存储、处理平台中,需要将数据从CRM、ERP等系统中,通过ELT(Extract/Load/Transform,抽取/加载/转换)工具提取出来,并转换为容易使用的形式,再导入像数据仓库和RDBMS等专用于分析的数据库中。这样的工作通常会按照计划,以每天或者每周这样的周期来进行。然后,为了让经营策划等部门中的商务分析师能够通过数据仓库用其中经正则化处理的数据输出固定格式的报表,并让管理层能够对业绩进行管理和对目标完成情况进行查询,就需要提供一个“管理指标板”,将多张数据表和图表整合显示在一个画面上。6.1.3Hadoop数据处理基础当管理的数据超过一定规模时,要完成这一系列工作,除了数据仓库之外,一般还需要使用如SAP的BusinessObjects、IBM的Cognos、Oracle的OracleBI等商业智能工具。用这些现有的平台很难处理具备3V特征的大数据,即便能够处理,在性能方面也很难期望能有良好的表现。首先,随着数据量的增加,数据仓库所带来的负荷也会越来越大,数据装载的时间和查询的性能都会恶化。其次,企业目前所管理的数据都是如CRM、ERP、财务系统等产生的客户数据、销售数据等结构化数据,而现有的平台在设计时并没有考虑到由社交媒体、传感器网络等产生的非结构化数据。6.1.3Hadoop数据处理基础因此,对这些时时刻刻都在产生的非结构化数据进行实时分析,并从中获取有意义的观点,是十分困难的。由此可见,为了应对大数据时代,需要从根本上重新考虑用于数据存储和处理的平台。6.1.3Hadoop数据处理基础1.Hadoop的由来Hadoop是一个能够与当前商用硬件兼容,用于存储与分析海量数据的,对大规模数据进行分布式处理的一种开源软件技术(框架)。特别是处理大数据时代的非结构化数据时,Hadoop在性能和成本方面都具有优势,而且通过横向扩展进行扩容也相对容易,因此备受关注。Hadoop是最受欢迎的在因特网上对搜索关键字进行内容分类的工具,但它也可以解决许多要求极大伸缩性的问题。事实上,它被公认为当代大数据解决方案的工业平台。Hadoop可以作为ETL引擎与分析引擎来处理大量的结构化、半结构化与非结构化数据。从分析的角度来看,Hadoop实现了MapReduce处理框架,图6-3描述了Hadoop的某些特征。6.1.3Hadoop数据处理基础图6-3Hadoop是一个多功能的
系统架构,它可以提供数据存
储与处理功能6.1.3Hadoop数据处理基础Hadoop的基础是美国Google公司于2004年发表的一篇关于大规模数据分布式处理的题为“MapReduce:大集群上的简单数据处理”的论文。Hadoop由ApacheSoftwareFoundation公司于2005年秋天作为Lucene的子项目Nutch的一部分正式引入。它受到最先由GoogleLab开发的Map/Reduce和GoogleFileSystem(GFS)的启发。2006年3月份,Map/Reduce和NutchDistributedFileSystem(NDFS)分别被纳入称为Hadoop的项目中。6.1.3Hadoop数据处理基础MapReduce指的是一种分布式处理的方法,而Hadoop则是将MapReduce通过开源方式进行实现的框架(Framework)的名称。造成这个局面的原因在于,Google在论文中公开的仅限于处理方法,而并没有公开程序本身。也就是说,提到MapReduce,指的只是一种处理方法,而对其实现的形式并非只有Hadoop一种。反过来说,提到Hadoop,则指的是一种基于Apache授权协议,以开源形式发布的软件程序。Hadoop原本是由三大部分组成的,即用于分布式存储大容量文件的HDFS(HadoopDistributedFileSystem)分布式文件系统,用于对大量数据进行高效分布式处理的HadoopMapReduce框架,以及超大型数据表HBase。这些部分与Google的基础技术相对应(见图6-4)。6.1.3Hadoop数据处理基础图6-4Google与开源基础技术的对应关系6.1.3Hadoop数据处理基础从数据处理的角度来看,HadoopMapReduce是其中最重要的部分。HadoopMapReduce并非用于配备高性能CPU和磁盘的计算机,而是一种工作在由多台通用型计算机组成的集群上的,对大规模数据进行分布式处理的框架。在Hadoop中,是将应用程序细分为在集群中任意节点上都可执行的成百上千个工作负载,并分配给多个节点来执行。然后,通过对各节点瞬间返回的信息进行重组,得出最终的回答。虽然存在其他功能类似的程序,但Hadoop依靠其处理的高速性脱颖而出。6.1.3Hadoop数据处理基础对Hadoop的运用,最早是雅虎、脸书、推特、AOL、Netflix等网络公司先开始试水的。然而现在,其应用领域已经突破了行业的界限,如摩根大通、美国银行、VISA等在内的金融公司,以及诺基亚、三星、GE等制造业公司,沃尔玛、迪士尼等零售业公司,甚至是中国移动等通信业公司。与此同时,最早由HDFS、HadoopMapReduce、HBase这三个组件所组成的软件架构,现在也衍生出了多个子项目,其范围也随之逐步扩大。6.1.3Hadoop数据处理基础2.Hadoop的优势Hadoop的一大优势是,过去由于成本、处理时间的限制而不得不放弃的对大量非结构化数据的处理,现在则成为可能。也就是说,由于Hadoop集群的规模可以很容易地扩展到PB甚至是EB级别,因此,企业里的数据分析师和市场营销人员过去只能依赖抽样数据来进行分析,而现在则可以将分析对象扩展到全部数据的范围了。而且,由于处理速度比过去有了飞跃性的提升,现在我们可以进行若干次重复的分析,也可以用不同的查询来进行测试,从而有可能获得过去无法获得的更有价值的信息。6.1.3Hadoop数据处理基础Hadoop是一个能够对大量数据进行分布式处理的软件框架。但是Hadoop是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop还是可伸缩的,能够处理PB级数据。此外,Hadoop依赖于社区服务器,因此它的成本比较低,任何人都可以使用。6.1.3Hadoop数据处理基础Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:(1)高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。(2)高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。(3)高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。(4)高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。6.1.3Hadoop数据处理基础Hadoop带有用Java语言编写的框架,因此运行在Linux平台上是非常理想的。Hadoop上的应用程序也可以使用其他语言编写,比如C++。6.1.3Hadoop数据处理基础3.Hadoop的发行版本Hadoop软件目前依然在不断引入先进的功能,处于持续开发的过程中。因此,如果想要享受其先进性所带来的新功能和性能提升等好处,在公司内部就需要具备相应的技术实力。对于拥有众多先进技术人员的一部分大型系统集成公司和惯于使用开源软件的互联网公司来说,应该可以满足这样的条件。相对地,对于一般企业来说,要运用Hadoop这样的开源软件,还存在比较高的门槛。企业对于软件的要求,不仅在于其高性能,还包括可靠性、稳定性、安全性等因素。然而,Hadoop是可以免费获取的软件,一般公司在搭建集群环境的时候,需要自行对上述因素做出担保,难度确实很大。6.1.3Hadoop数据处理基础于是,为了解决这个问题,Hadoop也推出了发行版本。所谓发行版本(Distribution),和同为开源软件的Linux的情况类似,是一种为改善开源社区所开发的软件的易用性而提供的一种软件包服务(见图6-5),软件包中通常包括安装工具,以及捆绑事先验证过的一些周边软件。最先开始提供Hadoop商用发行版的是Cloudera公司。如今,Cloudera已经成为名副其实的Hadoop商用发行版头牌厂商。6.1.3Hadoop数据处理基础图6-5Cloudera公司的Hadoop发行版6.1.3Hadoop数据处理基础4.Hadoop与NoSQL作为支撑大数据的基础技术,能和Hadoop一样受到越来越多关注的,就是NoSQL数据库了。在大数据处理的基础平台中,需要由Hadoop和NoSQL数据库来担任核心角色。Hadoop已经催生了多个子项目,其中包括基于Hadoop的数据仓库Hive和数据挖掘库Mahout等,通过运用这些工具,仅仅在Hadoop的环境中就可以完成数据分析的所有工作。6.1.3Hadoop数据处理基础然而,对于大多数企业来说,要抛弃已经习惯的现有平台,从零开始搭建一个新的平台来进行数据分析,显然是不现实的。因此,有些数据仓库厂商提出这样一种方案,用Hadoop将数据处理成现有数据仓库能够进行存储的形式(即用作前处理),在装载数据之后再使用传统的商业智能工具来进行分析。Hadoop和NoSQL数据库,是在现有关系型数据库和SQL等数据处理技术很难有效处理非结构化数据这一背景下,由谷歌、亚马逊、脸书等企业因自身迫切的需求而开发的。因此,作为一般企业不必非要推翻和替换现有的技术,在销售数据和客户数据等结构化数据的存储和处理上,只要使用传统的关系型数据库和数据仓库就可以了。6.1.3Hadoop数据处理基础由于Hadoop和NoSQL数据库是开源的,因此和商用软件相比,其软件授权费用十分低廉,但另一方面,想招募到精通这些技术的人才却可能需要付出很高的成本。处理工作量6.1.46.1.4处理工作量大数据的处理工作量被定义为一定时间内处理数据的性质与数量。处理工作量主要分为批处理和事务两种类型。(1)批处理型。也称为脱机处理,这种方式通常成批地处理数据,因而会导致较大的延迟。通常我们采用批处理完成大数据有序的读/写操作,这些读/写查询通常是成批的。这种情形下的查询一般涉及多种连接,非常复杂。联机分析处理(OLAP)系统通常采用批处理模式处理数据。商务智能与分析需要对大量的数据进行读操作,因而一般使用批处理模式,批量地进行读/写操作,以插入、选择、更新与删除数据。批处理型的工作量包括大量数据的成批读/写操作,并且会涉及多种连接,从而导致较大的延迟。6.1.4处理工作量(2)事务型。也称为在线处理,这种处理方式通过无延迟的交互式处理使得整个回应延迟很小。事务型处理一般适用于少量数据的随机读/写操作。联机事务处理(OLTP)系统与操作系统的写操作比较密集,是典型的事务型处理系统,尽管它们通常读操作与写操作混杂着进行,但写操作相对读操作还是密集许多的。事务型处理适用于仅含少量连接的随机读/写需求,企业的事务处理对实时性要求较高,因此一般采用回应延迟小、数据量小的事务型处理方式。相比于批处理型,事务型处理含有少量的连接操作,回应延迟也更小。批处理模式6.1.56.1.5批处理模式在批处理模式中,数据总是成批地脱机处理,响应时长从几分钟到几小时不等。在这种情况下,数据被处理前必须在磁盘上保存。批处理模式适用于庞大的数据集,无论这个数据集是单个的还是由几个数据集组合而成的,该模式可以本质上解决大数据数据量大和数据特性不同的问题。批处理是大数据处理的主要方式,相较于实时模式,它比较简单,易于建立,开销也比较小。像商务智能、预测性分析与规范性分析、ETL操作,一般都采用批处理模式。6.1.5批处理模式1.MapReduce批处理MapReduce是一种广泛用于实现批处理的架构,它采用“分治”的原则,把一个大的问题分成可以被分别解决的小问题的集合,拥有内部容错性与冗余,因而具有很高的可扩展性与可靠性。MapReduce结合了分布式数据处理与并行数据处理的原理,并且使用商业硬件集群并行处理庞大的数据集,是一个基于批处理模式的数据处理引擎。MapReduce不对数据的模式作要求,因此它可以用于处理无模式的数据集。在MapReduce中,一个庞大的数据集被分为多个较小的数据集,分别在独立的设备上并行处理,最后再把每个处理结果相结合得出最终结果。6.1.5批处理模式MapReduce是2000年年初谷歌的一项研究课题发表的,它不需要低延迟,因此一般仅支持批处理模式。MapReduce处理引擎与传统的数据处理模式的工作机制有些不同。在传统的数据处理模式中,数据由存储节点发送到处理节点后才能被处理,这种方式在数据集较小的时候表现良好,但是数据集较大时发送数据将导致更大的开销。而MapReduce是把数据处理算法发送到各个存储节点,数据在这些节点上被并行地处理,这种方式可以消除发送数据的时间开销。由于并行处理小规模数据速度更快,MapReduce不但可以节约网络带宽的开销,更能大量节约处理大规模数据的时间开销。6.1.5批处理模式2.Map和Reduce任务一次MapReduce处理引擎的运行被称为MapReduce作业,它由映射(Map)和归约(Reduce)两部分任务组成,这两部分任务又被分为多个阶段。其中映射任务被分为映射(map)、合并(combine)和分区(partition)三个阶段,合并阶段是可选的;归约任务被分为洗牌和排序(shuffleandsort)与归约(reduce)两个阶段。6.1.5批处理模式(1)映射。MapReduce的第一个阶段称为映射。映射阶段首先把大的数据文件分割成多个小数据文件。每个较小的数据文件的每条记录都被解析为一组键-值对,通常键表示其对应记录的序号,值则表示该记录的实际值。通常每个小数据文件由多组键-值对组成,这些键-值对将会作为输入由一个映射模块处理,映射阶段的逻辑由用户决定,其中一个映射模块仅处理一个小数据文件,且仅执行一次。每组键-值对会按用户自定义逻辑被映射为一组新的键-值对作为输出。输出的键可以与输入的键相同,可以是由输入值得出的一组字符串,还可以是用户自定义的有序对象。同样,输出的值也可与输入值相同,可以是由输入值得到的一组字符串,还可以是用户自定义的有序对象。6.1.5批处理模式在这些输出的键-值对中,可以存在多组键-值对的键相同的情况。另外要注意一点,在映射过程中会发生过滤与复用。过滤是指对于一个输入的键-值对,映射可能不会产生任何输出键-值对;而复用是指某组输入键-值对对应多组输出键-值对。映射阶段的数据变化如图6-6所示。图6-6数据在映射阶段的变化6.1.5批处理模式(2)合并。在MapReduce模型中,映射任务与归约任务分别在不同的节点上进行,而映射模块的输出需要被送到归约模块处理,这就要求把数据由映射任务节点传输到归约任务节点,这个过程往往会消耗大量的带宽,并直接导致处理延时。因此就要对大量的键-值对进行合并,以减少这些消耗。在大数据处理中,节点传输过程所花费的时间往往大于真正处理数据的时间。MapReduce模型提出了一个可选的合并模块。在映射模块把多组键-值对输入合并模块之前,已经将这些键-值对按键进行排序,将对应同一键的多条记录变为一个键对应一组值,合并模块则将每个键对应的值组进行合并,最终输出仅为一条键-值对记录。图6-7描述了数据由映射阶段到合并阶段的变化。6.1.5批处理模式图6-7数据在合并阶段的变化6.1.5批处理模式由此可见,合并模块本质上还是一种归约模块,另外,归约模块还可被作为用户自定义模块使用。最后值得一提的是,合并模块仅仅是一个可选的优化模块,在MapReduce模型中不是必备的。比如运用合并模块我们可以得出最大值或最小值,但无法得出所有数据的平均值,毕竟合并模块的数据仅仅是所有数据的一个子集。6.1.5批处理模式(3)分区。在这个阶段,当使用多个归约模块时,MapReduce模型就需要把映射模块或合并模块(如果该MapReduce引擎指明调用合并功能)的输出分配给各个归约模块。在此我们把分配到每个归约模块的数据叫做一个分区,也就是说,分区数与归约模块数是
相等的。图描述了数据在分区阶段
的变化。图6-8数据在分区阶段的变化6.1.5批处理模式尽管一个分区包含很多条记录,但是对应同一键的记录必须被分在同一个分区,在此基础上,MapReduce模型会尽量保证随机公平地把数据分配到各个归约模块当中。由于上述分区模块的特性,会导致分配到各个归约模块的数据量有差异,甚至分配给某个归约模块的数据量会远远超过其他的。不均等的工作量将造成各个归约模块工作结束时间不同,这样最后总共消耗的时间将会大于绝对均等的分配方式。要缓解这个问题,就只能依靠优化分区模块的逻辑来实现了。分区模块是映射任务的最后一个阶段,它的输出为记录对应归约模块的索引号。6.1.5批处理模式(4)洗牌和排序。洗牌包括由分区模块将数据传输到归约模块的整个过程,是归约任务的第一个阶段。由分区模块传输来的数据可能存在多条记录对应同一个键。这个模块将把对应同一个键的记录进行组合,形成一个唯一键对应一组值的键-值对列表。随后该模块对所有的键-值对进行排序。组合与排序的方式在此可由用户自定义。整个阶段
的数据变化如图所示。图6-9数据在洗牌和排序阶段的变化6.1.5批处理模式(5)归约。这是归约任务的最后一个阶段,该模块的逻辑由用户自定义,它可能对输入的记录进行进一步分析归纳,也可能对输入不作任何改变。在任何情形下,这个模块都在处理当条记录的同时将其他处理过的记录输出。归约模块输出的键-值对中,键可以与输入键相同,也可以是由输入值得到的字符串,或其他用户自定义的有序对象,值可以与输入值相同,也可以是由输入值得到的字符串,或其他用户自定义的有序对象。值得注意的是,映射模块输出的键-值对类型需要与归约或合并模块的输入键-值对类型相对应。另外,归约模块也会进行过滤与复用,每个归约模块输出的记录组成单独一个文件,也就是说被分配到每个归约模块的分区都将合并成一个文件,其数据变化如图6-10所示。6.1.5批处理模式图6-10数据在归约阶段的变化6.1.5批处理模式归约模块的数目是由用户定义的,当然,类似对数据记录进行过滤筛选,一个MapReduce作业可以不使用归约模块。6.1.5批处理模式3.MapReduce的简单实例图6-11展示了一个MapReduce作业的简单实例,其主要步骤如下:图6-11MapReduce实例6.1.5批处理模式(1)输入文件sales.txt被分为两个较小的数据文件:文件1,文件2。(2)文件1、文件2分别在节点A、节点B上,提取相关纪录并完成映射任务。该任务的输出为多组键-值对,键为产品名称,值为产品数量。(3)该作业的合并模块将对应同一产品的数量相加,得出每种产品的总量。(4)由于该作业仅使用一个归约模块,因而不需要对数据进行分区。(5)节点A、B的处理结果被送到节点C,在节点C上首先对这些记录进行洗牌和排序。(6)排序后的数据输出为一个产品名,对应一组产品数量。(7)最后该作业的归约模块的逻辑与其合并模块相同,将每种产品的数量相加,得到每种产品的总量。6.1.5批处理模式4.理解MapReduce算法与传统的编程模式不同,MapReduce编程遵循一套特定的模式。那么如何在该模式上设计算法呢?首先我们要对算法的设计原则进行探索。前文已经提到,MapReduce采用了“分治”的原则,在MapReduce中如何理解“分治”是极为重要的,“分治”常用的几种方式时:任务并行:任务并行指的是将一个任务分为多个子任务在不同节点上并行进行,通常并行的子任务采用不同的算法,每个子任务的输入数据可以相同也可不同,最后多个子任务的结果组成最终结果。数据并行:数据并行指的是将一个数据集分为多个子数据集在多个节点上并行地处理,数据并行的多个节点采用同一算法,最后多个子数据集的处理结果组成最终结果。6.1.5批处理模式对于大数据应用环境,某些操作需要在一个数据单元上重复多次,比如,当一个数据集规模过大时,通常需要将其分为较小的数据集在不同节点进行处理。MapReduce为了满足这种需求,采用分治中数据并行的方法,将大规模数据分成多个小数据块,每个数据块分别在不同的节点上进行映射处理,这些节点的映射函数逻辑都是相同的。现今大部分传统算法的编程原则是基于过程的,也就是说对数据的操作是有序的,后续的操作依赖于它之前的操作。而MapReduce将对数据的操作分为“映射”与“归约”两部分,它的映射任务与归约任务是相互独立的,甚至每个映射实例或归约实例之间都是相互独立的。6.1.5批处理模式在传统编程模型中,函数签名是没有限制的。而MapReduce编程模型中,映射函数与归约函数的函数签名必须为键-值对这一形式,只有这样才能实现映射函数与归约函数之间的通信。另外,映射函数的逻辑依赖于数据记录的解析方式,即依赖于数据集中逻辑数据单元的组织方式。例如,通常情况下文本文件中每一行代表一条记录,然而一条记录也可能由两行或多行文本组成。对于归约函数,基于它的输入为单个键对应一组值的记录,它的逻辑与映射函数的输出密切相关,尤其是与它最终输出什么键密切相关。值得一提的是,在某些应用场景下,例如文本提取,我们不需要使用归约函数。6.1.5批处理模式总结一下,在设计MapReduce算法时,我们主要考虑以下几点:尽可能使用简单的算法逻辑,这样才能采用同一函数逻辑处理某个数据集的不同部分,最终以某些方式将各部分的处理结果进行汇总。数据集可以被分布式地划分在集群中,如此才能保证映射函数并行地处理各个子数据集。理解数据集的数据结构以保证选取有用的记录。将算法逻辑分为映射部分与归约部分,如此才能实现映射函数不依赖于整个数据集,毕竟它处理的仅仅是该数据集的一部分。保证映射函数的输出是正确有效的,由于归约函数的输入为映射函数输出的一部分,只有这样才能保证整个算法的正确性。保证归约函数的输出是正确的,归约函数的输出则为整个MapReduce算法的输出。SCV原则6.1.66.1.6SCV原则大数据处理遵循SCⅤ分布式数据处理基本原则,该原则对大数据处理施加的基本限制对实时模式处理有巨大的影响。6.1.6SCV原则SCV原则是,设计一个分布式数据处理系统时仅需满是以下3项要求中的2项:(1)速度(Speed)。是指数据一旦生成后处理的快慢。通常实时模式的速度快于批处理模式,因此仅有实时模式会考虑该项性能,并且在此忽略获取数据的时间消耗,专注于实际数据处理的时间消耗,例如生成数据统计信息时间或算法的执行时间。(2)一致性(Consistency)。指处理结果的准确度与精度。如果处理结果的值接近于正确的值,并且二者有着相近的精度,则认为该大数据处理系统具有高一致性。高一致性系统通常会利用全部数据来保证其准确度与精度,而低一致性系统则采用采样技术,仅保证精度在一个可接受的范围,结果也相对不准确。6.1.6SCV原则(3)容量(Volume)。指系统能够处理的数据量。大数据环境下,数据量的高速增长导致大量的数据需要以分布式的方式进行处理。要处理规模如此大的数据,数据处理系统无法同时保证速度与一致性。如图所示,如果要保证数据处理系统的速度与
一致性,就不可能保证大容量,因为大量的
数据必然会减慢处理速度。图6-12SCV原则维恩图6.1.6SCV原则如果要保证高度一致地处理大容量数据,处理速度必然减慢。如果要高速处理大容量的数据,则无法保证系统的高一致性,毕竟处理大规模数据仅能依靠采样来保证更快的速度。实现一个分布式数据处理系统,选择SCV中的哪两项特性主要以该系统分析环境的具体需求为依据。在大数据环境中,可能需要最大限度地保证数据规模来进行深入分析,例如模式识别,也可能需要对数据进行批处理以求进一步研究。因此,选择容量还是速度或一致性值得慎重考虑。6.1.6SCV原则在数据处理中,实时处理需要保证数据不丢失,即对数据处理容量(V)需求大,因此大数据实时处理系统通常仅在速度(S)与一致性(C)中做权衡,实现S+V或C+V。实时大数据处理包括实时处理与近实时处理。数据一旦到达企业就需要被低延迟地处理。在实时模式下,数据刚到达就在内存中进行处理,处理完毕再写入磁盘供后续使用或存档。而批处理模式恰与之相反,该种模式下数据首先被写入磁盘,再被批量处理,从而将导致高延迟。实时处理模式6.1.76.1.7实时处理模式实时模式中,数据通常在写入磁盘之前在内存中进行处理,它的延迟由亚秒级到分钟级不等。实时模式侧重的是提高大数据处理的速度。在大数据处理中,实时处理由于其处理的数据既可能是连续(流式)的也可能是间歇(事件)的,因而也被称作流式处理或事件处理。这些流式数据或事件数据通常规模都比较小,但源源不断处理这样的数据得到的结果将构成庞大的数据集。另外,交互模式也是实时模式的一种,该模式主要是基于查询操作的。运营商务智能或分析通常在实时模式下进行。6.1.7实时处理模式实时模式分析大数据需要使用内存设备(IMDG或IMDB),数据到达内存时被即时处理,期间没有硬盘I/O延迟。实时处理可能包括一些简单的数据分析、复杂的算法执行以及当检测到某些度量发生变化时,对内存数据进行更新。为了增强实时分析的能力,实时处理的数据可以与之前批处理的数据结果或与磁盘上存储的非规范化数据相结合,磁盘上的数据均可传输到内存中,这样有助于实现更好的实时处理。除了处理新获取的数据,实时模式还可以处理大量查询请求以实现实时交互。在该种模式下,数据一旦被处理完毕,系统就将结果公布给感兴趣的用户,在此我们使用实时仪表板应用或Web应用将数据更新展示给用户。6.1.7实时处理模式根据某些系统的需求,实时模式下处理过的数据和原始数据将被写入磁盘供后续复杂的批量数据分析。图6-13展示了典型的实时模式处理流程:图6-13实时处理示例6.1.7实时处理模式(1)在数据传输引擎获取流式数据。(2)数据同时被传输到内存设备(a)与磁盘设备(b)。(3)数据处理引擎以实时模式处理存储在内存的数据。(4)处理结果被送到仪表板供操作分析。6.1.7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年中国内衣袋数据监测研究报告
- 2026事业单位工勤技能-广东-广东舞台技术工四级(中级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-广东-广东工程测量员二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-山西-山西防疫员五级(初级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-山西-山西收银员三级(高级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-山东-山东计算机操作员五级(初级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-宁夏-宁夏药剂员三级(高级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-天津-天津机械冷加工二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-四川-四川热力运行工一级(高级技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-吉林-吉林管道工四级(中级工)历年参考题库含答案详解3套试卷
- 2025年70岁老年人三力测试能力考试题库附答案
- 《中小学幼儿园安全指南》解读专题培训
- GB/T 45083-2024再生资源分拣中心建设和管理规范
- 平煤神马集团化学类笔试
- 农网工程资料样表
- 中国食物成分表2018年(标准版)第6版
- 高校学生事务管理1
- IP-Guard(威盾)-3.50.0918-安装、破解、配置教程
- 毕业论文写作指导-第5章毕业论文的写作
- 口内数字化印模
- 辉瑞制药质量手册
评论
0/150
提交评论