大数据架构详解:从数据获取到深度学习(txt+pdf+epub+mobi电子书下载)

作者:朱洁

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

大数据架构详解:从数据获取到深度学习

大数据架构详解:从数据获取到深度学习试读:

前言

大数据这几年真的很火,于是有越来越多的人开始学习大数据技术。很多人会误以为大数据是一门技术,其实不然,大数据更多的是一门市场宣传语言,也可以理解为一种思考方式。从技术角度来看,大数据是一系列技术的组合,所以真正全面掌握大数据技术也是一件很困难的事情。编写这本书的初衷就是总结这些年的工作和学习经验,希望可以分享给更多人,同时对自己而言也是一个提高、总结和升华的过程。

总的来说,本书围绕一个通用技术栈来组织章节,主要聚焦大数据平台的一些知识。主要分为三部分。

第一部分:第1~3章,主要讲述大数据的本质、运营商大数据的架构和一些基本的业务知识。

·第1章:阐述大数据的本质和面临的挑战。

·第2章:概述大数据架构及背后的驱动因素,以及未来发展的趋势。

·第3章:介绍运营商领域的业务,让读者对大数据能做什么有一个直观的感受。

第二部分:第4~11章,围绕大数据平台技术栈来阐述数据获取、处理、分析和应用平台涉及的技术。

·第4章:介绍数据获取涉及的探针、爬虫、日志采集、数据分发中间件等技术。

·第5章:介绍流式数据处理引擎、CEP、流式应用。

·第6章:介绍交互式分析技术、MPP DB、热门的SQL on Hadoop技术。

·第7章:介绍批处理技术、Spark,以及大规模机器学习的BSP技术等。

·第8章:探讨机器学习、深度学习相关技术。

·第9章:统一资源管理是趋势,本章介绍资源管理的核心技术和算法。

·第10章:存储是基础,本章介绍存储的关键技术。

·第11章:探讨大数据技术怎么云化,以及关键技术是什么。

第三部分:第12章,技术和文化息息相关,技术影响文化,文化影响技术。

第12章:介绍大数据开发文化、开源、DevOps,探讨理念和文化对技术的冲击。

由于编者水平有限,书中疏漏之处在所难免,敬请谅解。

最后以乔布斯的经典名句结尾:Stay hungry,Stay foolish。朱洁2016年5月于深圳第一部分大数据的本质第1章 大数据是什么

首先提一个问题:“大数据”是一项专门的技术吗?有的人可能会以为大数据是一项专门的技术,其实不是。“大数据”这三个字只是一门市场语言(Marketing Language),其背后是硬件、数据库、操作系统、Hadoop等一系列技术的综合应用,所以本书我们希望从一个端到端的架构展开讲解典型的大数据技术。1.1 大数据导论(1)1.1.1 大数据简史

大数据(BigData)现在可以说是人尽皆知,其实真正回溯起来,其是由SGI的首席科学家JohnR.Masey于1998年在USENIX大会上首次提出的。他在其发表的一篇名为(2)BigDataandtheNextWaveofInfrastress的论文中首次提出这个词,用来描述数据爆炸的现象。估计他当时未必能想到十几年后BigData能这么火。

如果追溯大数据的概念,则是阿尔文·托夫勒(AlvinToffler)于1980年在《第三次浪潮》一书中预言了信息时代的到来会带来数据爆发,所以科学家很早就预见到了大数据。大数据的历史由来已久,但是技术需要持续积累,才能由量变到质变。

对于工业界来说,不得不提Google在2003—2006年公布的关于GFS、MapReduce和BigTable的三篇技术论文,正是这三篇论文奠定(3)了大数据发展的基石。Hadoop之父——DougCutting正是参考论文,后来才实现了当前鼎鼎大名的Hadoop,而Hadoop的诞生极大地促进了大数据技术的蓬勃发展。

当然,这里特别要指出,Hadoop并不等同于大数据,大数据也并不特指Hadoop,大数据只是一门市场语言,代表的是一种理念、一种问题解决思路、一系列技术的集合,Hadoop只是其中一种具体的处理数据的框架技术。1.1.2 大数据现状

Gartner发布的2016技术成熟度曲线(见图1.1)首次将云计算、大数据及相关技术移除。Gartner指出这些技术不是不重要,而是不再“新兴”,大家虽然对大数据的兴趣依然不减,但是这个市场已经安定下来,有了一整套合理的方法,新的技术和实践被添加进现有方案。所以大数据度过了技术的期望膨胀高峰期,到了真正使用大数据解决问题的时候。未来大数据相关技术的演进在很长一段时间仍将展现出强大的生命力,相关市场的营收也将不断放大。图1.1(4)1.1.3 大数据与BI

前面说了大数据是一种理念、一种问题解决思路和一系列技术的集合,它与传统的BI既有相同之处,也有不同之处。

相同之处,都是从数据中挖掘价值,促进商业成功。不同之处,核心是分布式技术的发展、处理能力的极大提高,以前想都不敢想的处理变成了可能。所以在对数据的处理理念上也得到了扩展:(5)(1)不局限于传统的BI从数据中抽样建模,再回DW实施,大数据可以直接从全量数据中找出规律,通过数据的样本多样化弥补模型的准确性。(2)不局限于传统的BI简单地通过汇总、统计分析找出群体共性从而输出报表,大数据可以直接通过足够多的数据对个体进行刻画。

虽然有种种不同,但未来大数据和BI的界限会模糊,企业的核心驱动目标是从数据资产中找出商业价值,而不关心构建和分析的方法论。1.2 企业数据资产

