欢迎光临即时比分90vs有限公司!
栏目
联系我们
公司地址:http://www.laikeirestaurant.com
当前位置: 即时比分90vs > 农民导航 >
发展大数据不能抛弃,如何打造高性能大数据分析平台90vs足球即时比分直播

当前,全国各地都在建设大数据中心,有些偏僻的山区都建立了容量达2PB以上的数据处理中心,许多城市公安部门要求存储3个月以上的高清监控录像。其背后的问题是,这些系统的成本都非常高。
数据挖掘的价值是用成本换来的,不能不计成本、盲目建设大数据系统。什么数据需要保存、要保存多长时间,应当根据可能的价值和所需的成本来决定。大数据系统技术还在研究之中,美国的E级超级计算机系统要求能耗降低到原来的千分之一,计划到2024年才能研制出来。因此,用现在的技术构建的巨型系统,能耗极高。
一味追求数据规模不仅会造成浪费,而且效果未必很好。多个来源小数据的集成融合可能挖掘出单一来源大数据得不到的大价值。因此,应在数据的融合技术上多下功夫,重视数据的开放与共享。所谓数据规模大与应用领域有密切关系,有些领域几个PB的数据未必算大,有些领域可能几十TB已经是很大的规模。
此外,大数据主要难点不是数据量大,而是数据类型多样、要求及时回应和原始数据真假难辨。现有数据库软件无力应对非结构化数据,所以要重视数据融合、数据格式的标准化和数据的互操作。数据质量不高是大数据的特点之一,但尽可能提高原始数据的质量仍然值得重视。比如,脑科学研究的最大问题就是采集的数据可信度差,基于可信度很差的数据难以分析出有价值的结果。
可见,发展大数据不能无止境地追求更大、更多、更快,要走低成本、低能耗、惠及大众、公正法治的良性发展道路,要像现在治理环境污染一样,及早关注大数据可能带来的污染和侵犯隐私等各种弊端。
实际上,发展信息技术的目的是为人服务,检验技术的唯一标准是应用。我国发展大数据产业一定要坚持应用为先的发展战略,坚持应用牵引的技术路线。所谓技术有限、应用无限,各地发展云计算和大数据,一定要通过政策和各种措施调动应用部门和创新企业的积极性,通过跨界的组合创新开拓新的应用,从应用中找出路。
目前流行的大数据定义是当前技术无法处理的数据集合,这种针对未知技术的定义强调大数据不同于数据库等传统技术能对付的小数据,有利于推动基础研究、激励探索新技术,但可能引导大家只重视目前解决不了的问题,如同走路的人想踩着自己身前的影子。其实,目前各行各业碰到的数据处理多数还是小数据问题。我们应重视实际碰到的问题,不管是大数据还是小数据。
统计学家们花了200多年,总结出认知数据过程中的种种陷阱,这些陷阱不会随着数据量的增大而自动填平。大数据中有大量的小数据问题,大数据采集同样会犯小数据采集一样的统计偏差。Google公司的流感预测这两年失灵,就是由于搜索推荐等人为的干预造成统计误差。
因此,我们不要攀比大数据系统的规模,而是要比实际应用效果,比完成同样的事消耗更少的资源和能量。先抓老百姓最需要的大数据应用,因地制宜发展大数据。发展大数据与实现信息化的策略一样:目标要远大、起步要精准、发展要快速。

大数据的浪潮有多迅猛?IDC在2006年估计全世界产生的数据量是0.18ZB(1ZB=100万PB),而今年这个数字已经提升了一个数量级,达到1.8ZB,差不多对应全世界每个人一块100多GB的硬盘。这种增长还在加速,预计2015年将达到近8ZB。目前IT系统的存储能力远远不足,就更不用说深入地挖掘和分析了。
在本文中,百度首席科学家威廉?张、Teradata首席客户官周俊凌、Yahoo!北京全球软件研发中心架构师韩轶平、SAP中国区企业信息管理咨询资深顾问杜韬等四位业内专家,将分享他们在应对海量数据挑战方面的见解和经验。

        大数据分析系统作为一个关键性的系统在各个公司迅速崛起,但是这种海量规模的数据带来了前所未有的性能挑战。同时,如果大数据分析系统无法在第一时间为运营决策提供关键数据,那么这样的大数据分析系统一文不值。本文将从技术无关的角度讨论一些提高性能的方法。下面我们将讨论一些能够应用在大数据分析系统不同阶段的技巧和准则(例如数据提取,数据清洗,处理,存储,以及介绍)。本文应作为一个通用准则,以确保最终的大数据分析平台能满足性能要求。

 


