大数据导论PPT完整全套教学课件_第1页
大数据导论PPT完整全套教学课件_第2页
大数据导论PPT完整全套教学课件_第3页
大数据导论PPT完整全套教学课件_第4页
大数据导论PPT完整全套教学课件_第5页
已阅读5页,还剩553页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大数据导论

BIGDATATechnology第1章什么是大数据第2章大数据技术基础第3章数据采集与预处理第4章大数据存储与管理第5章大数据计算框架第6章数据挖掘第7章数据可视化第8章大数据与云计算第9章大数据与人工智能第1章什么是大数据

本章主要内容如下。(1)人类信息文明的发展。(2)大数据时代的来临。(3)大数据的主要特征。(4)大数据的社会价值。1.1人类信息文明的发展

总体来看,人类的信息文明起源于电子计算机技术的产生,尤其电子采集、电子存储、电子处理和电子显示整个电子信息处理全部流程的技术实现,标志着整个人类信息文明相关技术链条的成熟。随着整个信息链条节点的逐步壮大,人类信息文明终于被开启,并且极大地改变着人类生活的各个方面。人类信息文明是人类文明极大发展后由量变到质变的产物,同时更集中体现了人类整体文明的发展智慧,极大地丰富了人类的生产和生活方式,尤其提高了人类生产的效率和生活的质量。1.2大数据时代的来临

根据IBM公司前首席执行官郭士纳的观点,IT领域基本每隔15年都会迎来一次重大的技术变革(见表

1-1)。1980

年前后,个人微型计算机(Microcomputer)逐步普及,尤其是随着制造技术的完善带来的计算机销售价格的大幅降低,使计算机逐步进入企业和千家万户,大大提高了整个社会的生产力,同时丰富了家庭的生活方式,人类迎来了第一次信息化浪潮。Intel、AMD、IBM、Apple、Microsoft、联想等信息企业成为第一次信息浪潮的“弄潮儿”。信息技术的发展和不断的快速革新才造就了信息量的指数级增长,而信息量的不断堆积直接造就了大数据概念的出现。随着相关技术的不断成熟,人们终于迎来了大数据时代。信息化浪潮发生时间标志解决的问题企业界代表第一次1980年前后个人计算机信息处理Intel、AMD、IBM、Apple、Microsoft、联想等第二次1995年前后互联网信息传输Yahoo、Google、阿里巴巴、百度、腾讯等第三次2010年前后大数据信息挖掘Amazon、Google、IBM、VMWare、Cloudera等表1-1 3次信息化浪潮1.2.1信息技术的发展大数据时代的到来得益于信息科技的跨越式持久发展,而信息技术主要解决的是信息采集、信息存储、信息处理和信息显示4个核心问题。这4个核心问题的相关技术的不断成熟才真的支撑了整个大数据时代的全面到来,具体的技术发展表现如下。1.信息采集技术的不断完善和实时程度的不断提升大数据时代的到来离不开信息的大量采集。数据采集技术随着人类信息文明的发展已经有了质的飞跃(见图

1-1)。大数据技术主要依附于数字信息,就数字信息的采集技术而言,现在的数字信息采集方法已经十分完善,文字、图片、音频、视频等多维度的数字信息的采集手段和技术已经十分完备。数据的采集越来越实时化,随处可见实时音频直播和实时视频传播。可以说信息的采集环节已经基本实现实时化,而信息延迟主要在信息传输和信息处理阶段。图1-1信息采集的最新技术2.信息存储技术的不断提升计算机硬盘的快速发展促进了高安全性和高扩展性的商业领域信息存储乃至信息积累,而移动端闪存的快速发展则拉动了个体生活和社会公共事务方面的快速信息积累,两者相辅相成,共同提供了大数据时代的信息体量支撑。3.信息处理速度和处理能力的急速提升信息处理速度主要依靠计算机处理核心CPU的运算能力。CPU单核心处理能力的演变长期遵循摩尔定律(见图

1-2),即CPU的运算速度随着时间呈现指数增长趋势,所以在很长时间内,行业的发展主要集中在提高CPU单个核心的运算主频上。图1-2CPU单核心运算速度摩尔定律

而随着摩尔定律的渐渐失效,尤其是伴随着提高CPU单核心主频带来的商业成本的成倍增加,直接促使技术模式由简单的提高单核心主频向多核心多线程发展,即增加单个CPU的处理核心的数量的同时增加内存和CPU联络的线程数量和通信带宽,这样就可以保证多核心的同时运转。CPU的实际运算因核心数量的增加,同样实现了运算速度的十分可观的高速提升。4.信息显示技术的完备和日臻成熟信息的显示技术尤其是可视化技术近些年有了突破性进展,特别是随着图形像素技术的不断提升,图形显示越来越细腻,图形显示水平已经越来越趋于逼真和生动化(见图1-3)。图1-3多彩的数据可视化手段

图形显示技术的发展突破了简单文字显示和图表显示的技术界限,信息显示由一维、二维显示拓展到了三维乃至更多维度显示。这样的显示技术带来了整个大数据行业的腾飞:首先,带给人们更好的视觉和感官享受,让信息技术更好、更快地融入信息时代;其次,带来了新的连带技术的发展,诸如图形化数据库、图像识别及人工智能等技术的全面发展;最后,信息显示的发展和日臻完善,给整个信息技术带来了从量到质的跨越式发展,并且会继续更加深远地影响整个大数据时代的发展。1.2.2数据产生方式的变革大数据时代的到来依托于信息技术的不断革新和发展,但是仅靠信息技术的发展,还是不能完全促使大数据时代的最终来临。信息技术的发展只能为大数据时代的来临带来技术上的铺垫和积淀。大数据时代的来临必须依托于数据量的爆炸式增长和完善,而这在很大程度上取决于数据产生方式的变革。

可以说信息技术的发展促进了数据产生方式的变革,而反过来数据产生方式的革新也倒逼了信息技术的不断完善和发展,两者的发展是相辅相成和互相促进的。接下来就看看数据产生方式的变革历程(见图

1-4)。图1-4数据生产方式的变革1.传统大型商业领域业务运营数据产生方式的变化可以说传统大型商业领域业务运营数据的采集是整个数据行业的开始,因为银行、商铺、保险、证券、股票、零售等商业数据的隐私性和保密性要求,直接激发了人们对信息行业发展的需求。同时这些传统的商业部门也完成了整个大数据行业的早期数据积累,尤其是对数据量变方面的贡献。由于整个商业领域有大量的保密且极其重要的数据需要妥善保存和随时处理,同时伴随着商业全球化的扩张和整个世界经济在过去半个世纪尤其是第二次世界大战以后飞速的发展,都促使传统商业领域的数据量大幅增加。

商业数据由过去的波浪形增长方式变成了指数型的爆炸式增长方式。这种数据产生方式的变化直接倒逼了信息技术的发展,包括传统数据库技术、数据检索标准语言—SQL、大型商业数据中心、全球商业数据网络等新的数据技术的发展,而这些技术都为传统商业运营所产生的大量数据提供存储和处理。2.互联网时代数据产生方式的变化全球海底电缆连通世界五大洲,促使万维网全球数据连通;通信卫星的全球组网,再一次在移动端将整个人类联系在了一起,让每个人在智能手机的帮助下可以全球通达;与此同时,全球定位系统也实现向民用领域开放,目前以美国为首的GPS全球定位系统的民用服务已经到了十分便利和极其精确的程度。