有了大数据的光环,有了从数据中挖掘商业价值的方法和工具之后,那些原本存放在服务器上平淡无奇的陈年旧数一夜之间身价倍增。按照世界经济论坛报告的看法,“大数据为新财富,价值堪比石油”。《大数据时代》一书的作者维克托则乐观地预测,数据列入企业资产负债表只是时间问题。

本质上,任何企业在生产活动中都会产生数据,数据都有分析的价值。我们来看看典型的运营商会产生哪些数据。

图1.2是典型的运营商产生的数据,从下到上分为如下几类。(6)图1.2● NetworkRawData:电信网络里任何一个呼叫或者上网行为都会

引起电信设备之间的数据进行交换,这个数据就是网络底数据。● UserPlaneDetailRecordData:从网络原始数据里面提取出来的用

户行为数据,如打电话数据、上网行为等。● MR/CHRTypeData:无线测量数据、呼叫历史记录单据数据。用

户的位置信息就是从MR/CHR数据里面通过算法得出的。● SignalingData:信令数据。电信网络分控制面、数据面、用户面。

在控制面上设备之间相互按照协议协商通信的数据叫信令数据。● CRMBilling:电信设备厂商登记的开户信息、账单信息。

上面的划分是从非常专业化的角度进行的,其实通俗一点可以简单归类为设备数据和用户数据两类。设备数据用来分析设备的正常与否,用于设备的维护、规划等。用户数据包括如下数据。● 位置数据:无线是用一个个蜂窝来划分区域的,一个蜂窝叫一个

小区,所以只要电话在线,就需要注册到一个个小区中去,知道

了小区就知道了用户所在的位置。通过小区切换就能计算出用户

移动的轨迹,这就是用户的位置数据。● 上网数据:用户通过运营商的设备上网,所有的行为数据都可以

被记录下来,如上了什么网站、网速是多少、上了多长时间。这

些通过通信协议的包头就可以获取。如果继续分析内容,就可以

获取更多的数据,就可以完全知道用户在干什么。● 用户兴趣数据:通过用户的上网记录,就可以衍生出用户的兴趣

爱好、常上什么网站、最近关注什么东西等。● 通信数据和社交数据:例如,用户给谁打了电话、打了多长时间、

给谁发了短信,这些信息都可以被记录下来。通过电话联系又可

以衍生出用户的社交关系数据,如和谁是熟人、常联系谁等。● 身份信息数据:用户到运营商开户,用户的所有个人信息就被运

营商记录下来,包括姓名、年龄、身份证号码等。而且这些数据

是由人工采集的,准确度远高于互联网用户自己注册的信息。● 用户金融数据:如用户的电话、网络缴费记录,是否经常欠费等,

可用于进行个人信用分析。

由此可以看出,运营商拥有从底层的设备数据到上层用户的行为数据,而且通常是全网的数据,因此可以说抱着数据的“金矿”,是其他厂商所无法媲美的。1.3 大数据挑战

大数据发展到现在,有了一定的技术和商业积累,但是还有很多难题等待解答,最典型的就是成本、实时性、安全等方面的挑战。1.3.1 成本挑战

运营商普遍受到腾讯、阿里巴巴等互联网厂商的OTT应用的挤压,面临着管道转型、利润下降的风险。而运营商的数据量巨大,以PB为基本单位的数据,处理起来需要巨大的投入。外部商业环境和内部规模的双重挤压,对大数据平台提出了很高的性能和成本要求。1.3.2 实时性挑战

如果从广义的数据质量角度看,随着时间的推移,数据的价值将逐渐降低,时间越久的数据,价值越低。举个例子,一家商场需要对当前在商场内的客户做一个推荐活动。但是端到端采集和处理数据的时间过长,最后推荐平台得到的用户列表都是过期的列表,列表上的名单可能已经不在商场内,而新到的用户还没有更新到名单中来,所以很多业务对大数据平台端到端的实时性提出了很高的要求。1.3.3 安全挑战

安全挑战体现在两个方面:

一方面是在技术上,随着HTTPS的推广应用,数据在传输过程中采用管理加密的方式,运营商作为管道获取数据的难度变得越来越大。

另一方面是在法理上,用户的哪些数据是可以获取的、哪些是不允许读取的,始终存在侵犯用户隐私的法律风险。1.4 小结

本章简述大数据的历史,探讨大数据的作用,作为全书的引子,让读者对大数据有一个初步的认识,带领读者进入丰富多彩的大数据世界。

后面的章节将重点讲述在构建运营商大数据系统时的业务和架构实战经验,以实际经验以飨读者。————————————————————

(1) 参考forbes http://www.forbes.com/sites/gilpress/2013/05/09/a-very-short-history-of-big-data/。