您所在企业的数据量现在达到了什么规模?
威廉?张:这个问题比较容易回答。百度不是一个产品,不仅有搜索引擎,还包括很多社区产品和媒体产品,所以这个数字大概是数百个PB,每天处理的数据大约有几十个PB。我是差不多四年半前加入百度的,所以我比较清楚地记得那时候的规模。与那时相比,现在的数据规模成长比较惊人,大概是那时的500~1000倍。
数据量大并不可怕,问题是要实时处理数据,因为任何的时延都会使服务失去一些优势,从而导致商业经济的下降。我们所做的策略都是针对实时性的,而且今天互联网用户的需求更加实时化,比如说微博、团购、秒杀。
周俊凌:从IDC的数据统计报告来看,数据增长是非常快的。相对于具体的数据量,Teradata更关注数据发展的趋势,并大量投入研究这种发展趋势,包括BI方面的变化和增长模式,这个模式对于我们非常有价值,通过研究这种模式,包括每分钟、每秒钟交易量有多大等这些数据的发掘和建模,数据科学家进行研究和探讨,把这些技术应用到生产系统里面,对企业发挥作用。
韩轶平:Yahoo!的主要云计算平台Hadoop现在有34个集群,总数超过3万台机器,最大的集群是4000台左右,总存储容量超过100PB。这个数量级可以说并不大,主要原因在于我们最近将很多精力放在处理用户隐私性和数据安全性上,因为按照欧盟的规定,Yahoo!不能存储超过一年的数据,所以我们的应对措施就是:不保存原始数据,但做很深入的数据挖掘,挖掘出真正蕴含的有价值的信息,把这些信息保存下来。
杜韬:SAP作为企业级应用提供商,更关注客户的数据量,而我们的客户有许多数据密集型企业,比如电信、金融、政府、零售等,数据量级从几个TB到数百TB。SAP在德国总部的数据中心有3万台服务器,数据量大概是15PB,主要为客户提供服务。我们正在帮助客户将内部应用迁移到我们的数据中心服务平台,这也意味着越来越多的客户数据会存在我们这儿。
面对大数据,您是怎样进行处理分析的?
杜韬:一方面在数据中心,我们使用了标准的虚拟化以及分布式存储;另一方面,我们推出了内存计算技术,用以应对数据应用和分析的挑战。传统的架构存在很大的瓶颈,磁盘读取是以毫秒,而内存读取则是纳秒。因此,我们将以前需要在应用层做的计算分析,比如预测分析或者大量运算,都放到内存里操作,从而实现性能提升,帮助用户充分利用数据。
韩轶平:对Yahoo!的情况,我想分三个部分来说明:数据采集、数据存储和数据处理。
在数据采集方面,我们建立了一个遍布Yahoo!几个数据中心、几十万台机器的实时搜集数据系统,该系统特点是一个主干道负责把数据经过过滤、清理以后,进行整合,并且在高可靠性的情况下,把它放到Hadoop平台。虽然相对来说精度很高、效果很好,但速度会慢一些。为了满足威廉?张所说实时性的需求,还有一个旁路系统,旁路系统在秒级能够把数据汇到主干道上,这是数据采集的部分。
在数据存储方面,基本上以HDFS为核心。在数据处理方面,主要技术是Hadoop、MapReduce以及我们自己开发的Pig。目前,我们有超过一半数据处理引擎是用Pig完成的。
周俊凌:Teradata一直在持续创新传统的企业级数据仓库产品线,在对接大数据时代的同时,继续传统的BI领域,包括提高数据处理的能力,从而更容易适应大数据管理。例如,通过数据访问频率高低确认数据温度,进行数据压缩,适应大数据的分析要求,使数据管理更容易。
我们有适应超高规模数据容量要求的硬件平台产品Teradata 1000,可以压缩35PB的数据。特别适用一些结构性数据和非结构性数据的分析,同时开发了很多能够进行数据统计和分析的软件包,包括将Hadoop等架构整合到Teradata数据仓库之中,可以基于目前的Teradata企业级数据仓库接口使用。
我们提供基于云的架构,能够使用Amazon EC2,为客户提供安全的存储产品,用来存储公司防火墙以外的、存储在云端的数据。我们刚刚收购了Aster Data公司,它有一些非常好的工具,适用于Hadoop、MapReduce的一些应用。
威廉?张:各互联网企业在云计算技术方面的应用都差不多,比如说百度也用了Hadoop,我提几个比较有特点的地方。
第一个是大搜索,即不仅是把网页抓过来,建立极其庞大的索引,而且为了使数据做到准实时或者更快速的更新,进行一些优化,比如根据地域分布和重要性分布,放在南方或者北方的机房里,主要还是根据数据应用制订的策略。另外就是采用数据流技术。
第二个是机器学习算法。在科技领域里,机器学习以前更多的是对一台服务器内存里的数据进行高复杂的计算,可能要跑很长时间。而在百度,机器学习应用于所有地方,比如判断用户需求,从用户行为反馈中得到我们应该推荐什么样的内容、匹配什么样的广告等,时效性非常高。可以称得上是增量型、大规模的机器学习方法。
此外,互联网应用要继续发展,最关键还是找到更有价值的数据,即不管数据来自何方,都要按照价值来决定如何处理它。
您怎样看待层出不穷的NoSQL技术?
杜韬:我一直认为,存在的就是合理的,NoSQL的产生和演进也是因为我们现有的应用需求所导致。当前在大并发量、海量数据的高效读写等方面,对关系型数据库提出了更高的要求,而NoSQL在这方面有独特的价值和优势。
当然,这并不是说NoSQL的出现就代表着关系型数据库的世界末日,因为对于一些应用,特别是企业级应用,对于事务的一致性以及读写的实时性等各方面有很高的要求,而关系型数据库在这些年的发展中积累了自己的优势。
因此,我很认同NoSQL是“Not Only SQL”的说法,相信在未来关系型数据库和NoSQL会并存甚至是相互融合。
韩轶平:NoSQL是一个很宽泛的概念。在Yahoo!,虽然NoSQL说得不多,但用的NoSQL工具非常多,我们的Key-Value数据库等各种各样的系统,都属于NoSQL框架。至于说NoSQL和SQL之间的关系,因为很多场合需要ACID,也就需要NoSQL的东西,而NoSQL之所以会出现,就像我经常说的“上帝是公平的”,当有一个需求出现时必须放弃另一个东西。我们的很多需求,比如大数据量、高分布性,当有了这些需求以后另一个需求可能成为新的瓶颈。事实上,对我们来说,互联网行业在很多应用中并不需要一致性。当把需求放宽时,自然能够满足另一些需求。
怎样挖掘数据中的价值?
威廉?张:我举一个直观的匹配广告的例子,它包括两类数据:一类是广告库,即广告内容信息和广告客户信息,这类信息很适合于传统数据库;另一类信息是用户看到广告之后的一切行为,经历了日积月累,可能会有几百万亿的用户行为。这两种数据可以相结合,经过机器学习算法就能产生价值。显然,第二种信息更重要,因为它能给用户提供想要的信息,比如搜索一个词,可以利用所有用户在他之前、在他之后的群体智能、群体行为,判定哪一类的信息最重要、最优质,哪一类信息可能是作弊信息,然后经过反馈机制,把最好的内容提供给用户,甚至推荐相关的一些搜索、查询信息。总而言之,对任何企业来说,数据是命根子;对云计算来说,数据处理就是云数据中心或者云计算存在的理由。
韩轶平:我们工作之余经常开玩笑说:从数据中能挖出的东西,不一定是钱,更重要的是用户体验,对互联网公司来说,数据就是一切。
Yahoo!不仅仅是搜索引擎,也有很多在美国各领域中排名第一的网站。我们做的很多工作,比如新闻网站信息,都是根据新闻的相关性和大家的兴趣推荐的,我们希望根据每一个用户自己的兴趣,甚至每一个用户此时此刻的兴趣,进行推荐。Yahoo!新闻的推荐系统,是把Yahoo!所有的数据搜集起来,用户在Yahoo!搜索上的所有行为都搜集到一起,做深度挖掘和个性化,对每一个用户都进行分析和推荐,没有这些数据我们不可能为客户提供体验,数据对我们来说就是一切。
杜韬:既然各位是从互联网的角度来看数据的价值,那么我就从企业的角度来分享一下。
智能电网现在欧洲已经做到了终端,也就是所谓的智能电表。在德国,为了鼓励利用太阳能,会在家庭安装太阳能,除了卖电给你,当你的太阳能有多余电的时候还可以买回来。通过电网收集每隔五分钟或十分钟收集一次数据,收集来的这些数据可以用来预测客户的用电习惯等,从而推断出在未来2~3个月时间里,整个电网大概需要多少电。有了这个预测后,就可以向发电或者供电企业购买一定数量的电。因为电有点像期货一样,如果提前买就会比较便宜,买现货就比较贵。通过这个预测后,可以降低采购成本。
另一个例子更偏我个人的兴趣。丹?布朗的《失落的秘符》一书讲到,如果把很多人的精神集中在一个点,能够移动物体。当然这个我们无从考证,但我们在网上搜索关键词、敏感词时,就可以判断出某件事情的公众态度。有一些新的业务模式,比如做一个网络广告投放评估公司,利用这样的技术评估网络广告的效果,我觉得也许是未来的业务价值产生点。
海量数据时代对企业和技术人员带来了哪些挑战?
韩轶平:以前我们都说自己是软件工程师,我们这个行业也经常被叫做软件行业,但我认为我们是真正的Information Technology行业。对大多数人来说,现在最重要的一点是转变观念,从Code/Program观念转变成Data观念,在做任何设计和开发时,要把Data放在第一位。
杜韬:海量数据一直在增长,但是我们应该想办法控制下来,未来的趋势应该放在怎样缩小海量数据上,而不是任凭它扩张。此外,海量数据时代对中国来说是一次引领世界IT业的机会。
周俊凌:在云计算时代,业务数据与云紧密结合在一起,提供业务开发的能力,我们从中学到了很多新的东西,有一些东西不再是自己去存储和开发,而是都放在云里面存储。技术产品推向市场的方式与以往相比,发生了很大变化。云的这样一种环境也给数据库提供商带来很多技术上的挑战,例如如何保证存储的安全性,包括身份识别的健全。这关系到数据的存储地方,例如现在发货的数据都是放在全球任何一个地方,不是放在某一个国家里面,这就带来关于数据主权的问题,可能有一些国家和政府不允许把数据放在国家某些地方,这都是一些挑战,需要从技术上解决安全等问题。
威廉?张:这里我浅谈一下两点感受。
首先,数据管理是DBA的一项重要本领,而高校的计算机专业教育里没有特别重视数据程序员,并没有数据管理员;其次,MapReduce并不是一个新概念,早在30~40年前当计算机能力还超小的时候,函数式编程语言就出现了,但至今大学里还没有开设MapReduce或者类似数据处理的课程,也基本上没有人听过这些东西。
未来将所有人的生活经验数据放在云里,这个大概可以实现,但如果解决不好数据安全性问题的话,那么距离最终的实现就会很远。我期待云计算变成云知识、云智能,而不仅仅是计算的工具。建立数据整合分享是云计算成功的必要和充分条件。