海底电缆、移动通信和全球定位系统3个大的信息核心技术的发展,让人们终于迎来了互联网时代的大规模数据产生方式。这样的数据产生方式促成了数据量的量变。全球移动通信用户逐年增加,而每一位终端用户都是独立的鲜活个体,其任何一秒钟产生的共享数据量都是惊人的,同时是不断更新和活跃的,全球人类第一次真的汇聚在“地球村”。3.物联网(IOT)加快了数据产生方式的变革全球科技巨头都在积极布局物联网,而物联网的数据产生方式是完全实时的,这样的数据产生方式再次刷新了数据产生的量级,即便最简单的地下车库视频监控或商场的超市自动视频采集设备每天所产生的数据量都是天文数字,更别说全球联网实现的物联网全流程运作。

物联网旨在将实物世界与信息数据实现完全的对应和联络,物联网时代在很大程度上在于对世界存在的实物进行信息标记、调度、利用、处理、再利用,然后对整个链条的信息化实物进行掌控。而这样的信息模式会造成终端数据量的再次质的飞跃,同时更为重要的是造成实时数据流的爆炸式增长。这样的数据产生方式是前所未有的,也最终在互联网信息时代催生出大数据时代后再次把大数据时代的未来推到了前所未有的高度。

综上所述,大数据时代的发展实际经历了20世纪90年代到21世纪初的萌芽阶段。这个阶段与数据商业运营模式的产生阶段对应,主要的大数据研究方向为商务智能、数据仓库和数据建模,目的在于为大型传统商业提供业务咨询、开拓销售市场,以及维护客户关系。随着互联网技术的不断成熟,尤其是Web2.0时代的到来,大数据时代也发展到21世纪前10年的技术成熟期。

这个阶段也正好与互联网时代的大众数据产生阶段对应,主要的大数据研究方向是网络资源搜索、社交网络、大众媒体、政务大型对公平台等的平台大数据处理,目的在于更好地利用互联网系统产生的大量数据,更好地为人们的生产、生活和销售市场带来私人订制或者群体定制式的信息服务。2010年以后,大数据时代终于到了大规模应用期,这个阶段与物联网实时数据产生阶段对应,目的在于拓展大数据技术,实现人工智能。1.3大数据的主要特征1.3.1大数据的数据特征大数据数据层次的特征是最先被整个大数据行业所认识、所定义的,其中最为经典的是大数据的4V特征,即数据量巨大(HugeVolume)、数据类型繁多(Variety)、信息处理速度快(Velocity)、价值密度低(Value)。1.数据量巨大根据著名咨询机构IDC(InternetDataCenter)做出的预测,人类社会产生的数据一直都在以每年

50%的速度增长,基本每两年就增长一倍。这个预测被形象地称为“数据量摩尔定律”。这样的预测有望随大数据时代和人工智能时代的来临而打破。数据量的真实增长会是怎样的只有明天才有结论,但是数据量大却是大数据时代牢不可动的第一标签。2.数据类型繁多从数据产生方式的几次改变就可以体会到数据类型跟随时代的变革。大型商业运营阶段产生的数据类型多为传统的结构化数据。这些数据多为隐私性和安全性级别都十分高的商业、贸易、物流,以及财务、保险、股票等的传统支柱行业数据。而互联网时代产生的数据类型多为非结构化的电子商务交易数据、社交网络数据、图片定位数据,以及商业智能报表、监控录像、卫星遥感数据等非结构化和二维码像素数据。

互联网时代数据类型的改变也促进了新型数据库技术的大力发展,如NoSQL和NewSQL等数据库技术都得到了长足的发展,而这一切都是为了满足新数据类型的数据存储和高效利用的需要。IoT、人工智能时代的数据产生方式是多种多样的,其产生的数据类型也是多种多样的。3.信息处理速度快大量的数据、繁杂的数据类型,必然要求较快的信息处理速度。近年来计算机核心处理单元CPU的综合信息处理能力呈现指数级增长。实际上,CPU运算速度的增长分为两个阶段:第一个阶段,行业的关注重点是单个核心主频的不断提升,单核心的CPU速度经历了飞速的发展期;到了21世纪初,再提高单核心的主频已经出现了很大的工业困难,并且从成本的角度也不再符合整个市场的需求,因此行业领导者诸如Intel和AMD公司都把提高信息的处理速度的方式转变到多核心联动处理。4.价值密度低数据量虽然巨大,但是人们关注的其中有用的信息却不容易被发现,这是大数据时代数据的一个很大特点。数据量级巨大,人们需要的有价值的数据资料和数据决策却难以得到,这就需要专业人员根据各自行业的需求,通过特定的技术手段和研究方法,在海量的价值密度极低的数据海洋里找到合适的数据集,经过具体可行的数据分析和挖掘方法去得到可以利用的高密度价值的数据,促进低密度数据的高价值信息提取,从而实现大数据的科学合理利用。1.3.2大数据的技术特征大数据的这4个着眼于数据层次的特征是被整个大数据行业公认的,也是本书必须予以尊重的。显然4V特征很好地描述了整个大数据的数据层次权威特征,但是大数据的主要特征显然不仅仅表现在数据层次。从技术层次看,大数据的技术特征也是可圈可点的,而这些技术特征决定了我们不仅要着眼于大数据的数据层次,还要注重大数据行业技术的方方面面。这些技术特征基本可以总结为如下几点。1.大数据时代的技术是开放性的2.大数据时代的技术是平台化的3.大数据时代的技术是基于新型的实验训练性质的数学算法实现的4.大数据时代的技术最终期待实现人工智能管理和机器人代工1.4大数据的社会价值

大数据的社会价值主要体现在以下几个方面。1.大数据为各个行业带来了行业规划和行业决策的整体升级及精准化2.大数据为行业的整体发展注入更加公平和充沛的活力3.大数据从实际意义上促进了信息技术产业与工业企业的深度融合4.大数据极大地提升了企业自主创新能力,为新技术和新方法的出现提供高效信息咨询大数据导论

BIGDATATechnology第2章大数据技术基础

本章主要内容如下。(1)计算机操作系统。(2)编程语言。(3)数据库。(4)算法。(5)大数据系统。(6)大数据应用开发流程。2.1计算机操作系统

本章首先介绍计算机操作系统,帮助读者建立对大数据技术基础的整体印象。2.1.1什么是操作系统操作系统(OperatingSystem,OS)实际是一整套程序的组合体,这套程序的主要任务是管理计算机的所有活动和驱动计算机的整体硬件。计算机硬件包括输入单元(主要指键盘和鼠标等)、输出单元(显示器、音响等)、CPU和主存储器等主要部分。

操作系统可以统筹协调计算机硬件系统的工作,具体就是通过操作系统的工作使CPU可以进行逻辑与数值运算,主存储器能够加载应用数据与程序代码,硬盘可以顺利存入与读出信息,输入设备、输出设备可以根据需要实时写入、写出必要信息等。因此,操作系统实际是整个计算机硬件系统的“CEO”,担负着整个计算机硬件系统的管理、协调和运作的全部任务。1.系统呼叫接口2.程序管理3.内存管理4.文件系统管理5.硬件装置的驱动

2.1.2Linux操作系统Linux系统基本经历了3个发展阶段。1.单一个人维护阶段2.广大黑客志愿者加入阶段3.Linux核心的细分工、快速发展阶段

Linux的核心版本编号如图2-1所示,自3.0以后的版本都遵循统一的编码标准,并且基本上后续的版本都是在前序版本的基础上经过完善后再开发出来的。图2-1Linux核心版本编号注解