(2) Big Data and the Next Wave of InfraStress(https://www.usenix.org/conference/1999-usenix-annual-technical-conference/big-data-and-next-wave-infrastress-problems)。

(3) Doug Cutting是Lucene、Nutch、Hadoop等项目的发起人。

(4) Business Intelligence,商业智能。

(5) Data Warehouse,数据仓库。

(6) 图片来源:https://databricks.com/blog/2015/06/09/huawei-embraces-open-source-apache-spark.html。第2章 运营商大数据架构2.1 架构驱动的因素

运营商和互联网面临不同的历史时期,因而大数据在各自领域承担的使命是不一样的。

运营商面临被管道化的挑战,营收下滑,大数据项目承担企业战略转型、数据变现的使命。同时由于成本的压力,以及大量基础设施和设备利旧的诉求,所以运营商在大数据项目中,对性能、成本和集成度提出了很高的要求。

互联网企业近几年盈利颇丰,大数据往往是承担业务快速创新、未来探索的一种驱动因素,所以对架构的扩展性、灵活性等方面的追求优先级在成本之上。互联网企业每建一个数据中心通常就是几千台的规模,这在运营商看来是不可想象的。

背后的商业驱动因素不一样,所带来的架构挑战也不一样。2.2 大数据平台架构

本书我们将以一个实际的大数据架构参与者、旁观者的角色讲述真正的实战经验,希望带给读者一些启发。前面讲到商业驱动因素不一样,所面临的场景不一样,选择的技术措施也会有所区别,但是其实存在即合理,实践出真知。

大数据平台架构如图2.1所示。可以看到,最上层是应用,大数据平台最后还是要解决实际的业务问题,在运营商领域分别解决SQM(运维质量管理)、CSE(客户体验提升)、MSS(市场运维支撑)、DMP(数据管理平台)等问题。这部分内容会在第3章详细介绍。图2.1

第二层是各个组件/技术支撑,包括数据从产生获取、处理(实时、批处理)、分析(交互式查询、机器学习与数据挖掘)到最后的展现。这部分内容会在第4~8章介绍。

第三层,为了支持数据的存储处理,需要统一的资源管理及分配。这部分内容会在第9章介绍。

第四层,上层框架和处理都构建在存储的基础上,所以存储是基础中的基础。这部分内容会在第10章介绍。

第五层,大数据部署形态有云化部署、物理机部署等多种部署模式。这部分内容会在第11章介绍。

第12章介绍大数据技术开发文化。2.3 平台发展趋势

Hadoop从2006年项目成立开始,已经风风雨雨走过了10年,从最开始的HDFS和MapReduce两个组件到现在完整的生态链。展望未来,随着技术和业务的发展,下面这些趋势应该是所有设计和实现大数据平台的人需要认真考虑的。● Cloud First:云优先。服务端利用云的部署和扩展能力,保证数

据访问高并发、高可用、高可靠。● Stream Default:流优先。数据源端更多的是流数据,要求实时

分析,进行秒级或分钟级计算。● Pervasive Analytics:普适分析。将分析能力推至数据源端、管

道和服务端,低时延反馈结果。● Self Service:自服务。无须太多的人为干预和人力投入,使得

数据合理放置,转换为适合分析的数据类型,方便APP开发等。

现在看着风光无限的组件或者平台,会不断地被后来者所替代。2.4 小结

本章简要总结了本书的主要章节和内容。本书是围绕一个通用的大数据处理逻辑架构来展开的。在实际的生产环境中,该架构并不是一成不变的,会根据业务来灵活地部署和应用。当然,在一个完整的企业大数据系统里,本书介绍的内容完全不够,本书只介绍最基础的大数据平台,很多底层或者上层的内容可能没有覆盖到。另外,架构不是凭空出现的,由业务场景驱动的架构才是真正可用的架构。第3章 运营商大数据业务

前面讲到,运营商由于处于网络管道的位置,因而掌握了非常多的数据,运营商开展大数据业务是顺理成章的事,而事实上大数据也承载着运营商向数字运营商转型的战略梦想。本章简要介绍运营商常见的大数据业务,让读者对大数据能做什么有一个基本的认识。3.1 运营商常见的大数据业务

第1章介绍了运营商拥有的数据资产,运营商拥有从底层的设备和网络数据到上层的用户行为数据。有了这些数据,运营商大数据便可以衍生出众多业务,主要有SQM(运维质量管理)、CSE(客户体验提升)、MSS(市场运维支撑)、DMP(数据管理平台)。3.1.1 SQM(运维质量管理)

一个电话或者用户一个上网行为的成功发生,对于整个运营商背后的网络来说,经过了很多种类、很多台设备才能一起完成。传统的监控和告警设备只能单点地监控整个流程中的某一处是否出现问题,这样就和业务脱钩了。

以在线视频播放为例,这是用户常用的业务类型之一。传统设备只能监控单点的KPI,但这和业务的实际体验其实是脱钩的,如核心网侧速度很高,但是用户体验仍可能很差,经常卡顿,所以运营商也很难判断出整个业务的质量好坏。通过大数据技术,不仅可以收集全网的各台设备的数据,而且可以收集设备原始数据,监控和计算出“播放成功率”、“缓存时延”、“停顿频次”、“停顿占比”、“中断率”等指标数据,就可以知道整个业务的质量如何。同时对各项指标不正常的具体原因,如中断率过高,可以通过收集的数据进一步钻取数据定位。(1)

SQM主要涉及的技术就是后分析,通过计算KPI/KQI,得出各个业务的质量,支撑整个SQM。3.1.2 CSE(客户体验提升)

用户是互联网发展的基石,服务好用户是网络建设的目标。通过大数据技术,可以针对用户的个人体验进行360°分析。用户体验提升一般包括如下几个方面:(1)通过对用户语音、短消息、流媒体等业务进行分析,定位到用户的哪个业务、哪类事件、哪个区域出现了问题,并呈现单个用户的活动轨迹,定位失败位置,以及对失败原因进行详细分析,为维护分析人员进行业务问题定位提供详尽的依据。(2)可以针对VIP用户,以全网为监控对象,对反映VVIP用户的KPI指标进行1分钟粒度的实时数据监控,帮助运营商实时了解VVIP用户的业务质量;以全网为监控对象,对反映用户群的KPI指标进行5分钟粒度的数据监控,并提供历史业务数据的失败分析,帮助运营商及时发现问题。(3)针对整个用户群,可以分别展示CS、PS等业务质量的总体情况,支持以不同维度对失败业务进行分析,并支持对异常原因进行分析,为保证用户/用户群的业务质量提供有力的数据支撑。(4)针对客户漫游专门进行监控。实时监控漫入/漫出客户数,对漫游的质量进行分析等。

CSE是针对用户维度的业务和质量分析,涉及的技术是用户画像技术。3.1.3 MSS(市场运维支撑)

前两类业务更多考虑的是运维支撑角度。除了运维支撑外,大数据还帮助运营商做好运营,如帮助运营商更好地掌握网络质量和提高客户满意度。常见的手段有离网分析。

简单介绍一下什么是离网分析。离网分析是通过按照客户群和客户来统计用户的业务数据,在定制报表服务器中对数据进行简易模型计算,给出用户的业务评分和质差事件评分,更好地帮助运营商及时预测用户离网倾向。

离网分析主要用到数据挖掘技术,通过建模,从数据中挖掘出用户离网倾向的主要原因,以及指导后续的改进。3.1.4 DMP(数据管理平台)

运营商掌握了一部分数据。除了运营、运维的支撑外,数据变现也是其中重要的一部分,这通常是通过DMP(数据管理平台)来实现的。

DMP平台更多的是一种数据管理和变现的商业模式,技术上没有特殊的地方,由普通的Hadoop、数据库来承担。

DMP(DataManagement Platform)是把分散的第一、第三方数据进行整合,纳入统一的技术平台,并对这些数据进行标准化和细分,让用户可以把这些细分结果推向现有的互动营销环境中。

DMP的核心元素如下。● 数据整合及标准化能力:采用统一化的方式,将各方数据吸纳整

合。● 数据细分管理能力:创建出独一无二、有意义的客户细分,进行

有效的营销活动。● 功能健全的数据标签:提供数据标签灵活性,便于营销活动使用。● 自助式的用户界面:用户可以基于Web界面或其他集成方案来直

接使用数据工具、相关功能和几张报表等。● 相关渠道环境的连接:与相关渠道集成,包含网站端、展示广告、

电子邮件及搜索和视频,让营销者能找到、定位和提供细分群体

相关高度的营销信息。

DMP最重要的技术是标签管理和存储,标签的维度非常大,需要一个好的引擎支持标签的存储、更新及快速对外提供服务。3.2 小结

本章高度概括了运营商的一些典型业务,帮助读者了解大数据能帮助运营商做什么,但是运营时的业务远比这个复杂。运营商掌握了大量的数据,目前的业务涵盖运维、运营、数据变现等各个方面,大数据的各种技术都会用到,后面的章节会介绍从数据获取到数据应用所涉及的技术。但总的来说,相比互联网企业,运营商使用大数据还是偏传统的应用,局限于运营商本身。以大数据为基础,相信未来运营商在商业模式上发挥的空间还是很大的。————————————————————

(1) KPI/KQI:Key Performance Indicators,关键业绩指标;Key Quality Indicators,关键质量指标。第二部分大数据技术第4章 数据获取

大数据技术的核心是从数据中获取价值,而第一步就是要弄清楚有什么数据、怎样获取。在企业的生产过程中,数据无所不在,但是如果不能正确获取,或者没有能力获取,就浪费了宝贵的数据资源。本章主要介绍数据获取的技术。4.1 数据分类

数据的分类方法有很多种,按数据形态可以分为结构化数据和非结构化数据两种。结构化数据如传统的DataWarehouse数据;非结构化数据有文本数据、图像数据、自然语言数据等。

结构化数据和非结构化数据的区别从字面上就很容易理解:结构化数据,结构固定,每个字段有固定的语义和长度,计算机程序可以直接处理;而非结构化数据,计算机程序无法直接处理,需要先对数据进行格式转换或信息提取。

按数据的来源和特点,电信的数据又可以分为网络原始数据、用户面详单信令、信令数据等。运营商的数据分类在1.2节介绍过,可以回顾一下。

运营商数据是一个数据“金矿”,包括用户数据和设备数据,但是运营商的数据又有如下特点:● 数据种类复杂,结构化、半结构化、非结构化数据都有。运营商

的设备由于传统设计的原因,很多都是根据协议来实现的,所以

数据的结构化程度比较高,结构化数据易于分析,这点相比其他

行业有天然的优势。● 数据实时性要求高,如信令数据都是实时消息,如果不及时获取

就会丢失。● 数据来源广泛,各个设备数据产生的速度及传送速度都不一样,

因而数据关联是一大难题。

让运营商数据产生价值的第一步是数据获取,下面介绍数据获取和数据分发的相关技术。4.2 数据获取组件

数据的来源不同,数据获取涉及的技术也不同。电信的很多数据(1)产生于网络设备,你会看到电信特有的探针技术,以及为获取网页数据常用的爬虫、采集日志数据的组件Flume;数据获取之后,为了(2)方便分发给后面的系统处理,本章最后介绍常用的Kafka消息中间件。4.3 探针4.3.1 探针原理

打电话,手机上网,背后承载的都是电信的路由器、交换机等设备的数据交换。从电信的路由器、交换机上把数据采集上来的专有设备是探针。根据探针放置的位置不同,可分为内置探针和外置探针两种。● 内置探针:探针设备和电信已有设备部署在同一个机框内,直接

获取数据。● 外置探针:在现网中,大部分网络设备早已经部署完毕,无法移

动原有网络,这时就需要外置探针。

外置探针主要由以下几个设备组成,如图4.1所示。图4.1● Tap/分光器:对承载在铜缆、光纤上传输的数据进行复制,并且(3)

不影响原有两个网元间的数据传输。● 汇聚LANSwitch:汇聚多个Tap/分光器复制的数据,上报给探针

服务器。● 探针服务器:对接收到的数据进行解析、关联等处理,生成(4)

xDR,并将xDR上报给分析系统,作为其数据分析的基础。

探针通过分光器获取到数据网络中各个接口的数据,然后发送到探针服务器进行解析、关联等处理。经过探针服务器解析、关联的数据,最后送到统一分析系统中进行进一步的分析。4.3.2 探针的关键能力

1.大容量

探针设备需要和电信已有的设备部署在一起。一般来说,原有设备的机房空间有限,所以探针设备的高容量、高集成度是非常关键的能力。

探针负责截取网络数据并解析出来,其中最重要的是转发能力,对网络的要求很高。高性能网络是大容量的保证,后面将介绍探针用(5)到的IB技术。

2.协议智能识别

传统的协议识别方法采用SPI(Shallow Packet Inspection)检测技术。SPI对IP包头中的“5Tuples”,即“五元组(源地址、目的地址、源端口、目的端口及协议类型)”信息进行分析,来确定当前流量的基本信息。传统的IP路由器正是通过这一系列信息来实现一定程度的流量识别和QoS保障的,但SPI仅仅分析IP包四层以下的内容,根据TCP/UDP的端口来识别应用。这种端口检测技术检测效率很高,但随着IP网络技术的发展,适用的范围越来越小,目前仍有一些传统网络应用协议使用固定的知名端口进行通信。因此,对于这一部分网络应用流量,可以采用端口检测技术进行识别。例如:● DNS协议采用53端口。● BGP协议采用179端口。● MSRPC远程过程调用采用135端口。

许多传统和新兴应用采用了各种端口隐藏技术来逃避检测,如在8000端口上进行HTTP通信、在80端口上进行Skype通信、在2121端口上开启FTP服务等。因此,仅通过第四层端口信息已经不能真正判断流量中的应用类型,更不能应对基于开放端口、随机端口甚至采用加密方式进行传输的应用类型。要识别这些协议,无法单纯依赖端口检测,而必须在应用层对这些协议的特征进行识别。

除了逃避检测的情况外,目前还出现了运营商和OTT合作的场景,如Facebook包月套餐,在这种情况下,运营商可以基于OTT厂商提供的IP、端口等配置信息进行计费。但是这种方式有很大的限制,如系统配置的IP和端口数量有限、OTT厂商经常改变或者增加服务器造成频繁修改配置等。

协议智能识别技术能够深度分析数据包所携带的L3~L7/L7+的消息内容、连接的状态/交互信息(如连接协商的内容和结果状态、交互消息的顺序等)等信息,从而识别出详细的应用程序信息(如协议和应用的名称等)。

3.安全的影响

探针的核心能力是获取通信的数据,但随着越来越多的网站使用(6)HTTPS/QUIC加密L7协议,传统的探针能力就会受到极大的限制,因而无法解析L7协议的内容,如图4.2所示。图4.2

比如,想分析YouTube的流量,只有通过解析L7协议才能知道用户访问的是YouTube,所以加密之后会影响探针的解析能力,很多业务就无法进行。

现在业界尝试使用深度学习来识别协议,如奇虎360设计了一个5~7层的深度神经网络,能够自动学习特征并识别每天数据中的50~80种协议。

4.IB(InfiniBand)技术

为了达到高效的转发能力,传统的TCP/IP网络无法满足需求,因此需要更高速度、更大带宽、更高效率的InfiniBand网络。

1)什么是IB技术