1. 大数据是什么?

大数据是最近IT界最常用的术语之一。然而对大数据的定义也不尽相同,所有已知的论点例如结构化的和非结构化、大规模的数据等等都不够完整。大数据系统通常被认为具有数据的五个主要特征,通常称为数据的5 Vs。分别是大规模,多样性,高效性、准确性和价值性。

据Gartner称,大规模可以被定义为“在本(地)机数据采集和处理技术能力不足以为用户带来商业价值。当现有的技术能够针对性的进行改造后来处理这种规模的数据就可以说是一个成功的大数据解决方案。

这种大规模的数据没将不仅仅是来自于现有的数据源,同时也会来自于一些新兴的数据源,例如常规(手持、工业)设备,日志,汽车等,当然包括结构化的和非结构化的数据。

据Gartner称,多样性可以定义如下:“高度变异的信息资产,在生产和消费时不进行严格定义的包括多种形式、类型和结构的组合。同时还包括以前的历史数据,由于技术的变革历史数据同样也成为多样性数据之一 “。

高效性可以被定义为来自不同源的数据到达的速度。从各种设备,传感器和其他有组织和无组织的数据流都在不断进入IT系统。由此,实时分析和对于该数据的解释(展示)的能力也应该随之增加。

根据Gartner,高效性可以被定义如下:“高速的数据流I/O(生产和消费),但主要聚焦在一个数据集内或多个数据集之间的数据生产的速率可变上”。