Linux的核心版本是LinuxKernel的版本,此外还有LinuxDistribution,两者的关系如图2-2所示。LinuxDistribution是专门为使用者量身打造的LinuxKernel+Software+Tools的可安全安装程序的综合发布版本,可帮助日常使用者在Linux系统下完成工作和其他相关任务。图2-2LinuxKernel与LinuxDistribution

目前LinuxDistribution主要分为两大系统:一种是使用RPM(Red-HatPackageManager)方式安装软件的系统,主要包括RHEL、SuSE、Fedora等;另一种是使用Debian的DPKG方式安装软件的系统,包括Ubuntu、Debian、B2D等。具体的主要版本如表2-1所示。机构RPM软件管理DPKG软件管理其他未分类商业公司RHEL(RedHat)SuSE(MicroFocus)Ubuntu(Canonical)

社区单位FedoraCentOSOpenSuSEDebianB2DGentoo表2-1 LinuxDistribution主要版本

目前Linux的主要应用场景如下。(1)企业环境的应用,主要包括网络服务器(目前最热门的应用)、关键任务的应用(金融数据库、大型企业网管环境)、学术机构的高效能运算任务等。(2)个人环境的使用,主要包括桌面计算机系统(实现和Windows系统一样的桌面操作系统)、手持系统(PDA、手机端系统如Android)、嵌入式系统(包括路由器、防火墙、IP分享器、交换机等)。(3)云端的运用,主要包括云程序(云端虚拟机资源)、云端设备等。2.2编程语言

语言可以使人们以更加规范、方便和快捷的方式进行交流。自然语言的作用显然是使人们更加高效地交流不同的思想和文化,编程语言则是为了实现人与计算机之间的交流而设计的语言。随着计算机技术的不断发展和完善,编程语言已经得到了长足的发展,并被广泛地应用于实际,已经成为人们与计算机进行深入“交流”的必需工具。2.2.1编程语言的发展与种类随着电气革命的深入,人们终于在

20

世纪40年代制造出了可以用于实际计算的晶体管计算机。这时候的计算机体积相当大,同时能耗巨大。伴随着晶体管计算机的诞生,人们也编写了第一种真正意义上的编程语言,这就是机器语言。对普通人来说,机器语言基本就是“天书”,因为它完全是用0和1的机器代码来写成的,然后被光电阅读机记录在穿孔卡片上,作为晶体管计算机的读入/读出数据,如图2-3所示。图2-3记录在穿孔卡片上的机器语言

机器语言太难理解和书写,且极易出错,汇编语言(AssemblyLanguage)就应运而生。实际上汇编语言是使用助记符(Mnemonics)来代替机器指令的操作码(0和1的指令集),用标号(Label)和地址符号(Symbol)分别来代替机器指令或者操作数值的存储地址,其大体的工作原理如图

2-4

所示。机器语言和汇编语言统称为低级语言(1946—1953年)。图2-4汇编语言大体的工作原理

与机器语言相比,汇编语言确实有了很大的进步,但是人们希望让编程语言与自然语言无缝对接,于是编程语言进入了高级语言(High-LevelProgrammingLanguage)时代(1954年至今)。相对于机器语言的机器码(MachineCode),高级语言基本以人们的日常语言为基础,基本上人们易于接受的文字就是构成高级语言的基本词汇。由于早期的计算机技术都主要由美国主导,因此高级语言基本都是以英语为蓝本的。因为英语是国际语言且简单易懂,程序基本上都是用英文实现的,所以想成为合格的编程人员,英语基础是必不可少的。接下来我们就大体看看整个高级语言的发展历程。

1954年,JohnBackus在纽约正式发布人类第一个高级编程语言FORTRAN(FORmulaTRANslator的几个字母的缩写拼合)Ⅰ,从字面翻译(公式翻译语言)就知道其主要是用来做数学数值计算尤其是科学计算的。FORTRANⅠ的功能简单,但它的开创性工作在社会上引起了极大的反响。1957年,第一个FORTRAN编译器在IBM704计算机上实现,并首次成功运行了FORTRAN程序。随后在1960年出现了第一个结构化语言Algol(AlgorithmicLanguage),它是算法语言的鼻祖,目的在于纯粹面向描述计算过程,其语法也是用严格的公式化的方法说明的。

同时,值得一提的是,Algol60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言成为一门独立的学科。1964年,美国达特茅斯学院的J.Kemeny和T.Kurtz开发了BASIC(BeginnersAllPurposeSymbolicIntroductionCode),该语言只有26个变量、17条语句,是初学编程人员的福音。

后来,编程语言发展到了使用编译器的阶段,出现了我们都熟知的C语言(Compilerlanguage)。这种语言的核心在于编译器,而编译器的作用就是把某种语言写的代码转变为机器语言,从而让计算机识别并运行。高级语言经过编译器时代的发展,过渡到面向对象时代(1995年开始),编程人员终于可以针对特殊的对象进行一对一的编程处理。业内称这种方法为面向对象程序设计(Object-OrientedProgramming,OOP)。

随着面向对象程序设计语言的不断成熟,IDE(IntegratedDevelopEnvironment)作为提供程序开发环境的应用程序开始得到发展。IDE一般包括代码编辑器、编译器、调试器和图形用户界面工具,也就是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套件。这样的集成开发环境大大方便了编程人员的开发工作。随着Java语言的全球风靡,与之相关的IDE也不断地发展起来。

下面我们总结一下目前市场上的所用编程语言。(1)Java的使用者最多。(2)C和C++在嵌入式开发方面的地位不可动摇。(3)C#迅速崛起。(4)其他程序如Ruby、JSP、JavaScript、PHP等也占据了一定的市场。(5)未来的编程语言是动态语言如Python的天下。2.2.2Python语言Python语言诞生于1991年(比Java还早,最早发行于1994年),并且一直是比较流行的十大计算机语言之一。Python可以应用在命令行窗口、图形用户界面(包括Web)、客户端和服务器端Web、大型网站后端、云服务(第三方管理服务器)、移动设备、嵌入式设备等许多的计算环境下。从一次性的脚本到几十万行的系统,Python都可以进行游刃有余的开发。

Python语言自身的优点和在实际应用方面的便捷性。首先介绍命令行终端窗口。命令行终端窗口就是我们所熟知的shell程序,它是操作系统内置的可直接由系统核心提供命令运行并显示结果的编程语言。Windows下的shell即是我们称为CMD的命令行终端,其运行后缀为.bat的BATCH格式文件。Linux和其他的UNIX操作系统(包括macOSX等)有很多的shell程序,其中,最为人们所熟知的便是bash(或其简写sh)程序语言。shell一般是程序人员接触的第一种程序语言,其百行之后的扩展性很差,同时运行速度一般,如下就是一段shell程序。

然后,我们再来看看C和C++。它们都是底层语言,应用在十分重视程序运行效率和做硬件嵌入式开发的场景时具有很好的效果,但是人们很难学习,并且有许多细微的地方需要做缜密的处理,稍微不小心就会发生程序全盘崩溃的情况。Java语言虽然解决了很多C和C++的问题,但是代码实在繁杂,让人无所适从。

静态语言之所以为静态,是因为其中的变量类型是整个程序流程都不能改变的,也就是整数就是整数(int),字符串就是字符串(string)。因此,静态语言要求编程人员去声明每个变量的类型及其内存使用额度、使用方法,当然这样的结果就是计算机很容易把程序编译为更底层的机器代码,可以十分高效地管理内存和变量的应用等。Perl可以说是一门十分经典的动态语言,虽然其有很不错的扩展库,却不能改变其语法繁杂的现实。