InfiniBand架构是一种支持多并发链接的“转换线缆”技术。在这种技术中,仅有一个链接的时候运行速度是500MB/s,在有4个链接的时候运行速度是2GB/s,在有12个链接的时候运行速度可以达到6GB/s。IBTA成立于1999年8月31日,由Compaq、惠普、IBM、戴尔、英特尔、微软和Sun七家公司牵头,共同研究高速发展的、先进的I/O标准。最初命名为SystemI/O,1999年10月正式更名为InfiniBand。InfiniBand是一种长缆线的连接方式,具有高速、低延迟的传输特性。

InfiniBand用于服务器系统内部并没有发展起来,原因在于英特尔和微软在2002年就退出了IBTA。在此之前,英特尔早已另行倡议Arapahoe,也称为3GIO(3rdGenerationI/O,第三代I/O),即今日鼎鼎大名的PCI-Express(PCI-E)。InfiniBand、3GIO经过一年的并行,英特尔最终选择了PCI-E。因此,现在应用InfiniBand,主要用于服务器集群、系统之间的互联。

2)IB速度快的原因

随着CPU性能的飞速发展,I/O系统的性能成为制约服务器性能的瓶颈,于是人们开始重新审视使用了十几年的PCI总线架构。虽然PCI总线架构把数据的传输从8位/16位一举提升到32位,甚至当前的64位,但是它的一些先天劣势限制了其继续发展的势头。PCI总线有如下缺陷:(1)由于采用了基于总线的共享传输模式,所以在PCI总线上不可能同时传送两组以上的数据,当一个PCI设备占用总线时,其他设备只能等待。(2)随着总线频率从33MHz提高到66MHz,甚至133MHz(PCI-X),信号线之间的相互干扰变得越来越严重,在一块主板上布设多条总线的难度也就越来越大。(3)由于PCI设备采用了内存映射I/O地址的方式建立与内存的联系,热添加PCI设备变成了一件非常困难的工作。目前的做法是在内存中为每个PCI设备划出一块50~100MB的区域,这段空间用户是不能使用的。因此,如果一块主板上支持的热插拔PCI接口越多,用户损失的内存就越多。(4)PCI总线上虽然有Buffer作为数据的缓冲区,但是它不具备纠错的功能。如果在传输过程中发生了数据丢失或损坏的情况,则控制器只能触发一个NMI中断通知操作系统在PCI总线上发生了错误。(7)