准确性,或真实性或叫做精度是数据的另一个重要组成方面。要做出正确的商业决策,当务之急是在数据上进行的所有分析必须是正确和准确(精确)的。

大数据系统可以提供巨大的商业价值。像电信,金融,电子商务,社交媒体等,已经认识到他们的数据是一个潜在的巨大的商机。他们可以预测用户行为,并推荐相关产品,提供危险交易预警服务,等等。

与其他IT系统一样,性能是大数据系统获得成功的关键。本文的中心主旨是要说明如何让大数据系统保证其性能。

2. 大数据系统应包含的功能模块

大数据系统应该包含的功能模块,首先是能够从多种数据源获取数据的功能,数据的预处理(例如,清洗,验证等),存储数据,数据处理、数据分析等(例如做预测分析,生成在线使用建议等等),最后呈现和可视化的总结、汇总结果。

下图描述了大数据系统的这些高层次的组件:

90vs足球即时比分直播 1

本节的其余部分简要说明了每个组分,如图1。

2.1 各种各样的数据源

当今的IT生态系统,需要对各种不同种类来源的数据进行分析。这些来源可能是从在线Web应用程序,批量上传或feed,流媒体直播数据,来自工业、手持、家居传感的任何东西等等。

显然从不同数据源获取的数据具有不同的格式、使用不同的协议。例如,在线的Web应用程序可能会使用SOAP / XML格式通过HTTP发送数据,feed可能会来自于CSV文件,其他设备则可能使用MQTT通信协议。