Ruby是一门新兴的动态语言,其参照了Perl的很多技术特点,并且因为Web开发框架Rubyonrails而一炮走红。PHP主要在Web开发领域非常流行,因为其可以轻松地结合HTML和代码。

Python

是高级的动态语言,同时程序的代码可读性很强,方便编程人员移植和修改。事实上,Python的程序包可以说是目前所有编程语言中最为强大和更新速度最快的。从语言本身角度来说,Python编写简单,应用广泛,是初学编程人员的最佳选择之一。2.3数据库

数据库技术是信息技术的核心技术。显然大数据时代仍然要依赖数据库技术提供可靠、安全、高效的数据存储和查询服务,这样才能支持整个大数据行业的可持续发展。2.3.1SQL数据库的发展与成熟1970年,IBM公司的研究员E.F.Codd博士提出的关系模型的概念奠定了整个关系模型的理论基础。1970年,关系模型建立后,IBM公司在SanJose实验室投入了大量的人力、物力研究相关的可实施的关系型数据库。这就是著名的SystemR数据库项目,其初始目的在于论证关系型数据库的可行性。

SQL最早在1986年由ANSI(AmericanNationalStandardsInstitution)认定为关系型数据库语言的美国标准,同年即公布了标准的SQL文本。时至今日,ANSI已经公布了有关SQL的3个版本。基本可以说SQL数据库已经发展到了品类齐全、种类繁多的产品格局,既有符合商业引用标准的大型数据库系统,也有别具风格、完全开源的个人版本,并且随着数据库技术的不断发展,SQL数据库还会不断地成熟和完善,为大数据技术的发展提供强有力的支撑。2.3.2NoSQL数据库及其特点NoSQL是一种不同于SQL的数据库管理系统设计方式,其采用了不同于传统关系模式的数据组织模型,这些组织模型主要包括键-值、列族、文档等非关系模型。NoSQL数据库具有以下3个方面的特点。1.优秀的可扩展性SQL数据库严格遵守ACID设计原则,所以一般很难实现硬件存储设备的“横向扩展”(多集群机器联动服务)。2.方便多用的数据类型承载能力相对于SQL数据库只能处理“表数据”,即严格结构化的数据类型,NoSQL数据库在设计之初就放弃了传统数据库的关系数据模型,旨在满足大数据的处理需求,采用诸如键-值、列族、文件集等多样的新型数据模型,并且对图形数据的兼容性也日渐提升。3.NoSQL数据服务与云计算可以紧密融合云计算和云服务是当前时代的信息服务高地,其很多特点如水平扩展、多用户并行处理、远程登录操控等都可以与NoSQL数据库实现无缝对接,使NoSQL数据库在大数据时代更加如鱼得水。2.3.3NoSQL数据库的分类近年来,NoSQL数据库技术发展势头迅猛,虽然其种类繁多,但是归结起来,典型的NoSQL数据库通常包括键-值数据库、列族数据库、文档数据库和图形数据库4种类型(见图2-5和图2-6)。图2-5键-值和列族数据库图2-6文档和图形数据库1.键-值数据库正如图2-5(a)显示的图例一样,键-值数据库(Key-ValueDataBase)主要包括负责索引的Key和对应的储存实质内容的Value两个部分,其具有理论上无限的横向扩展性,但是其牺牲的是SQL数据库中的条件查询功能,只能针对具体的Key进行单一查询。表2-2详细描述了键-值数据库的相关特征。键-值数据库细节相关说明行业产品Redis、Riak、SimpleDB、Chordliss、Scalaris、Memcached数据模型Key-Value数据对行业引用内存缓冲,诸如会话、配置文件、参数、购物车等商业实例百度云(Redis)、Twitter(RedisandMemcached)、YouTube(Memcached)等优点横向扩展优秀、存取针对性好、利于大批量并行处理不足条件化查询基本不能满足表2-2 键-值数据库的相关特征2.列族数据库列族数据库(Column-FamilyDataBase)从行的性质上看与键-值数据库类似,只是列族数据库每个行键索引指向的是一个列族,而每行的列族数量可以由数据库管理者自己制定和规划,这样相对键-值数据库每个行键只能针对一个数据属性的不足得到了大大的改善。同时,列族数据库支持不同类型的数据访问模式,同一个列族可以被同时一起放入计算机内存之中,这样虽然消耗了内存存储,却带来了更好的数据响应性能。表2-3具体描述了列族数据库的相关特征。列族数据库细节相关说明行业产品BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS等数据模型Key-ColumFamily数据模块行业引用大数据分布式数据存储和管理商业实例Ebay(Cassandra)、NASA(Cassandra)、Facebook(HBase)等优点查找迅速、扩展性强且数据存储属性充分、利于分布式部署不足功能一般表2-3 列族数据库的相关特征3.文档数据库如图2-6(a)所示,文档数据库(DocumentDataBase)的数据模式实际是一个键-值对应一个文件,而文档是数据库的最小单位。虽然每一种文档数据库的部署都有所不同,但是基本都是文档以某种标准化格式封装并对数据进行加密,然后运用XML、YAML、JSON、BSON等多种格式进行数据解码,或者也可以使用PDF、Office等二进制形式文档。表2-4具体描述了其相关特征。文档数据库细节相关说明行业产品CouchDB、MongoDB、Terrastore、ThruDB、RavenDB、SISODB、RaptorDB、CloudKit、Perservere、Jackrabbit等数据模型Key-Document数据模块行业引用存储、应用、管理面向文档的数据或者类似于文档的半结构化、非结构化文档数据商业实例百度云数据库(MongoDB)、NBCNews(RabenDB)等优点方便处理非结构化文档数据,兼容扩展性良好不足查询困难表2-4 文档数据库的相关特征4.图形数据库图形数据库(GraphDataBase)以图形为数据库基础,每一个图形代表一个数据库节点。同时,其组织模式以图论为基础,将一个图简化为一个数学概念,其表示了一个对象结合,而不同图形对象直接的关系则用关系键-值对来标明。图形数据库的数据模型设计理念以图形为主题,可以高效地存储不同图形节点之间的关系,专门用于处理具有高度相互关联关系的数据,并使其以图形节点形式展现,十分适用于社交网络、模式识别、依赖分析、推荐系统及路径寻找等应用场景。表

2-5

具体描述了图形数据库的相关特征。图形数据库细节相关说明行业产品Neo4J、OrientDB、InfoGrid、InfiniteGraph、GraphDB等数据模型GraphNode-relation数据模块行业引用社交网络、推荐系统等相互关联度大行业商业实例Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)等优点清晰、高效地展示具体实体事务间的相互关系和联络情况不足图形数据占用大量存储空间表2-5 图形数据库的相关特征2.3.4NewSQL数据库近年来,人们越来越意识到NoSQL数据库的技术不足,尤其难以满足海量数据查询和数据挖掘方面的需求,于是NewSQL数据库的概念开始逐步升温。NewSQL综合了NoSQL和SQL数据库的技术优势,它既能像NoSQL数据库一样具有对海量数据足够优秀的扩展和并发处理能力,同时也具备SQL数据库对ACID和结构化快速高效查询的特点。

目前市场上具有代表性的NewSQL数据库主要包括Spanner、Clustrix、GenieDB、ScalArc、Schooner、VoltDB、RethinkDB、Akiban、CodeFutures、ScaleBase、Translattice、NimbusDB、Drizzle、Tokutek、JustOneDB等。但是,在严格意义上符合NewSQL数据库全部标准的理想NewSQL数据库或者标准的NewSQL数据库目前还没有出现。2.4算法