3)IB介绍

①InfiniBand架构

InfiniBand架构如图4.3所示。图4.3

InfiniBand采用双队列程序提取技术,使应用程序直接将数据从适配器送入应用内存(远程直接存储器存取,RDMA),反之亦然。在TCP/IP协议中,来自网卡的数据先复制到核心内存,然后再复制到应用存储空间,或从应用存储空间将数据复制到核心内存,再经由网卡发送到Internet。这种I/O操作方式始终需要经过核心内存的转换,不仅增加了数据流传输路径的长度,而且大大降低了I/O的访问速度,增加了CPU的负担。而SDP则是将来自网卡的数据直接复制到用户的应用存储空间,从而避免了核心内存的参与。这种方式被称为零拷贝,它可以在进行大量数据处理时,达到该协议所能达到的最大吞吐量。

InfiniBand的协议采用分层结构,各个层次之间相互独立,下层为上层提供服务。其中,物理层定义了在线路上如何将比特信号组成符号,然后再组成帧、数据符号及包之间的数据填充等,详细说明了构建有效包的信令协议等;链路层定义了数据包的格式及数据包操作的协议,如流控、路由选择、编码、解码等;网络层通过在数据包上添加一个40字节的全局的路由报头(GlobalRouteHeader,GRH)来进行路由的选择,对数据进行转发,在转发过程中,路由器仅仅进行可变的CRC校验,这样就保证了端到端数据传输的完整性;传输层再将数据包传送到某个指定的队列偶(QueuePair,QP),并指示QP如何处理该数据包,以及当信息的数据净核部分大于通道的最大传输单元(MTU)时,对数据进行分段和重组,如图4.4所示。图4.4