由于这些单独的系统的性能是不在大数据系统的控制范围之内,并且通常这些系统都是外部应用程序,由第三方供应商或团队提供并维护,所以本文将不会在深入到这些系统的性能分析中去。

2.2 数据采集

第一步,获取数据。这个过程包括分析,验证,清洗,转换,去重,然后存到适合你们公司的一个持久化设备中(硬盘、存储、云等)。

在下面的章节中,本文将重点介绍一些关于如何获取数据方面的非常重要的技巧。请注意,本文将不讨论各种数据采集技术的优缺点。

2.3 存储数据

第二步,一旦数据进入大数据系统,清洗,并转化为所需格式时,这些过程都将在数据存储到一个合适的持久化层中进行。

在下面的章节中,本文将介绍一些存储方面的最佳实践(包括逻辑上和物理上)。在本文结尾也会讨论一部分涉及数据安全方面的问题。

2.4 数据处理和分析

第三步,在这一阶段中的一部分干净数据是去规范化的,包括对一些相关的数据集的数据进行一些排序,在规定的时间间隔内进行数据结果归集,执行机器学习算法,预测分析等。

在下面的章节中,本文将针对大数据系统性能优化介绍一些进行数据处理和分析的最佳实践。

2.5 数据的可视化和数据展示

最后一个步骤,展示经过各个不同分析算法处理过的数据结果。该步骤包括从预先计算汇总的结果(或其他类似数据集)中的读取和用一种友好界面或者表格(图表等等)的形式展示出来。这样便于对于数据分析结果的理解。

3. 数据采集中的性能技巧

数据采集是各种来自不同数据源的数据进入大数据系统的第一步。这个步骤的性能将会直接决定在一个给定的时间段内大数据系统能够处理的数据量的能力。

数据采集过程基于对该系统的个性化需求,但一些常用执行的步骤是 - 解析传入数据,做必要的验证,数据清晰,例如数据去重,转换格式,并将其存储到某种持久层。