算法(Algorithm)是数学处理的灵魂和核心,也是实现现实事务数学化、公式化和逻辑化处理的桥梁,可以说算法是信息时代连通现实社会和虚拟世界的立交桥。本节我们重点关注传统算法和大数据时代算法的区别。2.4.1什么是算法算法是解决方案的准确而完整的描述,实质是一系列解决问题的高度符合逻辑性和可执行性的指令集合,其代表着用系统的方法描述解决问题的策略与机制。其具体包括把符合算法要求的数据按照一定的数据结构方式进行准备、完整输入并存储,经过综合算法指令的步步实现后,在确认每个步骤合理完成后进行最后的结果输出和展现。

只要算法结果是正常输出的,判断算法好坏的最重要指标就是结果的优劣了,然后就是算法的可行性、执行效率和对计算机的硬件要求。算法的可行性主要指算法指令集的运行流畅性和对数据集的包容性;执行效率最主要的是程序的执行速度和纠错能力;而对计算机硬件的要求则主要考虑经济性和现实性。一个算法的评价标准主要从这3个方面来判定。

本书关注大数据,因此我们关注的算法也重点针对数据方面,即数据算法。传统的数据算法和现在大数据时代的数据算法是有很大区别的,数据的数量、类型、采集方式、存储方式、应用场景等各个方面都出现了很大的变化。随着时代的发展,数据算法的目的和方式都在深刻地变化着。如图

2-7

所示,我们把传统的数据算法叫作数据分析,数据分析的目的在于对已有的数据进行描述性分析,重点在于发现数据隐含的规律,进行商业分析和处理;我们把大数据时代的数据算法称为数据科学,可将其应用于数据未来预测。表2-6具体说明了两者的区别。图2-7数据分析与数据科学项目数据分析(传统的数据算法)数据科学(大数据时代的数据算法)算法目的对历史数据的总结分析对未来趋势的预估和预判实质工作数据分析和数据优化数据发现、挖掘、规整和可视化实现结果分析报表和数据仪表盘数据产品典型工具Hive、Impala、SparkSQL、HBase等MLlib、Mahout等典型技术ETL和多元统计分析预测分析技术需求数据工程师、SQL工程师、数据编程统计分析、机器学习、数据编程表2-6 传统的数据算法与大数据时代的数据算法的区别2.4.2大数据时代的算法数据科学在于深入挖掘隐藏在数据深层次的信息并以此为基础创造数据产品并提供商业预测和推断。表2-6已经对数据科学做了比较系统和全面的整体介绍,而本小节重点在于数据科学的数据算法,显然目前最成熟、最流行的便是机器学习(MachineLearning)。机器学习是在不设定任何前提规则的情况下由计算机完成学习,进而进行相应判断工作的科学。抽象地讲,就是让计算机模拟人类的思维学习方式去对海量的数据和逻辑关系进行学习研究,通过计算机的算法给出结论和判断。

机器学习作为算法理论,是一门涉及多领域的交叉学科,包括概率论、数理统计、神经网络、线性代数、数值分析、计算机算法实现等多方面的知识,包含数学、计算机、哲学、人体学等的多种基础科学。其最终目的在于专门研究如何用计算机模拟或者说实现人类的学习行为,以通过计算机的模拟学习获取新的知识和技能,并通过学习得来的“智慧”和理论来指导实现数据的分析和应用,尤其是对未来的预测和判断。

机器学习具有显著的技术特征和计算特色,主要包括如下技术优势。(1)由于机器学习全部基于数据,排除了人类主观意识的干扰和经验主义,其学习或者说预测结果更加可信,并且随着数据量的增加带来更高的精确性。(2)机器学习可以由计算机实现自动的数据预测和一系列的数据推荐产品级应用。(3)机器学习算法理论上可以在毫秒级别实现并给出学习结果,这就允许我们进行事务的实时分析处理和运用,相比人类管理的层层审批制效率提高很多。(4)机器学习算法扩展性良好,理论上可以处理所有可用数据。

下面我们简单总结机器学习的不足。(1)机器学习的算法需要有些提前的预判(打标签),并且需要尽量完善、充实数据。(2)机器学习一般不能得到100%正确的预测结果,具有一定的风险。表

2-7

详细介绍了目前较流行的机器学习算法,具体的算法内容我们会在后续的章节中详述。机器学习分类常用算法监督类学习分类算法(自然贝叶斯、决策树、随机森林等)回归类算法(线性回归、逻辑回归、支持向量机等)无监督学习聚类算法(距离聚类、快速聚类等)抽维算法(主因子、典型相关等)自动推荐系统协同过滤特征提取特征抽取和事务转换最优化处理最优化算法(诸如最短距离等)表2-7 目前较流行的机器学习算法2.5大数据系统2.5.1Hadoop平台Hadoop平台是Apache的开源的、理论上可无限扩展的分布式计算平台,其设计的初始目的是让大型计算机集群对海量的数据进行常规编程计算实现。利用Hadoop大数据平台,应用人员可以让少到一台、多到几千台计算机一起提供本地独立存储和运算的计算框架。相对于传统单独、高效同时也昂贵的存储和计算中心,Hadoop平台旨在应用廉价的商用计算机集群,这样显然会有几台计算机存在不可靠性。而Hadoop集群框架在设计之初即考虑到会出现这样的安全隐患,只有在出现大规模的集群崩溃的情况下,开发应用人员才需要做出人工处理。1.Hadoop平台的主要模块(1)HadoopCommonHadoopCommon是平台统一的集成,用来支持其他模块的共同工作,它就好比是计算机系统的主板,用来连通其他组件。(2)HDFSHDFS全称为HadoopDistributedFileSystem,它是平台提供的分布式集群存储框架,支持平台对海量数据进行集群存储,并且保证数据的可靠、稳定和安全。(3)YARNYARN即YetAnotherResourceNegotiator,是Hadoop平台的集群资源管理和工作流程控制框架。(4)MapReduceMapReduce是平台YARN框架管理下的分布式集群高效计算框架。2.Hadoop平台的基本特征(1)Hadoop平台的三大组成①可靠、高效的分布式大数据存储框架—HDFS。②用于并行集群处理的计算框架—MapReduce、Crunch、Cascading、Hive、Tez、Impala、pig、Mahout等。③平台集群资源管理器—YARN和Slider。(2)Hadoop平台在经济、商业和技术领域的适应性和优势①经济性。②商业性。③技术性。(3)Hadoop平台的典型技术特点①商业实用性强。②纠错能力强。③优秀的随时可扩展性。④简单实用。2.5.2Spark平台Hadoop平台在处理海量大数据方面的技术优势使其在整个大数据时代得到了飞速的发展,也得到了顶端互联网科技巨头如Google、Facebook、百度、阿里巴巴等企业极大的青睐和商业上的成功运用。但是,Hadoop平台下的MR(MapReduce)分布式计算框架存在致命的缺陷,因为MR只能进行一次性编程计算处理,即MR只能从HDFS中一次取出数据计算,然后再存入HDFS,所以MR就很难进行海量数据的迭代运算。

如果有几十次的迭代过程,那么编程人员必须进行相同数量的人工编程,同时计算机集群也要进行同样次数的数据存入和提取,这样是十分低效的。为了解决Hadoop平台MR分布式计算框架的这些问题,人们开始寻找新的分布式计算框架,以保证新的技术框架可以进行很好的迭代处理,同时最好可以省去大数据平台不断读出和写入分布式数据库的集群工作量。这个时候Spark分布式计算平台就应运而生了,当然Spark平台的出现不仅是大数据分布式运算的实际技术需求,也是信息计算不断发展完善才最终实现的。图2-8给出了计算机的运算技术趋势。图2-8计算机的运算技术趋势