②InfiniBand基本组件

InfiniBand的网络拓扑结构如图4.5所示,其组成单元主要分为4类。图4.5● HCA(HostChannelAdapter):它是连接内存控制器和TCA的桥

梁。● TCA(TargetChannelAdapter):它将I/O设备(如网卡、SCSI控

制器)的数字信号打包发送给HCA。● InfiniBandlink:它是连接HCA和TCA的光纤。InfiniBand架构允许

硬件厂家以1条、4条、12条光纤3种方式连接TCA和HCA。● 交换机和路由器。

无论是HCA还是TCA,其实质都是一个主机适配器,它是一个具备一定保护功能的可编程DMA(DirectMemoryAccess,直接内存存取)引擎。

③InfiniBand应用

在高并发和高性能计算应用场景中,当客户对带宽和时延都有较高的要求时,前端和后端均可采用IB组网,或前端网络采用10Gbit/s以太网,后端网络采用IB。由于IB具有高带宽、低时延、高可靠及满足集群无限扩展能力的特点,并采用RDMA技术和专用协议卸载引擎,所以能为存储客户提供足够的带宽和更低的响应时延。

IB目前可以实现及未来规划的更高带宽工作模式如下(以4X模式为例)。● SRD(SingleDataRate):单倍数据率,即8Gbit/s。● DDR(DoubleDataRate):双倍数据率,即16Gbit/s。● QDR(QuadDataRate):4倍数据率,即32Gbit/s。● FDR(FourteenDataRate):14倍数据率,即56Gbit/s。● EDR(EnhancedDataRate):100Gbit/s。● HDR(HighDataRate):200Gbit/s。● NDR(NextDataRate):1000Gbit/s+。(8)

4)IB常见的运行协议

IPoIB协议:InternetProtocoloverInfiniBand,简称IPoIB。传统的TCP/IP栈的影响实在太大了,几乎所有的网络应用都是基于此开发的,IPoIB实际是InfiniBand为了兼容以太网不得不做的一种折中,毕竟谁也不愿意使用不兼容大规模已有设备的产品。IPoIB基于TCP/IP协议,对于用户应用程序是透明的,并且可以提供更大的带宽,也就是原先使用TCP/IP协议栈的应用不需要任何修改就能使用IPoIB协议。例如,如果使用InfiniBand做RAC的私网,默认使用的就是IPoIB协议。图4.6左侧是传统以太网TCP/IP协议栈的拓扑结构,右侧是InfiniBand使用IPoIB协议的拓扑结构。图4.6

RDS协议:ReliableDatagramSockets(RDS)实际是由Oracle公司研发的运行在InfiniBand之上的、直接基于IPC的协议。之所以出现这样一种协议,根本原因在于传统的TCP/IP栈本身过于低效,对于高速互联开销太大,导致传输的效率太低。RDS相比IPoIB,CPU的消耗量减少了50%;相比传统的UDP协议,网络延迟减少了一半。图4.7左侧是使用IPoIB协议的InfiniBand设备的拓扑结构,右侧是使用RDS协议的InfiniBand设备的拓扑结构。在默认情况下,RDS协议不会被使用,需要进行额外的relink(重新链接)。另外,即使relinkRDS库以后,RAC节点间的CSS通信也无法使用RDS协议,节点间的心跳维持及监控都采用IPoIB协议。图4.7

除了上面介绍的IPoIB、RDS协议外,还有SDP、ZDP、IDB等协议。OracleExadata一体机为了达到较高的性能,也使用了IB技术。(9)

5)IB在Linux上的配置

下面介绍在Linux上配置和使用IB协议。