涉及数据采集过程的逻辑步骤示如下图所示:

90vs足球即时比分直播 2

下面是一些性能方面的技巧:

●来自不同数据源的传输应该是异步的。可以使用文件来传输、或者使用面向消息的(MoM)中间件来实现。由于数据异步传输,所以数据采集过程的吞吐量可以大大高于大数据系统的处理能力。 异步数据传输同样可以在大数据系统和不同的数据源之间进行解耦。大数据基础架构设计使得其很容易进行动态伸缩,数据采集的峰值流量对于大数据系统来说算是安全的。

●如果数据是直接从一些外部数据库中抽取的,确保拉取数据是使用批量的方式。

●如果数据是从feed file解析,请务必使用合适的解析器。例如,如果从一个XML文件中读取也有不同的解析器像JDOM,SAX,DOM等。类似地,对于CSV,JSON和其它这样的格式,多个解析器和API是可供选择。选择能够符合需求的性能最好的。

●优先使用内置的验证解决方案。大多数解析/验证工作流程的通常运行在服务器环境(ESB /应用服务器)中。大部分的场景基本上都有现成的标准校验工具。在大多数的情况下,这些标准的现成的工具一般来说要比你自己开发的工具性能要好很多。

●类似地,如果数据XML格式的,优先使用XML(XSD)用于验证。

●即使解析器或者校等流程使用自定义的脚本来完成,例如使用java优先还是应该使用内置的函数库或者开发框架。在大多数的情况下通常会比你开发任何自定义代码快得多。

●尽量提前滤掉无效数据,以便后续的处理流程都不用在无效数据上浪费过多的计算能力。

●大多数系统处理无效数据的做法通常是存放在一个专门的表中,请在系统建设之初考虑这部分的数据库存储和其他额外的存储开销。

●如果来自数据源的数据需要清洗,例如去掉一些不需要的信息,尽量保持所有数据源的抽取程序版本一致,确保一次处理的是一个大批量的数据,而不是一条记录一条记录的来处理。一般来说数据清洗需要进行表关联。数据清洗中需要用到的静态数据关联一次,并且一次处理一个很大的批量就能够大幅提高数据处理效率。

●数据去重非常重要这个过程决定了主键的是由哪些字段构成。通常主键都是时间戳或者id等可以追加的类型。一般情况下,每条记录都可能根据主键进行索引来更新,所以最好能够让主键简单一些,以保证在更新的时候检索的性能。

●来自多个源接收的数据可以是不同的格式。有时,需要进行数据移植,使接收到的数据从多种格式转化成一种或一组标准格式。

●和解析过程一样,我们建议使用内置的工具,相比于你自己从零开发的工具性能会提高很多。

●数据移植的过程一般是数据处理过程中最复杂、最紧急、消耗资源最多的一步。因此,确保在这一过程中尽可能多的使用并行计算。

●一旦所有的数据采集的上述活动完成后,转换后的数据通常存储在某些持久层,以便以后分析处理,综述,聚合等使用。

●多种技术解决方案的存在是为了处理这种持久(RDBMS,NoSQL的分布式文件系统,如Hadoop和等)。

●谨慎选择一个能够最大限度的满足需求的解决方案。

4. 数据存储中的性能技巧

一旦所有的数据采集步骤完成后,数据将进入持久层。

在本节中将讨论一些与数据数据存储性能相关的技巧包括物理存储优化和逻辑存储结构(数据模型)。这些技巧适用于所有的数据处理过程,无论是一些解析函数生的或最终输出的数据还是预计算的汇总数据等。

●首先选择数据范式。您对数据的建模方式对性能有直接的影响,例如像数据冗余,磁盘存储容量等方面。对于一些简单的文件导入数据库中的场景,你也许需要保持数据原始的格式,对于另外一些场景,如执行一些分析计算聚集等,你可能不需要将数据范式化。

●大多数的大数据系统使用NoSQL数据库替代RDBMS处理数据。

●不同的NoSQL数据库适用不同的场景,一部分在select时性能更好,有些是在插入或者更新性能更好。

●数据库分为行存储和列存储。

●具体的数据库选型依赖于你的具体需求(例如,你的应用程序的数据库读写比)。