显然由图2-8可知,只有当高速设备的价格便宜到一定程度后才能被充分发掘和利用。由图2-9可知,计算机内存运算的速度和效率是比较高的。图2-9计算机内存运算的速度和效率对比

Spark最初是2009年由加州大学伯克利分校的RAD实验室开启的研究项目,此后RAD实验室更名为AMPLab,此项目组在利用开源平台HadoopMapReduce分布式运算框架后意识到了其在迭代运算方面的不足,开始计划通过内存计算的方式改进MR的相关运算不足的缺陷,于是在2011年,AMPLab发展了更高运算部分的Shark和SparkStreaming,这些组件被称为BerkeleyDataAnalyticsStack(BDAS)。这些都是Spark正式版本的主要组成部分,Spark作为开源项目最开始版本,完成于2010年3月,此后于2013年6月转为Apache软件基金会旗下的顶级开源项目。由于Hadoop也是Apache软件基金会旗下的顶级大数据平台项目,这样无疑加速了

Spark

的发展,其具体发行版本如图

2-10所示。图2-10Spark的发行版本项目MapReduceSpark实用性不容易编程、不实用有良好的API接口,方便对接编程,很实用特点初始实现分布式计算实现分布式内存计算迭代运算几乎不能实现迭代运算,每次MR都要进行数据的重新读入和加载可以将迭代数据集直接加载到内存处理,实现内存环境下的直接迭代运算容错性由HDFS分布式存储框架实现内存数据集直接实现执行模型只能进行批处理批处理、迭代处理、流处理均可支持的编程语言类型主要是JavaJava、Scala、Python、R等表2-8 Spark与MapReduce的区别2.6大数据的数据类型

大数据的主要数据类型包括结构化、半结构化和非结构化数据(见图

2-11),非结构化数据越来越成为数据的主要部分。IDC的调查报告显示:企业中80%的数据都是非结构化数据,这些数据每年约增长60%。大数据就是互联网发展到现今阶段的一种表象或特征而已,没有必要神话它或对它保持敬畏之心,在以云计算为代表的技术创新大幕的衬托下,这些原本看起来很难收集和使用的数据开始很容易地被利用起来。在各行各业的不断创新下,大数据会逐步为人类创造更多的价值。图2-11大数据的主要数据类型2.6.1结构化数据简单来说,结构化数据就是传统关系型数据库数据,也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。结构化数据标记是一种能让网站以更好的姿态展示在搜索结果中的方式,搜索引擎都支持标准的结构化数据标记。结构化数据可以通过固有键值获取相应信息,并且数据的格式严格固定,如RDBMSdata。最常见的结构化就是模式化,结构化数据也就是模式化数据。

大多数传统数据技术应用主要基于结构化数据,如银行业数据、保险业数据、政府企事业单位数据等主要依托结构化数据。结构化数据也是传统行业依托大数据技术提高综合竞争力和创新能力的主要数据类型。2.6.2半结构化数据半结构化数据和普通纯文本相比具有一定的结构性,但和具有严格理论模型的关系型数据库的数据相比更灵活。它是一种适用于数据库集成的数据模型,也就是说,适于描述包含在两个或多个数据库(这些数据库含有不同模式的相似数据)中的数据。它是一种标记服务的基础模型,用于在Web上共享信息。人们对半结构化数据模型感兴趣主要是它的灵活性。特别地,半结构化数据是“无模式”的。更准确地说,其数据是自描述的。它携带了关于其模式的信息,并且这样的模式可以随时间在单一数据库内任意改变。这种灵活性可能使查询处理更加困难,但它给用户提供了显著的优势。

半结构化数据的结构模式具有下述特征。①数据结构自描述性。结构与数据相交融,在研究和应用中不需要区分“元数据”和“一般数据”(两者合二为一)。②数据结构描述的复杂性。结构难以纳入现有的各种描述框架,实际应用中不易进行清晰的理解与把握。③数据结构描述的动态性。数据变化通常会导致结构模式变化,整体上具有动态的结构模式。

常规的数据模型如E-R模型、关系模型和对象模型的特点恰恰与上述特征相反,因为这些常规数据模型是结构化数据模型。而相对于结构化数据,半结构化数据的构成更为复杂和不确定,从而也具有更高的灵活性,能够适应更为广泛的应用需求。其实,用半结构化的视角看待数据是非常合理的。没有模式的限定,数据可以自由地流入系统,还可以自由地更新,更便于客观地描述事物。在使用时模式才应该起作用,使用者若要获取数据就应当构建需要的模式来检索数据。由于不同的使用者构建不同的模式,数据将被最大化利用。这才是使用数据的最自然的方式。2.6.3非结构化数据非结构化数据是与结构化数据相对的,不适合用数据库二维表来表现,包括所有格式的办公文档、XML、HTML、各类报表、图片、音频、视频信息等。支持非结构化数据的数据库采用多值字段、子字段和变长字段机制进行数据项的创建和管理,被广泛应用于全文检索和各种多媒体信息处理领域。非结构化数据不可以通过键值获取相应信息。非结构化数据一般指无法结构化的数据,如图片、文件、超媒体等典型信息,在互联网上的信息内容形式中占据了很大比例。

随着“互联网+”战略的实施,越来越多的非结构化数据将不断产生。据预测,非结构化数据将占所有数据的

70%~80%,甚至更高。经过多年的发展,结构化数据分析和挖掘技术已经形成了相对比较成熟的技术体系。也正是由于非结构化数据中没有限定结构形式,表示灵活,蕴含了丰富的信息。因此,综合来看,在大数据分析和挖掘中,掌握非结构化数据处理技术是至关重要的。

目前,其问题在于语言表达的灵活性和多样性,具体的非结构化数据处理技术包括:①Web页面信息内容提取;②结构化处理(含文本的词汇切分、词性分析、歧义处理等);③语义处理(含实体提取、词汇相关度分析、句子相关度分析、篇章相关度分析、句法分析等);④文本建模(含向量空间模型、主题模型等);⑤隐私保护(含社交网络的连接型数据处理、位置轨迹型数据处理等)。这些技术所涉及的技术较广,在情感分类、客户语音挖掘、法律文书分析等许多领域被广泛地应用。2.7大数据应用的开发流程

本节主要介绍大数据应用的开发流程。典型的大数据应用开发流程如图2-12所示。图2-12典型的大数据应用开发流程1.提出商业需求并做出初步设想2.根据需求确定必需的数据集3.数据采集4.数据预处理5.数据分析和挖掘6.大数据产品可视化2.8数据科学算法的应用流程

大数据时代的数据算法是数据科学(DataScience)的算法,旨在通过海量的数据,经过科学的商业思维和新兴的大数据算法,对事物的未来发展和决策做科学有效的指导和预测,进而得到科学、高效的商业决策和合适、精准的市场预测与评估,为企业的科学发展和规划提供积极有效的大数据支撑。典型的数据科学算法应用流程如图2-13所示。1.科学假设和建模2.评测有效性3.根据评测结果提出改进意见4.交流项目进展图2-13典型的数据科学算法应用流程大数据导论

BIGDATATechnology第3章数据采集与预处理