RedHat产品是从RedHatEnterpriseLinux5.3开始正式在内核中集成对InfiniBand网卡的支持的,并且将InfiniBand所需的驱动程序及库文件打包到发行CD里,所以对于有InfiniBand应用需求的RedHat用户来说,建议采用RedHatEnterpriseLinux5.3及以后的系统版本。

①安装InfiniBand驱动程序

在安装InfiniBand驱动程序之前,首先确认InfiniBand网卡已经被正确地连接或分配到主机,然后从RedHatEnterpriseLinux5.3的发行CD中获得Table1中给出的RPM文件,并根据上层应用程序的需要,选择安装相应的32位或64位软件包,如表4.1所示。表4.1openib-*.el5.noarch.rpmlibibcm-*.el5.ppc.rpmlibibcm-devel-*.el5.ppc.rpm32bitlibibcm-static-*.el5.ppc.rpmlibibcommon-*.el5.ppc.rpmlibibcommon-devel-*.el5.ppc.rpmlibibcommon-static-*.el5.ppc.rpmlibibmad-*.el5.ppc.rpmlibibmad-devel-*.el5.ppc.rpmlibibmad-static-*.el5.ppc.rpmmlibibumad-*.el5.ppc.rpm32bitlibibumad-devel-*.el5.ppc.rpmlibibumad-static-*.el5.ppc.rpmlibibverbs-*.el5.ppc.rpmlibibverbs-devel-*.el5.ppc.rpmlibibverbs-static-*.el5.ppc.rpmlibibverbs-utils-*.el5.ppc.rpmlibibcm-*.el5.ppc64.rpmlibibcm-devel-*.el5.ppc64.rpmlibibcm-static-*.el5.ppc64.rpmlibibcommon-*.el5.ppc64.rpmlibibcommon-devel-*.el5.ppc64.rpmlibibcommon-static-*.el5.ppc64.rpmlibibmad-*.el5.ppc64.rpmlibibmad-devel-*.el5.ppc64.rpm64bitlibibmad-static-*.el5.ppc64.rpmlibibumad-*.el5.ppc64.rpmlibibumad-devel-*.el5.ppc64.rpmlibibumad-static-*.el5.ppc64.rpmlibibverbs-*.el5.ppc64.rpmlibibverbs-devel-*.el5.ppc64.rpmlibibverbs-static-*.el5.ppc64.rpmlibibverbs-utils 64bit rpm is not available in RedHatEL5.3

另外,对于不同类型的InfiniBand网卡,还需要安装一些特殊的驱动程序。例如,对于Galaxy1/Galaxy2类型的InfiniBand网卡,就需要安装ehca相关的驱动。这里给出三种常见的InfiniBand网卡及其所需驱动的对应关系,如表4.2所示。表4.2libehca-*.el5.ppc.rpmlibehca-static-32bitlibehca*.el5.ppc.rpm(for Galaxy1/Galaxy2 libehca-*.el5.ppc64.rpmsupport)libehca-static-64bit*.el5.ppc64.rpmlibmthca-*.el5.ppc.rpmlibmthca-static-32bitlibmthca*.el5.ppc.rpmlibmthca-*.el5.ppc64.(for Mellanox InfiniHost rpmsupport)64bitlibmthca-static-*.el5.ppc64.rpmlibmlx4-*.el5.ppc.rpmlibmlx4-static-32bitlibmlx4*.el5.ppc.rpm(for Mellanox ConnectX libmlx4-*.el5.ppc64.rpmsupport)libmlx4-static-64bit*.el5.ppc64.rpm

②启动openibd服务

在RedHatEnterpriseLinux5.3系统中,openibd服务在默认情况下是不打开的,所以在安装完驱动程序后,在配置IPoIB网络接口之前,需要先使能openibd服务以保证相应的驱动被加载到系统内核。具体方法如下: # /etc/init.d/openibd start Loading OpenIB kernel modules: [OK]

在启动openibd服务后,可以使用如下命令检查相应的驱动是否已经加载。以Galaxy2网卡为例,应得到如下输出: # /etc/init.d/openibd status Low level hardware support loaded: ib_ehca Upper layer protocol modules: ib_iser ib_srp ib_sdp ib_ipoib User space access modules: rdma_ucm ib_ucm ib_uverbs ib_umad Connection management modules: rdma_cm ib_cm iw_cm Configured IPoIB interfaces: none Currently active IPoIB interfaces: none

此时,使用ifconfig命令可以看到待配置的IB接口。例如,ifconfig命令输出: # ifconfig -a ib0 Link encap:InfiniBand HWaddr 80:00:00:2C:FE:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00 BROADCAST MULTICAST MTU:4092 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:256 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) ib1 Link encap:InfiniBand HWaddr 80:00:00:2E:FE:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00 BROADCAST MULTICAST MTU:4092 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:256 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

但这种使能openibd服务的方法只在本次启动中生效。如果用户需要在系统重新启动后仍保持openibd使能,则需要使用chkconfig命令将其添加到系统服务列表中,如下: # chkconfig --level 235 openibd on # chkconfig --list|grep openibd openibd 0:off 1:off 2:on 3:on 4:off 5:on 6:off

③ 配置IPoIB网络接口

在RedHatEnterpriseLinux5.3系统中配置IPoIB网络接口的方法与配置以太网接口的方法类似,即在/etc/sysconfig/network-scripts路径下创建相应的IB接口配置文件,如ifcfg-ib0、ifcfg-ib1等。这里给出一个对接口ib0进行简单IPoIB配置的例子以供参考。

接口配置文件示例: # cat /etc/sysconfig/network-scripts/ifcfg-ib0 DEVICE=ib0 BOOTPROTO='static' IPADDR=10.0.0.5 NETMASK=255.255.255.0 BROADCAST=10.0.0.255 NETWORK=10.0.0.0 TARTMODE='onboot'