●同样每个数据库都会根据不同的配置从而控制这些数据库用于数据库复制备份或者严格保持数据一致性

●这些设置会直接影响数据库性能。在数据库技术选型前一定要注意。

●压缩率、缓冲池、超时的大小,和缓存的对于不同的NoSQL数据库来说配置都是不同的,同时对数据库性能的影响也是不一样的。

●数据Sharding和分区是这些数据库的另一个非常重要的功能。数据Sharding的方式能够对系统的性能产生巨大的影响,所以在数据Sharding和分区时请谨慎选择。

●并非所有的NoSQL数据库都内置了支持连接,排序,汇总,过滤器,索引等。

●如果有需要还是建议使用内置的类似功能,因为自己开发的还是不灵。

●NoSQLs内置了压缩、编解码器和数据移植工具。如果这些可以满足您的部分需求,那么优先选择使用这些内置的功能。这些工具可以执行各种各样的任务,如格式转换、压缩数据等,使用内置的工具不仅能够带来更好的性能还可以降低网络的使用率。

●许多NoSQL数据库支持多种类型的文件系统。其中包括本地文件系统,分布式文件系统,甚至基于云的存储解决方案。

●如果在交互式需求上有严格的要求,否则还是尽量尝试使用NoSQL本地(内置)文件系统(例如HBase 使用HDFS)。

●这是因为,如果使用一些外部文件系统/格式,则需要对数据进行相应的编解码/数据移植。它将在整个读/写过程中增加原本不必要的冗余处理。

●大数据系统的数据模型一般来说需要根据需求用例来综合设计。与此形成鲜明对比的是RDMBS数据建模技术基本都是设计成为一个通用的模型,用外键和表之间的关系用来描述数据实体与现实世界之间的交互。

●在硬件一级,本地RAID模式也许不太适用。请考虑使用SAN存储。

5. 数据处理分析中的性能技巧

数据处理和分析是一个大数据系统的核心。像聚合,预测,聚集,和其它这样的逻辑操作都需要在这一步完成。

本节讨论一些数据处理性能方面的技巧。需要注意的是大数据系统架构有两个组成部分,实时数据流处理和批量数据处理。本节涵盖数据处理的各个方面。

●在细节评估和数据格式和模型后选择适当的数据处理框架。

●其中一些框架适用于批量数据处理,而另外一些适用于实时数据处理。

●同样一些框架使用内存模式,另外一些是基于磁盘io处理模式。

●有些框架擅长高度并行计算,这样能够大大提高数据效率。

●基于内存的框架性能明显优于基于磁盘io的框架,但是同时成本也可想而知。

●概括地说,当务之急是选择一个能够满足需求的框架。否则就有可能既无法满足功能需求也无法满足非功能需求,当然也包括性能需求。

●一些这些框架将数据划分成较小的块。这些小数据块由各个作业独立处理。协调器管理所有这些独立的子作业

●在数据分块是需要当心。

●该数据快越小,就会产生越多的作业,这样就会增加系统初始化作业和清理作业的负担。

●如果数据快太大,数据传输可能需要很长时间才能完成。这也可能导致资源利用不均衡,长时间在一台服务器上运行一个大作业,而其他服务器就会等待。

●不要忘了查看一个任务的作业总数。在必要时调整这个参数。

●最好实时监控数据块的传输。在本机机型io的效率会更高,这么做也会带来一个副作用就是需要将数据块的冗余参数提高(一般hadoop默认是3份)这样又会反作用使得系统性能下降。

●此外,实时数据流需要与批量数据处理的结果进行合并。设计系统时尽量减少对其他作业的影响。

●大多数情况下同一数据集需要经过多次计算。这种情况可能是由于数据抓取等初始步骤就有报错,或者某些业务流程发生变化,值得一提的是旧数据也是如此。设计系统时需要注意这个地方的容错。

●这意味着你可能需要存储原始数据的时间较长,因此需要更多的存储。

●数据结果输出后应该保存成用户期望看到的格式。例如,如果最终的结果是用户要求按照每周的时间序列汇总输出,那么你就要将结果以周为单位进行汇总保存。

●为了达到这个目标,大数据系统的数据库建模就要在满足用例的前提下进行。例如,大数据系统经常会输出一些结构化的数据表,这样在展示输出上就有很大的优势。