本章主要内容如下。(1)大数据的来源。(2)数据的采集方法。(3)数据预处理流程。3.1大数据的来源1.信息管理系统企业内部使用的信息管理系统,包括办公自动化系统、业务管理系统等。信息管理系统主要通过用户输入和系统二次加工的方式产生数据,其产生的数据大多数为结构化数据,通常存储在数据库中。2.网络信息系统基于网络运行的信息系统即网络信息系统是大数据产生的重要方式,如电子商务系统、社交网络、社会媒体、搜索引擎等,都是常见的网络信息系统。网络信息系统产生的大数据多为半结构化或非结构化数据。在本质上,网络信息系统是信息管理系统的延伸,是专属于某个领域的应用,具备某个特定的目的。3.物联网系统物联网是新一代信息技术,其核心和基础仍然是互联网,是在互联网基础上延伸和扩展的网络,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,而其具体实现是通过传感技术获取外界的物理、化学、生物等数据信息。4.科学实验系统科学实验系统主要用于科学技术研究,可以由真实的实验产生数据,也可以通过模拟方式获取仿真数据。大数据的数据类型按来源可分为传统商业数据、互联网数据与物联网数据。3.1.1传统商业数据传统商业数据是来自于企业ERP系统、各种POS终端及网上支付系统等业务系统的数据,传统商业是主要的数据来源。3.1.2互联网数据这里的互联网数据是指网络空间交互过程中产生的大量数据,包括通信记录及

QQ、微信、微博等社交媒体产生的数据,其数据复杂且难以被利用。互联网数据具有大量化、多样化、快速化等特点。1.大量化在信息化时代背景下,网络空间数据增长迅猛,数据集合规模已实现了从

GB

级到PB级的飞跃,互联网数据则需要通过ZB表示。2.多样化互联网数据的类型多样化,包括结构化数据、半结构化数据和非结构化数据。3.快速化互联网数据一般以数据流形式快速产生,且具有动态变化的特征,其时效性要求用户必须准确掌握互联网数据流,以更好地利用这些数据。

互联网是大数据信息的主要来源,能够采集什么样的信息、采集到多少信息及哪些类型的信息,直接影响着大数据应用功能最终效果的发挥。信息数据采集需要考虑采集量、采集速度、采集范围和采集类型,信息数据采集速度可以达到秒级甚至还能更快;采集范围涉及微博、论坛、博客,新闻网、电商网站、分类网站等各种网页;采集类型包括文本、数据、URL、图片、视频、音频等。3.1.3物联网数据物联网指在计算机互联网的基础上,利用射频识别、传感器、红外感应器、无线数据通信等技术,构造一个覆盖世界上万事万物的TheInternetof

Things,也就是“实现物物相连的互联网络”。其内涵包含两个方面:一是物联网的核心和基础仍是互联网,是在互联网基础之上延伸和扩展的一种网络;二是其用户端延伸和扩展到了任何物品与物品之间。

物联网的定义:通过射频识别(RadioFrequencyIDentification,RFID)装置、传感器、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物品与互联网相连接,以进行信息交换和通信,从而实现智慧化识别、定位、跟踪、监控和管理的一种网络体系。物联网数据是除了人和服务器之外,在射频识别、物品、设备、传感器等节点产生的大量数据,包括射频识别装置、音频采集器、视频采集器、传感器、全球定位设备、办公设备、家用设备和生产设备等产生的数据。

物联网数据的主要特点如下。(1)物联网中的数据量更大。(2)物联网中的数据传输速率更高。(3)物联网中的数据更加多样化。(4)物联网对数据真实性的要求更高。3.2数据的采集方法

数据采集技术是数据科学的重要组成部分,已广泛应用于国民经济和国防建设的各个领域,并且随着科学技术的发展,尤其是计算机技术的发展和普及,数据采集技术具有更广泛的发展前景。大数据的采集技术为大数据处理的关键技术之一。3.2.1系统日志的采集方法很多互联网企业都有自己的海量数据采集工具,多用于系统日志采集,如Facebook公司的Scribe、Hadoop平台的Chukwa、Cloudera公司的Flume等。这些工具均采用分布式架构,能满足每秒数百兆的日志数据采集和传输需求。1.ScribeScribe是Facebook公司开源的日志收集系统,在Facebook公司内部已经得到大量的应用。Scribe可以从各种日志源上收集日志,存储到一个中央存储系统[其可以是网络文件系统(NetworkFileSystem,NFS)、分布式文件系统等],以便于进行集中的统计分析处理。Scribe为日志的“分布式收集,统一处理”提供了一个可扩展的、高容错的方案。Scribe架构如图3-1所示。图3-1Scribe架构(1)ScribeAgentScribeAgent实际上是一个ThriftClient,也是向Scribe发送数据的唯一方法。Scribe内部定义了一个Thrift接口,用户使用该接口将数据发送给不同的对象。ScribeAgent发送的每条数据记录包含一个种类(Category)和一个信息(Massage)。(2)ScribeScribe接收ThriftAgent发送的数据,它从各种数据源上收集数据,放到一个共享队列上,然后推送到后端的中央存储系统上。当中央存储系统出现故障时,Scribe可以暂时把日志写到本地文件中,待中央存储系统恢复性能后,Scribe再把本地日志续传到中央存储系统上。Scribe在处理数据时根据Category将不同主题的数据存储到不同目录中,以便于分别进行处理。(3)中央存储系统存储系统实际上就是Scribe中的store,当前Scribe支持非常多的store类型,包括文件、Buffer或数据库。2.ChukwaChukwa

提供了一种对大数据量日志类数据的采集、存储、分析和展示的全套解决方案和框架。在数据生命周期的各个阶段,Chukwa能够提供近乎完美的解决方案。Chukwa可以用于监控大规模(2000个以上节点,每天产生数据量在TB级别)Hadoop集群的整体运行情况并对它们的日志进行分析。Chukwa结构如图3-2所示。图3-2Chukwa架构(1)适配器(ChukwaAdapter)适配器是直接采集数据的接口和工具。每种类型的数据对应一个Adapter,目前包括的数据类型有命令行输出、log文件和httpSender等。同时用户也可以自己实现一个Adapter来满足需求。(2)代理(ChukwaAgent)Agent给Adapter提供各种服务,包括启动和关闭Adapter,将Adapter收集的数据通过HTTP传递给Collector,并定期记录Adapter状态,以便Adapter出现故障后能迅速恢复。一个Agent可以管理多个Adapter。(3)收集器(ChukwaCollector)它负责对多个数据源发来的数据进行合并,并定时写入集群。因为Hadoop集群擅长处理少量的大文件,而对大量小文件的处理则不是它的强项。针对这一点,Collector可以将数据先进行部分合并,再写入集群,防止大量小文件的写入。(4)多路分配器(ChukwaDemux)它利用MapReduce对数据进行分类、排序和去重。(5)存储系统Chukwa采用了HDFS作为存储系统。HDFS的设计初衷是支持大文件存储和小并发高速写的应用场景,而日志系统的特点恰好相反,它需要支持高并发低速率的写和大量小文件的存储,因此Chukwa框架使用多个部件,使HDFS满足日志系统的需求。(6)数据展示Chukwa不是一个实时错误监控系统,它分析的数据是分钟级别的,能够展示集群中作业运行的时间、占用的

CPU

及故障节点等整个集群的性能变化,能够帮助集群管理者监控和解决问题。3.FlumeFlume是Cloudera公司提供的分布式、可靠和高可用的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume能对数据进行简单处理,并写入各种数据接收方,如文本、HDFS、HBase等。Flume可以被看作是一个管道式的日志数据处理系统,其中数据流由事件(Event)贯穿始终。Event是Flume的基本数据单位,它包含日志数据并且携带消息头,其中日志数据由字节数组组成,这些Event由外部数据源生成。