IB接口配置文件创建完成后,需要重新启动接口设备以使新配置生效。这时可以使用ifconfig命令检查接口配置是否已经生效,具体操作如下: [root@p6ihn05 network-scripts]# ifdown ib0 [root@p6ihn05 network-scripts]# ifup ib0 [root@p6ihn05 network-scripts]# ifconfig ib0 ib0 Link encap:InfiniBand HWaddr 80:00:00:2C:FE:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00 inet addr:10.0.0.5 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::202:5500:1022:4a00/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:4092 Metric:1 RX packets:24 errors:0 dropped:0 overruns:0 frame:0 TX packets:63 errors:0 dropped:15 overruns:0 carrier:0 collisions:0 txqueuelen:256 RX bytes:8252 (8.0 KiB) TX bytes:16956 (16.5 KiB)

至此,IPoIB接口配置工作基本完成。如果需要进一步验证其工作是否正常,则可以参考以上步骤配置另一个节点,并在两个节点之间运行ping命令。如果ping成功,则说明IPoIB配置成功。4.4 网页采集

大量的数据散落在互联网中,要分析互联网上的数据,需要先把数据从网络中获取下来,这就需要网络爬虫技术。(10)4.4.1 网络爬虫

1.基本原理

网络爬虫是捜索引擎抓取系统的重要组成部分。爬虫的主要目的是将互联网上的网页下载到本地,形成一个或联网内容的镜像备份。下面主要对爬虫及抓取系统的原理进行基本介绍。

一个通用的网络爬虫的框架如图4.8所示。图4.8

网络爬虫的基本工作流程如下:● 首先选取一部分种子URL。● 将这些URL放入待抓取URL队列。● 从待抓取URL队列中取出待抓取的URL,解析DNS,得到主机的

IP,并将URL对应的网页下载下来,存储到已下载网页库中。此

外,将这些URL放入已抓取URL队列。● 分析已抓取到的网页内容中的其他URL,并且将URL放入待抓取

URL队列,从而进入下一个循环。

从爬虫的角度对互联网进行划分,可以将互联网的所有页面分为5个部分,如图4.9所示。图4.9● 已下载未过期网页。● 已下载已过期网页:抓取到的网页实际上是互联网内容的一个镜

像与备份。互联网是动态变化的,一部分互联网上的内容已经发

生变化,这时,这部分抓取到的网页就已经过期了。● 待下载网页:也就是待抓取URL队列中的那些页面。● 可知网页:还没有抓取下来,也没有在待抓取URL队列中,但是

可以通过对已抓取页面或者待抓取URL对应页面进行分析获取到

URL,这些网页被称为可知网页。● 还有一部分网页爬虫是无法直接抓取下载的,这些网页被称为不

可知网页。

2.抓取策略

在爬虫系统中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为其决定了先抓取哪个页面、后抓取哪个页面。而决定这些URL排列顺序的方法叫作抓取策略。下面重点介绍几种常见的抓取策略。

1)深度优先遍历策略

深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接地跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。以图4.10为例,遍历的路径为:A→F→GE→H→ IBCD。图4.10

2)宽度优先遍历策略

宽度优先遍历策略的基本思路是:将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是说,网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取此网页中链接的所有网页。仍以图4.10为例,遍历的路径为:A→B→C→D→E→FGHI。

3)反向链接数策略

反向链接数是指一个网页被其他网页链接指向的数量。反向链接数表示的是一个网页的内容受到其他人推荐的程度。因此,很多时候搜索引擎的抓取系统会使用这个指标来评价网页的重要程度,从而决定不同网页的抓取顺序。

在真实的网络环境中,由于广告链接、作弊链接的存在,反向链接数不可能完全等同于网页的重要程度。因此,搜索引擎往往考虑一些可靠的反向链接数。

4)PartialPageRank策略

PartialPageRank策略借鉴了PageRank策略的思想:对于已经下载的网页,连同待抓取URL队列中的URL,形成网页集合,计算每个页面的PageRank值;计算完成后,将待抓取URL队列中的URL按照PageRank值的大小排列,并按照该顺序抓取页面。

如果每次只抓取一个页面,则要重新计算PageRank值。一种折中的方案是:每抓取K个页面后,重新计算一次PageRank值。但是这种情况还会产生一个问题:对于已经下载下来的页面中分析出的链接,也就是未知网页部分,暂时是没有PageRank值的。为了解决这个问题,会赋予这些页面一个临时的PageRank值:将这个网页所有入链传递进来的PageRank值进行汇总,这样就形成了该未知页面的PageRank值,从而参与排序。

5)OPIC策略

该策略实际上也是对页面进行重要性打分。在策略开始之前,给所有页面一个相同的初始现金(cash)。当下载了某个页面P之后,将P的现金分摊给所有从P中分析出的链接,并且将P的现金清空。对于待抓取URL队列中的所有页面,按照现金数进行排序。

6)大站优先策略

对于待抓取URL队列中的所有网页,根据所属的网站进行分类;对于待下载页面数多的网站,则优先下载。这种策略也因此被叫作大站优先策略。

3.更新策略

互联网是实时变化的,具有很强的动态性。网页更新策略主要用来决定何时更新之前已经下载的页面。常见的更新策略有以下三种。

1)历史参考策略

试读结束[说明:试读内容隐藏了图片]

下载完整电子书

若在网站上没有找合适的书籍,可联系网站客服获取,各类电子版图书资料皆有。

客服微信:xzh432

登入/注册
卧槽~你还有脸回来
没有账号? 忘记密码?