资源描述:
《大数据处理系统架构及技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
大数据处理系统架构及技术大数据可通过许多方式来存储、获取、处理和分析。每个大数据来源都有不同的特征,包括数据的频率、量、速度、类型和真实性。处理并存储大数据时,会涉及到更多维度,比如治理、安全性和策略。选择一种架构并构建合适的大数据解决方案极具挑战,因为需要考虑非常多的因素。这个“大数据架构和模式”系列提供了一种结构化和基于模式的方法来简化定义完整的大数据架构的任务。因为评估一个业务场景是否存在大数据问题很重要,所以我们包含了一些线索来帮助确定哪些业务问题适合采用大数据解决方案。(一)从分类大数据到选择大数据解决方案
1如果我们花时间研究过大数据解决方案,那么就一定知道它不是一个简单的任务。我们首先介绍术语“大数据”所描述的数据类型。为了简化各种大数据类型的复杂性,我们依据各种参数对大数据进行了分类,为任何大数据解决方案中涉及的各层和高级组件提供一个逻辑架构。接下来,我们通过定义原子和复合分类模式,提出一种结构来分类大数据业务问题。这些模式有助于确定要应用的合适的解决方案模式。我们提供了来自各行各业的示例业务问题。(二)依据大数据类型对业务问题进行分类业务问题可分类为不同的大数据问题类型。以后,我们将使用此类型确定合适的分类模式(原子或复合)和合适的大数据解决方案。但第一步是将业务问题映射到它的大数据类型。下表列出了常见的业务问题并为每个问题分配了一种大数据类型。表3.1:不同类型的大数据业务问题业务问题大数据问题描述
2公用事业:预测功耗机器生成的数据公用事业公司推出了智慧仪表,按每小时或更短的间隔定期测量水、天然气和电力的消耗。这些智慧仪表生成了需要分析的大量间隔数据。公用事业公司还运行着昂贵而又复杂的大型系统来发电。每个电网包含监视电压、电流、频率和其他重要操作特征的复杂传感器。要提高操作效率,该公司必须监视传感器所传送的数据。大数据解决方案可以使用智慧仪表分析发电(供应)和电力消耗(需求)数据。电信:客户流失分析Web和社交数据电信运营商需要构建详细的客户流失模型(包含社交媒体和交易数据,比如CDR),以跟上竞争形势。
3交易数据流失模型的值取决于客户属性的质量(客户主数据,比如生日、性别、位置和收入)和客户的社交行为。实现预测分析战略的电信提供商可通过分析用户的呼叫模式来管理和预测流失。市场营销:情绪分析Web和社交数据营销部门使用Twitter源来执行情绪分析,以便确定用户对公司及其产品或服务的评价,尤其是在一个新产品或版本发布之后。客户情绪必须与客户概要数据相集成,才能得到有意义的结果。依据客户的人口统计特征,客户反馈可能有所不同。客户服务:呼叫监视人类生成的
4IT部门正在依靠大数据解决方案来分析应用程序日志,以便获取可提高系统性能的洞察。来自各种应用程序供应商的日志文件具有不同的格式;必须将它们标准化,然后IT部门才能使用它们。零售:基于面部识别和社交媒体的个性化消息Web和社交数据生物识别零售商可结合使用面部识别技术和来自社交媒体的照片,根据购买行为和位置向客户提供个性化的营销信息。此功能对零售商忠诚度计划具有很大的影响,但它具有严格的隐私限制。零售商需要在实现这些应用程序之前进行适当的隐私披露。机器生成的数据交易数据零售商可根据位置数据为客户提供特定的促销活动和优惠券。解决方案通常旨在在用户进入一个店铺时检测用户的位置,或者通过GPS检测用户的位置。
5零售和营销:移动数据和基于位置的目标位置数据与来自社交网络的客户偏好数据相结合,使零售商能够根据购买历史记录针对性地开展在线和店内营销活动。通知是通过移动应用程序、SMS和电子邮件提供的。FSS、医疗保健:欺诈检测机器生成的数据交易数据人类生成的欺诈管理可预测给定交易或客户帐户遇到欺诈的可能性。解决方案可实时分析事务,生成建议的立即执行的措施,这对阻止第三方欺诈、第一方欺诈和对帐户特权的蓄意滥用至关重要。解决方案通常旨在检测和阻止多个行业的众多欺诈和风险类型,其中包括:信用卡和借记卡欺诈存款帐户欺诈技术欺诈
6坏账医疗欺诈医疗补助计划和医疗保险欺诈财产和灾害保险欺诈工伤赔偿欺诈保险欺诈电信欺诈按类型对大数据问题分类,更容易看到每种数据的特征。这些特征可帮助我们了解如何获取数据,如何将它处理为合适的格式,以及新数据出现的频率。来自不同来源的数据具有不同的特征;例如,社交媒体数据包含不断传入的视频、图像和非结构化文本(比如博客文章)。使用大数据类型对大数据特征进行分类。
7按特定方向分析大数据的特征会有所帮助,例如以下特征:数据如何收集、分析和处理。对数据进行分类后,就可以将它与合适的大数据模式匹配。分析类型对数据执行实时分析还是批量分析。请仔细考虑分析类型的选择,因为这会影响一些有关产品、工具、硬件、数据源和预期的数据频率的其他决策。一些用例可能需要混合使用两种类型:欺诈检测、分析必须实时或近实时地完成。针对战略性业务决策的趋势分析,分析可采用批量模式。处理方法要应用来处理数据的技术类型(比如预测、分析、临时查询和报告)。业务需求确定了合适的处理方法。可结合使用各种技术。处理方法的选择,有助于识别要在您的大数据解决方案中使用的合适的工具和技术。数据频率和大小—预计有多少数据和数据到达的频率多高。知道频率和大小,有助于确定存储机制、存储格式和所需的预处理工具。数据频率和大小依赖于数据源。按需分析,与社交媒体数据一样,实时、持续提供(天气数据、交易数据时序。数据类型、要处理数据类型、
8交易、历史、主数据等。知道数据类型,有助于将数据隔离在存储中。内容格式结构化、非结构化或半结构化。格式确定了需要如何处理传入的数据,这是选择工具、技术以及从业务角度定义解决方案的关键。数据源--数据的来,比如Web和社交媒体、机器生成、人类生成等。识别所有数据源有助于从业务角度识别数据范围。该图显示了使用最广泛的数据源。数据使用者—处理的数据的所有可能使用者的列表:业务流程业务用户企业应用程序各种业务角色中的各个人员部分处理流程其他数据存储库或企业应用程序图3.1:处理的数据的所有可能使用者硬件将在其上实现大数据解决方案的硬件类型,包括商用硬件或最先进的硬件。理解硬件的限制,有助于指导大数据解决方案的选择。
9图3.2描绘用于分类大数据的各种类别。定义大数据模式的关键类别已识别并在蓝色方框中突出显示。大数据模式来自这些类别的组合。DataTypeContentFomatDataSourcesDataConsumerHardwareDataFrequrncyProcessingMethodologyAnalysisType图3.2:大数据分类(三)数据分析平台架构
10随着互联网、移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.8万亿GB,对这些海量数据的分析已经成为一个非常重要且紧迫的需求。作为一家互联网数据分析公司,我们在海量数据的分析领域那真是被“逼上梁山”。多年来在严苛的业务需求和数据压力下,我们几乎尝试了所有可能的大数据分析方法,最终落地于Hadoop平台之上。Hadoop在可伸缩性、健壮性、计算性能和成本上具有无可替代的优势,事实上已成为当前互联网企业主流的大数据分析平台。本文主要介绍一种基于Hadoop平台的多维分析和数据挖掘平台架构。3.3.1大数据分析的分类Hadoop平台对业务的针对性较强,为了让你明确它是否符合你的业务,现粗略地从几个角度将大数据分析的业务需求分类,针对不同的具体需求,应采用不同的数据分析架构。
11(1)按照数据分析的实时性,分为实时数据分析和离线数据分析两种。实时数据分析一般用于金融、移动和互联网B2C等产品,往往要求在数秒内返回上亿行数据的分析,从而达到不影响用户体验的目的。要满足这样的需求,可以采用精心设计的传统关系型数据库组成并行处理集群,或者采用一些内存计算平台,或者采用HDD的架构,这些无疑都需要比较高的软硬件成本。目前比较新的海量数据实时分析工具有EMC的Greenplum、SAP的HANA等。(2)按照大数据的数据量,分为内存级别、BI级别、海量级别三种。这里的内存级别指的是数据量不超过集群的内存最大值。不要小看今天内存的容量,Facebook缓存在内存的Memcached中的数据高达320TB,而目前的PC服务器,内存也可以超过百GB。因此可以采用一些内存数据库,将热点数据常驻内存之中,从而取得非常快速的分析能力,非常适合实时分析业务。图1是一种实际可行的MongoDB分析架构。MongoDB大集群目前存在一些稳定性问题,会发生周期性的写堵塞和主从同步失效,但仍不失为一种潜力十足的可以用于高速数据分析的NoSQL。此外,目前大多数服务厂商都已经推出了带4GB以上SSD的解决方案,利用内存+SSD,也可以轻易达到内存分析的性能。随着SSD的发展,内存数据分析必然能得到更加广泛的应用。
12而大多数统计分析,机器学习问题可以用MapReduce算法改写。MapReduce目前最擅长的计算领域有流量统计、推荐引擎、趋势分析、用户行为分析、数据挖掘分类器、分布式索引等。而大多数统计分析,机器学习问题可以用MapReduce算法改写。MapReduce目前最擅长的计算领域有流量统计、推荐引擎、趋势分析、用户行为分析、数据挖掘分类器、分布式索引等。(四)面对大数据OLAP分析的一些问题OLAP分析需要进行大量的数据分组和表间关联,而这些显然不是NoSQL和传统数据库的强项,往往必须使用特定的针对BI优化的数据库。比如绝大多数针对BI优化的数据库采用了列存储或混合存储、压缩、延迟加载、对存储数据块的预统计、分片索引等技术。Hadoop平台上的OLAP分析,同样存在这个问题,Facebook针对Hive开发的RCFile数据格式,就是采用了上述的一些优化技术,从而达到了较好的数据分析性能。
13然而,对于Hadoop平台来说,单单通过使用Hive模仿出SQL,对于数据分析来说远远不够,首先Hive虽然将HiveQL翻译MapReduce的时候进行了优化,但依然效率低下。多维分析时依然要做事实表和维度表的关联,维度一多性能必然大幅下降。其次,RCFile的行列混合存储模式,事实上限制死了数据格式,也就是说数据格式是针对特定分析预先设计好的,一旦分析的业务模型有所改动,海量数据转换格式的代价是极其巨大的。最后,HiveQL对OLAP业务分析人员依然是非常不友善的,维度和度量才是直接针对业务人员的分析语言。而且目前OLAP存在的最大问题是:业务灵活多变,必然导致业务模型随之经常发生变化,而业务维度和度量一旦发生变化,技术人员需要把整个Cube(多维立方体)重新定义并重新生成,业务人员只能在此Cube上进行多维分析,这样就限制了业务人员快速改变问题分析的角度,从而使所谓的BI系统成为死板的日常报表系统。
14使用Hadoop进行多维分析,首先能解决上述维度难以改变的问题,利用Hadoop中数据非结构化的特征,采集来的数据本身就是包含大量冗余信息的。同时也可以将大量冗余的维度信息整合到事实表中,这样可以在冗余维度下灵活地改变问题分析的角度。其次利用HadoopMapReduce强大的并行化处理能力,无论OLAP分析中的维度增加多少,开销并不显著增长。换言之,Hadoop可以支持一个巨大无比的Cube,包含了无数你想到或者想不到的维度,而且每次多维分析,都可以支持成千上百个维度,并不会显著影响分析的性能。因此,我们的大数据分析架构在这个巨大Cube的支持下,直接把维度和度量的生成交给业务人员,由业务人员自己定义好维度和度量之后,将业务的维度和度量直接翻译成MapReduce运行,并最终生成报表。可以简单理解为用户快速自定义的“MDX”(多维表达式,或者多维立方体查询)语言→MapReduce的转换工具。同时OLAP分析和报表结果的展示,依然兼容传统的BI和报表产品。
15一种Hadoop多维分析平台的架构整个架构由四大部分组成:数据采集模块、数据冗余模块、维度定义模块、并行分析模块。如图3.3所示。并行分析核心模块报表中心Hadoop分析模块维度定义维度定义模块多维分析提交模块数据亢余数据亢余亢余维度定义数据采集数据日志数据日志图3.3:Hadoop多维分析平台架构图数据采集模块采用了Cloudera的Flume,将海量的小日志文件进行高速传输和合并,并能够确保数据的传输安全性。单个collector宕机之后,数据也不会丢失,并能将agent数据自动转移到其他的colllecter处理,不会影响整个采集系统的运行。
16数据冗余模块不是必须的,但如果日志数据中没有足够的维度信息,或者需要比较频繁地增加维度,则需要定义数据冗余模块。通过冗余维度定义器定义需要冗余的维度信息和来源(数据库、文件、内存等),并指定扩展方式,将信息写入数据日志中。在海量数据下,数据冗余模块往往成为整个系统的瓶颈,建议使用一些比较快的内存NoSQL来冗余原始数据,并采用尽可能多的节点进行并行冗余;或者也完全可以在Hadoop中执行批量Map,进行数据格式的转化。维度定义模块是面向业务用户的前端模块,用户通过可视化的定义器从数据日志中定义维度和度量,并能自动生成一种多维分析语言,同时可以使用可视化的分析器通过GUI执行刚刚定义好的多维分析命令。并行分析模块接受用户提交的多维分析命令,并将通过核心模块将该命令解析为Map-Reduce,提交给Hadoop集群之后,生成报表供报表中心展示。核心模块是将多维分析语言转化为MapReduce的解析器,读取用户定义的维度和度量,将用户的多维分析命令翻译成MapReduce程序。根据Job
17Conf参数进行Map和Reduce类的拼装并不复杂,难点是很多实际问题很难通过一个MapReduce解决,必须通过多个MapReduceJob组成工作流(WorkFlow),这里是最需要根据业务进行定制的部分。MapReduce的输出一般是统计分析的结果,数据量相较于输入的海量数据会小很多,这样就可以导入传统的数据报表产品中进行展现。当然,这样的多维分析架构也不是没有缺点。由于MapReduce本身就是以蛮力去扫描大部分数据进行计算,因此无法像传统BI产品一样对条件查询做优化,也没有缓存的概念。往往很多很小的查询需要“兴师动众”。尽管如此,开源的Hadoop还是解决了很多人在大数据下的分析问题,真可谓是“功德无量”。Hadoop集群软硬件的花费极低,每GB存储和计算的成本是其他企业级产品的百分之一甚至千分之一,性能却非常出色。我们可以轻松地进行千亿乃至万亿数据级别的多维统计分析和机器学习。