Flume运行的核心是Agent。Flume以Agent为最小的独立运行单位,一个Agent就是一个JVM。在实际日志系统中,Flume由多个Agent串行或并行组成,完成不同日志数据的分析。每个Agent是一个完整的数据收集工具,并包含3个核心组件(见图3-3),一个Agent可以包含多个Source、Channel或Sink。图3-3Flume核心结构(1)SourceSource是数据的收集端,负责将数据采集后进行特殊的格式化,将数据封装到事件(Event)中,然后将事件推入Channel中。Flume提供了很多内置的Source类型,支持Avro、log4j、syslog、UNIX终端输出和httppost等不同格式的数据源,可以让应用程序同已有的Source直接打交道。如果内置的Source无法满足需求,用户可自定义Source。(2)ChannelChannel是连接Source和Sink的组件,我们可以将它看作一个数据的缓冲区,它可以将事件暂存到内存中,也可以持久化存储到本地磁盘上,直到Sink处理完该事件。Channel支持将数据存在内存、JDBC、File等其他持久化存储系统中。(3)SinkSink从Channel中取出事件,然后将数据发送到别处(可以是文件系统、数据库、HDFS,也可以是其他Agent的Source)。在日志数据较少时,它可以将数据存储在文件系统中,并且设定一定的时间间隔定时保存数据。

Flume使用事务性的方式保证传送事件整个过程的可靠性。Sink必须在事件被存入Channel后,或者已经被传达到下一个目的地,才能把事件从Channel中删除掉,这里的目的地包括下一个Agent、HDFS等。这样数据流里的事件无论是在一个Agent里还是在多个Agent之间流转,都能保证可靠,因此以上的事务性保证了事件被成功存储起来。例如,Flume支持在本地保存一份文件Channel作为备份,当Channel将事件存在内存队列里时,虽然处理速度快,但丢失的话无法恢复,这时可以将备份的数据进行恢复使用。

由于Flume提供了大量内置的Source、Channel和Sink类型,而不同类型的Source、Channel和Sink可以自由组合。因此,多个Agent可以基于用户设置的配置文件,灵活地组合进行协同工作,如图3-4所示。图3-4多Agent协同工作

Flume支持设置Sink的容错和负载均衡技术(见图3-5),这样可以保证在一个Agent失效的情况下,整个系统仍能正常收集数据,同时也不会因为Agent处于超负荷的工作状态,影响整个系统的运行效率。图3-5Flume负载均衡和容错3.2.2网页数据的采集方法网络大数据有许多不同于自然科学数据的特点,包括多源异构、交互性、时效性、社会性、突发性和高噪声等,不但非结构化数据多,而且数据的实时性强。大量数据都是随机动态产生的。网络数据采集称为“网页抓屏”“数据挖掘”或“网络收割”,通过“网络爬虫”程序实现。网络爬虫一般是先“爬”到对应的网页上,再把需要的信息“铲”下来。1.浏览器背后的网页各式各样的浏览器为我们提供了便捷的网站访问方式,用户只需要打开浏览器,键入想要访问的链接,然后轻按回车键就可以让网页上的图片、文字等内容展现在面前。实际上,网页上的内容经过了浏览器的渲染。现在的浏览器大都提供了查看网页源代码的功能,我们可以利用这个功能查看网页的实现方式。

另外,获取网页的过程是一个HTTP交互的过程。通常是浏览器向网页所在的服务器发送一个Request请求,服务器收到请求后回给一个Response。Request里面会用一个Get方法告诉服务器我们需要什么内容,一般都是我们所需要访问的网址,服务器解析了Get后就回给本地网页的内容。网络爬虫模仿浏览器发送一个Get方法给服务器获取网页内容。2.初识网络爬虫浏览器可以让服务器发送一些数据到那些对接无线(或有线)网络接口的应用上。本节选用Python来实现网络爬虫的一些功能。输出结果为importurllibfrombs4importBeautifulSouphtml=urllib.request.urlopen("")bsObj=BeautifulSoup(html,'lxml')print(bsObj.title)<title>百度一下,就知道</title>

urllib是Python的标准库,提供网络操作,包含从网络请求数据,处理cookie,甚至改变如请求头、用户代理这样的元数据函数。BeautifulSoup提供解析文档抓取数据的函数,可以方便地从网页抓取数据。3.爬虫的重要模块网络爬虫可以获取互联网中网页的内容。它需要从网页中抽取用户需要的属性内容,并对抽取出的数据进行处理,转换成适应需求的格式存储下来,供后续使用。

网络爬虫采集和处理数据包括如下3个重要模块。采集模块:负责从互联网上抓取网页,并抽取需要的数据,包括网页内容抽取和网页中链接的抽取。数据处理模块:对采集模块获取的数据进行处理,包括对网页内容的格式转换和链接的过滤。数据模块:经过处理的数据可以分为3类。第一类是SiteURL,即需要抓取数据的网站URL信息;第二类是SpiderURL,即已经抓取过数据的网页URL;第三类是Content,即经过抽取的网页内容。

网络爬虫通过上述3个模块获取网页中用户需要的内容。它从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的特定停止条件。4.爬虫的基本工作流程爬虫的基本工作流程如图3-6所示。(1)从

SiteURL

中抽取一个或多个目标链接写入

URL

队列,作为爬虫爬取信息的起点。(2)爬虫的网页分析模块从URL队列中读取链接。(3)从Internet中获取该链接的网页信息。(4)从网页内容中抽取所需属性的内容值。图3-6爬虫的基本工作流程(5)将获取的网页内容值写入数据库的Content,并将此URL存入SpiderURL。(6)从当前网页中抽取新的网页链接。(7)从数据库中读取已经爬取过内容的网页地址,即SpiderURL中的链接地址。(8)将抽取出的URL和已经抓取过的URL进行比较,以过滤URL。(9)如果该网页地址没有被抓取过,则将该地址写入SiteURL;如果该地址已经被抓取过,则放弃存储此网页链接。5.爬虫的网页抓取策略网络爬虫从网站首页获取网页内容和链接信息后,会根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复执行上述过程,直至达到爬虫程序满足某一条件时才停止。因此,待抓取URL队列是爬虫很重要的一部分。待抓取URL队列中的URL以何种顺序排列是一个很重要的问题,因为涉及先抓取哪个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫作抓取策略。一般一个网页会存在很多链接,而链接指向的网页中又会有很多链接,甚至有可能两个网页中又包含了同一链接等,这些网页链接的关系可以看作一个有向图,如图

3-7

所示。图3-7URL抓取策略(1)深度优先遍历策略深度优先遍历策略指网络爬虫会从起始页开始,一个链接一个链接地跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。如图3-7所示,从首页A开始,A网页有B链接,先抓取B网页;而B网页包含链接E和F,接着抓取E链接;当网页E中不再有链接时则抓取B中的链接F。对网页B中的链接抓取完后再对C和D网页采用同样的深度遍历方法进行抓取。深度优先遍历策略尽可能对纵深方向进行搜索,直至所有链接被抓取完毕。(2)宽度优先遍历策略宽度优先遍历策略的基本思想是将首页中发现的链接直接插入待抓取URL队列的末尾,即网络爬虫会先抓取起始网页中所有的链接网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。如图3-7所示,宽度优先遍历路径:首先抓取A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论