⑴ 部署大数据业务七步走
部署大数据业务七步走
对于大数据,有三个重要的事实。首先,它并不是新趋势。亚马逊、微软和谷歌自上世纪90年代就开始进行大数据工作。事实上,几十年来,很多公司都一直在挖掘数据。可能由于当时只有资金雄厚的大型公司才能够进行大数据研究,但大数据确实早已存在。现在,基于廉价的计算和存储能力以及新工具和技术,几乎每个人都可以使用高级数据挖掘技术和算法了。
很多人认为大数据只是商业智能(BI)的新名称,虽然这两者有相似之处,但大数据超出了BI的范畴。
第二个事实:“大”是相对的。现在各行业各组织确实正面对创纪录水平的数据增长。据IDC称,我们每秒创造超过58 TB数据,到2020年,将拥有超过35ZB的存储数据。然而,大数据并不一定是巨大的,大数据并不在于其规模,而在于你需要如何处理它。拥有100 TB的小公司可能也存在大数据问题,因为他们需要提取、分析数据,并作出决策。
第三,大数据处理中使用的数据的定义是广泛的,它可以包含结构化和非结构化数据。对于一些公司来说,最重要的是大数据的元数据,或者关于数据的数据。
麦肯锡将大数据定义为“其规模超出传统数据库软件的捕捉、存储、管理和分析能力的数据集”,笔者补充了这一点:“这些数据集需要大量运行在数百甚至数千台服务器(云)的并行软件(系统)来处理。”
以下是大数据成功的7个步骤:
第1步:承认存在问题。 这往往是最难的一步。10年前,我们拒绝承认我们的网络已不再受防火墙和代理服务器设置的保护,而我们不得不为员工远程访问开放基础设施并拥抱互联网。对于大数据,IT领导者需要评估其数据情况:
● 你的数据集让你不堪重负吗?
● 你不知道所有数据的位置?
● 你(或者企业领导者)没有从你的数据中得到所需的信息?
● 企业领导没有基于数据来做决策?
● 有可能提高IT在企业政策和战略决策中的相关性吗?
如果你像大多数公司一样,部分或者所有这些问题的答案都是肯定的,那么是时候控制你的数据,并从中挖掘出情报以提供给领导层做决定。
第2步:认识到大数据带来的大机会。 我们总是被告知要紧密联系业务,“业务技术”这一说法已存在多年,但我们总是很难看到最新的软件和流程如何直接影响收入或者全球经济增长。而大数据却可以。为什么?因为信息就是力量,企业领导需要数据中挖掘出的信息来帮助企业竞争和发展。员工、客户和市场产生的大量数据让整个企业(从销售到营销部门)都不堪重负。而大数据能够为你提供简洁且实时的价值信息,帮助增加收入。[page]
第3步:制定大数据计划。 与任何计划一样,你开始就应该想到结果。企业需要知道什么?他们需要回答的问题是什么?在你开始使用Hadoop前,解决这些问题,并签订联合协议。然后按照下列步骤操作(每个步骤可能需要数周或者数月):
1、隔离属于“大数据”的部分数据
2、分离“产品”大数据和“公司”大数据,例如人力资源分析需要的员工数据和电子商务平台的客户或产品搜索数据需要分离
3、认识和了解你的数据的波峰和波谷
4、了解哪些技术允许实时(或接近实时)大数据处理
5、确定关键的解决方案/供应商
6、从小事做起,评估与发展-先做一个项目,让你可以快速展示成果和ROI,然后转移到下一个大数据项目
7、继续分析、调整和输入-大数据是灵活的,需要随着数据、情报和企业要求的变化进行调整
第4步:利用分布式系统。大数据要求我们转换对系统和基础设施的想法。正如虚拟化从根本上改变了我们利用服务器和应用程序的方式,分布式系统和处理使我们能够管理大数据,因为分布式架构允许我们将问题分解成很多小任务,然后将这些任务分配到多个系统。好消息是,我们拥有了越来越多的攻击和架构框架可以利用,包括Cassandra、Hadoop、VMware、Red Hat等。分布式系统并不新鲜,但大数据将其带入到全新的水平,分布式方法包括:
● 多租户架构
● 分布式数据库
● 虚拟化
● 多线程
● 多核心CPU
● 并行处理
● 分布式文件系统
● 分布式负载平衡
● RAID算法
第5步:从分布式到分散式。 对大多数公司来说,这是真正的范式转变,这也是大数据和云计算结合的地方,鉴于互联网是世界上最大的分布式和分散的系统,我们应该更加充分地利用互联网来实现大数据。
我们很喜欢分布式实例或者计算处理,但分散式往往有种失去控制的感觉。这有必要吗?对于大数据,采用分散式做法是必要的,因为由于过度和孤立的服务,所有未使用的实例和存储容量都将浪费。
更重要的是,单靠分布式组件无法让我们跟上数据增长的步伐。IDC估计,到2020年,产生的数据和数据中心容量之间的差距将达到60%.
然而,部分原因在于我们没有充分利用我们已经拥有的容量。Gartner估计,大多数计算机、服务器和网络只运行了30%的容量以准备好应对峰值或者未来增长。虽然我们可能永远不会以90%或者100%的容量运行,但我们可以更好地利用现有的容量,节省数百万美元,提高现有基础设施的总体拥有成本(TCO)。
分散式方法的主要特点:
● 没有中央瓶颈
● 大量的能力
● 有机的,需求推动容量增长
● 充分利用现有的基础设施和边缘设备
● 信息共享
● 假定每个人/每一个节点是“不可信任的”
● 地理分布:
○ 所有权和参与
○ 成本
○ 管理开销
○ 风险
分散式方法存在很多很好的例子,其中最知名的就是开源运动。
分散式方法还有两个新例子,笔者定义为分散式云系统:CloudStack和OpenStack.我们仍然位于分散式方法的早期阶段,但随着数据继续增长,这将是未来几年的重要趋势。[page]
第6步:雇佣/培养合适的人才和技能。 云计算并不意味着更少的IT工作,但云计算和大数据的出现却是意味着我们需要发展我们的技能和培养人才。在大数据世界,数据库管理员等现有岗位变得更加重要。你还需要培养和招聘的其他职位包括:
● 数据科学家
● 架构师
● 随机理论师(算法)
● 业务分析师
● UX/UI专家
其中一些职位似乎是合乎逻辑的,但对于业务分析师和UX/UI专家,传统上不属于IT部门,你可以将这些人员安排在生产管理中,而在大数据解决方案中,他们需要携手开发和运营团队。这是因为你不能直接将大数据信息交给业务方面,使用图表和易于理解的分析是关键。
此外,如果你还没有整合开发/运营团队来更好地管理云计算部署,那么现在可以这样做了。这两个团队必须携手合作来实现任何云计算或者大数据战略。
第7步:通过大数据来利用数据。正如IT职位可能开始更倾向于业务,IT需要改变其度量的方式。你的团队中的每个人都应该热衷于追踪和记录关键性能指标(KPI),这些应该符合业务指标,而不只是及时发布和交付高质量代码。技术团队的每个人都应该有明确的指标,并努力寻找新方法来提高指标结果。
大数据可能不是我们所有人想要的答案,但它确实给IT创造了帮助企业提高收入的机会。
⑵ 大数据平台是什么什么时候需要大数据平台如何建立大数据平台
首先我们要了解java语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。
Java :只要了解一些基础即可,做大数据不需要很深的Java 技术,学java SE 就相当于有学习大数据基础。
Linux:因为大数据相关软件都是在Linux上运行的,所以Linux要学习的扎实一些,学好Linux对你快速掌握大数据相关技术会有很大的帮助,能让你更好的理解hadoop、hive、hbase、spark等大数据软件的运行环境和网络环境配置,能少踩很多坑,学会shell就能看懂脚本这样能更容易理解和配置大数据集群。还能让你对以后新出的大数据技术学习起来更快。
Hadoop:这是现在流行的大数据处理平台几乎已经成为大数据的代名词,所以这个是必学的。Hadoop里面包括几个组件HDFS、MapRece和YARN,HDFS是存储数据的地方就像我们电脑的硬盘一样文件都存储在这个上面,MapRece是对数据进行处理计算的,它有个特点就是不管多大的数据只要给它时间它就能把数据跑完,但是时间可能不是很快所以它叫数据的批处理。
Zookeeper:这是个万金油,安装Hadoop的HA的时候就会用到它,以后的Hbase也会用到它。它一般用来存放一些相互协作的信息,这些信息比较小一般不会超过1M,都是使用它的软件对它有依赖,对于我们个人来讲只需要把它安装正确,让它正常的run起来就可以了。
Mysql:我们学习完大数据的处理了,接下来学习学习小数据的处理工具mysql数据库,因为一会装hive的时候要用到,mysql需要掌握到什么层度那?你能在Linux上把它安装好,运行起来,会配置简单的权限,修改root的密码,创建数据库。这里主要的是学习SQL的语法,因为hive的语法和这个非常相似。
Sqoop:这个是用于把Mysql里的数据导入到Hadoop里的。当然你也可以不用这个,直接把Mysql数据表导出成文件再放到HDFS上也是一样的,当然生产环境中使用要注意Mysql的压力。
Hive:这个东西对于会SQL语法的来说就是神器,它能让你处理大数据变的很简单,不会再费劲的编写MapRece程序。有的人说Pig那?它和Pig差不多掌握一个就可以了。
Oozie:既然学会Hive了,我相信你一定需要这个东西,它可以帮你管理你的Hive或者MapRece、Spark脚本,还能检查你的程序是否执行正确,出错了给你发报警并能帮你重试程序,最重要的是还能帮你配置任务的依赖关系。我相信你一定会喜欢上它的,不然你看着那一大堆脚本,和密密麻麻的crond是不是有种想屎的感觉。
Hbase:这是Hadoop生态体系中的NOSQL数据库,他的数据是按照key和value的形式存储的并且key是唯一的,所以它能用来做数据的排重,它与MYSQL相比能存储的数据量大很多。所以他常被用于大数据处理完成之后的存储目的地。
Kafka:这是个比较好用的队列工具,队列是干吗的?排队买票你知道不?数据多了同样也需要排队处理,这样与你协作的其它同学不会叫起来,你干吗给我这么多的数据(比如好几百G的文件)我怎么处理得过来,你别怪他因为他不是搞大数据的,你可以跟他讲我把数据放在队列里你使用的时候一个个拿,这样他就不在抱怨了马上灰流流的去优化他的程序去了,因为处理不过来就是他的事情。而不是你给的问题。当然我们也可以利用这个工具来做线上实时数据的入库或入HDFS,这时你可以与一个叫Flume的工具配合使用,它是专门用来提供对数据进行简单处理,并写到各种数据接受方(比如Kafka)的。
Spark:它是用来弥补基于MapRece处理数据速度上的缺点,它的特点是把数据装载到内存中计算而不是去读慢的要死进化还特别慢的硬盘。特别适合做迭代运算,所以算法流们特别稀饭它。它是用scala编写的。Java语言或者Scala都可以操作它,因为它们都是用JVM的。
⑶ 为什么当下众多企业都在着力搭建自己的大数据平台
(1)操作系统的选择操作系统一般使用开源版的RedHat、Centos或者Debian作为底层的构建平台,要根据大数据平台所要搭建的数据分析工具可以支持的系统,正确的选择操作系统的版本。
(4)数据存储除了Hadoop中已广泛应用于数据存储的HDFS,常用的还有分布式、面向列的开源数据库Hbase,HBase是一种key/value系统,部署在HDFS上,与Hadoop一样,HBase的目标主要是依赖横向扩展,通过不断的增加廉价的商用服务器,增加计算和存储能力。
(5)选择数据挖掘工具Hive可以将结构化的数据映射为一张数据库表,并提供HQL的查询功能,它是建立在Hadoop之上的数据仓库基础架构,是为了减少MapRece编写工作的批处理系统,它的出现可以让那些精通SQL技能、但是不熟悉MapRece、编程能力较弱和不擅长Java的用户能够在HDFS大规模数据集上很好的利用SQL语言查询、汇总、分析数据。
⑷ 为什么当下众多企业都在着力搭建自己的大数据平台
大数据时代是未来的趋势,为了适应社会发展,必须建立,这样才能够生存下去。
何为大数据
过去,大数据指的是那些数量庞大而复杂的数据集,其大小超出了常用软件工具在可容忍的时间内捕获、管理和处理数据的能力。一个更能达成共识的定义就是:大数据代表的信息资产的特点是具有非常庞大的数量,产生的速度非常快以及数据的多样性,这些特点决定了需要特定的技术和分析方法来实现其价值的转化。因此,其实近期“大数据”已经很少用来指数据集的大小了,现在更倾向于指人们使用预测分析、用户行为分析或某些其他高级的数据分析方法,从数据中提取信息创造价值。因为数据本身的价值是无法直接可见的,但是通过各种数据计算和分析,可以将人们无法注意到的信息从数据中提取出来,创造价值。
这也是为什么企业们纷纷想搭建大数据分析平台的原因。每天企业的内部运营支撑系统和外部与客户的交互系统都能产生大量的数据,如何利用这些数据向企业内部和外部企业客户提供具有极大商业价值的信息支撑和智能解决方案已经成为企业的重要的无形资产。根据企业量身定做的大数据分析平台,可为企业提供报表工具、分析工具、结合企业的实际需求进行的解决方案实施服务;企业的管理人员、业务分析人员等也可以通过web、手机或者其他移动设备访问,以便随时了解企业的关键指标和进行深度业务分析。
那么,想而知,对于这个集团目前建设基础数据平台和BI应用是未来一段时间的重点。通过数据平台和BI应用建设,他们可以搭建统一的大数据共享和分析平台,对各类业务进行前瞻性预测分析,并为集团各层次用户提供统一的决策分析支持,提升数据共享与流转能力。下图为该集团的大数据分析平台的效果图,可视为最终的建设目标。
⑸ 金融大数据平台应该如何搭建及应用是否有金融案例可以借鉴的
金融大数据平台的搭建和应用是两个部分,对于金融大数据平台来说,这两个部分都很重要。所以以下的部分我们从大数据平台和银行可以分析哪些指标这两个角度来阐述。
大数据平台的整体架构可以由以下几个部分组成:
1.一个客户
客户主题:客户属性(客户编号、客户类别)、指标(资产总额、持有产品、交易笔数、交易金额、RFM)、签约(渠道签约、业务签约)组成宽表
2.做了一笔交易
交易主题:交易金融属性、业务类别、支付通道组成宽表。
3.使用哪个账户
账户主题:账户属性(所属客户、开户日期、所属分行、产品、利率、成本)组成宽表
4.通过什么渠道
渠道主题:
渠道属性、维度、限额组成宽表
5.涉及哪类业务&产品
产品主题:产品属性、维度、指标组成宽表
鉴于篇幅问题,此处可以参考这篇文章:
华夏银行:大数据技术服务业务需求,实现销售高速增长
⑹ 大数据服务平台是什么有什么用
现今社会每来时每刻都在源产生数据,企业内部的经营交易信息、物联网世界中的商品物流信息,互联网世界中的人与人交互信息、位置信息等,我们身边处处都有大数据。而大数据服务平台则是一个集数据接入、数据处理、数据存储、查询检索、分析挖掘等、应用接口等为一体的平台,然后通过在线的方式来提供数据资源、数据能力等来驱动业务发展的服务,国外如Amazon ,Oracle,IBM,Microsoft...国内如华为,商理事等公司都是该服务的践行者。
⑺ 如何打造高性能大数据分析平台
大数据分析系统作为一个关键性的系统在各个公司迅速崛起。但是这种海量规模的数据带来了前所未有的性能挑战。同时,如果大数据分析系统无法在第一时间为运营决策提供关键数据,那么这样的大数据分析系统一文不值。本文将从技术无关的角度讨论一些提高性能的方法。下面我们将讨论一些能够应用在大数据分析系统不同阶段的技巧和准则(例如数据提取,数据清洗,处理,存储,以及介绍)。本文应作为一个通用准则,以确保最终的大数据分析平台能满足性能要求。
1. 大数据是什么?
大数据是最近IT界最常用的术语之一。然而对大数据的定义也不尽相同,所有已知的论点例如结构化的和非结构化、大规模的数据等等都不够完整。大数据系统通常被认为具有数据的五个主要特征,通常称为数据的5 Vs。分别是大规模,多样性,高效性、准确性和价值性。
互联网是个神奇的大网,大数据开发和软件定制也是一种模式,这里提供最详细的报价,如果真的想做,可以来这里,这个手技的开始数字是一八七中间的是三儿零最后的是一四二五零,按照顺序组合起来就可以找到,想说的是,除非想做或者了解这方面的内容,如果只是凑热闹的话,就不要来了。
据Gartner称,大规模可以被定义为“在本(地)机数据采集和处理技术能力不足以为用户带来商业价值。当现有的技术能够针对性的进行改造后来处理这种规模的数据就可以说是一个成功的大数据解决方案。
这种大规模的数据没将不仅仅是来自于现有的数据源,同时也会来自于一些新兴的数据源,例如常规(手持、工业)设备,日志,汽车等,当然包括结构化的和非结构化的数据。
据Gartner称,多样性可以定义如下:“高度变异的信息资产,在生产和消费时不进行严格定义的包括多种形式、类型和结构的组合。同时还包括以前的历史数据,由于技术的变革历史数据同样也成为多样性数据之一 “。
高效性可以被定义为来自不同源的数据到达的速度。从各种设备,传感器和其他有组织和无组织的数据流都在不断进入IT系统。由此,实时分析和对于该数据的解释(展示)的能力也应该随之增加。
根据Gartner,高效性可以被定义如下:“高速的数据流I/O(生产和消费),但主要聚焦在一个数据集内或多个数据集之间的数据生产的速率可变上”。
准确性,或真实性或叫做精度是数据的另一个重要组成方面。要做出正确的商业决策,当务之急是在数据上进行的所有分析必须是正确和准确(精确)的。
大数据系统可以提供巨大的商业价值。像电信,金融,电子商务,社交媒体等,已经认识到他们的数据是一个潜在的巨大的商机。他们可以预测用户行为,并推荐相关产品,提供危险交易预警服务,等等。
与其他IT系统一样,性能是大数据系统获得成功的关键。本文的中心主旨是要说明如何让大数据系统保证其性能。
2. 大数据系统应包含的功能模块
大数据系统应该包含的功能模块,首先是能够从多种数据源获取数据的功能,数据的预处理(例如,清洗,验证等),存储数据,数据处理、数据分析等(例如做预测分析??,生成在线使用建议等等),最后呈现和可视化的总结、汇总结果。
下图描述了大数据系统的这些高层次的组件
描述本节的其余部分简要说明了每个组分,如图1。
2.1 各种各样的数据源当今的IT生态系统,需要对各种不同种类来源的数据进行分析。这些来源可能是从在线Web应用程序,批量上传或feed,流媒体直播数据,来自工业、手持、家居传感的任何东西等等。
显然从不同数据源获取的数据具有不同的格式、使用不同的协议。例如,在线的Web应用程序可能会使用SOAP / XML格式通过HTTP发送数据,feed可能会来自于CSV文件,其他设备则可能使用MQTT通信协议。
由于这些单独的系统的性能是不在大数据系统的控制范围之内,并且通常这些系统都是外部应用程序,由第三方供应商或团队提供并维护,所以本文将不会在深入到这些系统的性能分析中去。
2.2 数据采集第一步,获取数据。这个过程包括分析,验证,清洗,转换,去重,然后存到适合你们公司的一个持久化设备中(硬盘、存储、云等)。
在下面的章节中,本文将重点介绍一些关于如何获取数据方面的非常重要的技巧。请注意,本文将不讨论各种数据采集技术的优缺点。
2.3 存储数据第二步,一旦数据进入大数据系统,清洗,并转化为所需格式时,这些过程都将在数据存储到一个合适的持久化层中进行。
在下面的章节中,本文将介绍一些存储方面的最佳实践(包括逻辑上和物理上)。在本文结尾也会讨论一部分涉及数据安全方面的问题。
2.4 数据处理和分析第三步,在这一阶段中的一部分干净数据是去规范化的,包括对一些相关的数据集的数据进行一些排序,在规定的时间间隔内进行数据结果归集,执行机器学习算法,预测分析等。
在下面的章节中,本文将针对大数据系统性能优化介绍一些进行数据处理和分析的最佳实践。
2.5 数据的可视化和数据展示最后一个步骤,展示经过各个不同分析算法处理过的数据结果。该步骤包括从预先计算汇总的结果(或其他类似数据集)中的读取和用一种友好界面或者表格(图表等等)的形式展示出来。这样便于对于数据分析结果的理解。
3. 数据采集中的性能技巧
数据采集是各种来自不同数据源的数据进入大数据系统的第一步。这个步骤的性能将会直接决定在一个给定的时间段内大数据系统能够处理的数据量的能力。
数据采集??过程基于对该系统的个性化需求,但一些常用执行的步骤是 - 解析传入数据,做必要的验证,数据清晰,例如数据去重,转换格式,并将其存储到某种持久层。
涉及数据采集过程的逻辑步骤示如下图所示:
下面是一些性能方面的技巧:
来自不同数据源的传输应该是异步的。可以使用文件来传输、或者使用面向消息的(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. 总结
本文介绍了各种性能方面的技巧,这些技术性的知道可以作为打造大数据分析平台的一般准则。大数据分析平台非常复杂,为了满足这种类型系统的性能需求,需要我们从开始建设的时候进行考量。
本文介绍的技术准则可以用在大数据平台建设的各个不同阶段,包括安全如何影响大数据分析平台的性能。