●更常见的是,这可能会这将会让用户感觉到性能问题。例如用户只需要上周的数据汇总结果,如果在数据规模较大的时候按照每周来汇总数据,这样就会大大降低数据处理能力。

●一些框架提供了大数据查询懒评价功能。在数据没有在其他地方被使用时效果不错。

●实时监控系统的性能,这样能够帮助你预估作业的完成时间。

6. 数据可视化和展示中的性能技巧

精心设计的高性能大数据系统通过对数据的深入分析,能够提供有价值战略指导。这就是可视化的用武之地。良好的可视化帮助用户获取数据的多维度透视视图。

需要注意的是传统的BI和报告工具,或用于构建自定义报表系统无法大规模扩展满足大数据系统的可视化需求。同时,许多COTS可视化工具现已上市。

本文将不会对这些个别工具如何进行调节,而是聚焦在一些通用的技术,帮助您能打造可视化层。

●确保可视化层显示的数据都是从最后的汇总输出表中取得的数据。这些总结表可以根据时间短进行汇总,建议使用分类或者用例进行汇总。这么做可以避免直接从可视化层读取整个原始数据。

●这不仅最大限度地减少数据传输,而且当用户在线查看在报告时还有助于避免性能卡顿问题。

●重分利用大化可视化工具的缓存。缓存可以对可视化层的整体性能产生非常不错的影响。

●物化视图是可以提高性能的另一个重要的技术。

●大部分可视化工具允许通过增加线程数来提高请求响应的速度。如果资源足够、访问量较大那么这是提高系统性能的好办法。

●尽量提前将数据进行预处理,如果一些数据必须在运行时计算请将运行时计算简化到最小。

●可视化工具可以按照各种各样的展示方法对应不同的读取策略。其中一些是离线模式、提取模式或者在线连接模式。每种服务模式都是针对不同场景设计的。

●同样,一些工具可以进行增量数据同步。这最大限度地减少了数据传输,并将整个可视化过程固化下来。

●保持像图形,图表等使用最小的尺寸。

●大多数可视化框架和工具的使用可缩放矢量图形(SVG)。使用SVG复杂的布局可能会产生严重的性能影响。

7. 数据安全以及对于性能的影响

像任何IT系统一样安全性要求也对大数据系统的性能有很大的影响。在本节中,我们讨论一下安全对大数据平台性能的影响。

- 首先确保所有的数据源都是经过认证的。即使所有的数据源都是安全的,并且没有针对安全方面的需求,那么你可以灵活设计一个安全模块来配置实现。

- 数据进过一次认证,那么就不要进行二次认证。如果实在需要进行二次认证,那么使用一些类似于token的技术保存下来以便后续继续使用。这将节省数据一遍遍认证的开销。

- 您可能需要支持其他的认证方式,例如基于PKI解决方案或Kerberos。每一个都有不同的性能指标,在最终方案确定前需要将其考虑进去。

- 通常情况下数据压缩后进入大数据处理系统。这么做好处非常明显不细说。

- 针对不同算法的效率、对cpu的使用量你需要进行比较来选出一个传输量、cpu使用量等方面均衡的压缩算法。

- 同样,评估加密逻辑和算法,然后再选择。

- 明智的做法是敏感信息始终进行限制。

- 在审计跟踪表或登录时您可能需要维护记录或类似的访问,更新等不同的活动记录。这可能需要根据不同的监管策略和用户需求个性化的进行设计和修改。

- 注意,这种需求不仅增加了数据处理的复杂度,但会增加存储成本。

- 尽量使用下层提供的安全技术,例如操作系统、数据库等。这些安全解决方案会比你自己设计开发性能要好很多。

8. 总结

本文介绍了各种性能方面的技巧,这些技术性的指导可以作为打造大数据分析平台的一般准则。大数据分析平台非常复杂,为了满足这种类型系统的性能需求,需要我们从开始建设的时候进行考量。

本文介绍的技术准则可以用在大数据平台建设的各个不同阶段,包括安全如何影响大数据分析平台的性能。


来源:Building High Performance Big Data Analytics Systems   

作者:Rohit Dhall