如何架构大数据应用
关于
大数据, 文章目的是定义大数据的表征—换句话说,就是什么时候需要考虑将大数据放入架构。 希望各位能够理解在何种情况使用哪种技术。
定义大数据表征
基于不同的需要,可能选择开始大数据项目s: 因为所需处理的数据容量, 因为系统中数据结构的多样性, 因为扩展性问题, 或者因为需要削减数据处理的成本。 本节中,将看到怎样的征兆意味着一个团队需要开始一个大数据项目了。
数据大小哪些事
使人们开始考虑大数据的两个主要领域是何时出现了与数据大小和容量有关的问题。尽管大多数时间这些问题是考虑大数据的合情合理的原因,但今天而已,这并不是唯一的原因。
有其他的表征—例如数据的类型. 如何在传统数据存储中管理不断增加的各种各样的数据类型, 如SQL数据库, 还期望象建表那样的结构化么? 不增加灵活性是不可行的,当出现新的数据结构是需要技术层面的无缝处理。当讨论数据类型是,需要想象非结构化数据,图数据,图片,视频,语音等等。
不但要很好的存储非结构化数据,而且最好是得到一些他们之外的东西。另一表征来自于这一承诺:大数据也可以从大容量的各种数据中提取增值信息.若干年前,对于大量读多于写的操作,通用的缓存或数据库队友每周的ETL (extract, transform,load) 处理是足够的。如今不再是这样的趋势。现在,需要一个架构具备长时间处理和准实时数据处理的能力。这一架构是分布式的,而不是依赖于高性能且价格高昂的商用机,取而代之的是,高可用,性能驱动和廉价技术所赋予的灵活性。
当下,如何充分利用增值数据以及如何能够原生地搜索到它们呢?为了回答这一问题,再次考虑传统存储中为了加速查询而创建的索引。如果为了复杂查询而索引上百列而且包含了主键的不确定性,会是什么样子?不希望在一个基础SQL 数据库中做这些;取而代之的是,需要考虑按照特殊需要而使用一个 NoSQL存储. 所以,简单回顾一下主要路径:数据获取,结构化,可视化这些真正数据管理的场景,显而易见,数据大小不再是主要的考量因素。
典型的商务使用场景
除了技术和架构考虑,需要面对典型大数据用例的使用场景。它们部分和特殊的工业领域相关; 另外的部分可能适应于各种领域。这些考虑一般都是基于分析应用的日志,例如web访问日志,应用服务器日志,和数据库日志,但是也可以基于各种其他的数据源例如社交网络数据。当面对这些使用场景的时候,如果希望随着商务的增长而弹性扩展,就需要考虑一个分布式的大数据架构。
客户行为分析
感知客户, 或者叫做 “360-度客户视角”可能是最流行的大数据使用场景。客户视角通常用于电子商务网站以及开始于一个非结构化的点击流—换而言之, 由一个访客执行的主动点击和被动的网站导航操作组成。通过计算和分析点击量和面向产品或广告的印象,可以依赖行为而适配访客的用户体验,目标是得到优化漏斗转换的见解。
情绪分析
公司关注的是其在社交网络上所被感知的形象和声誉; 把可能使他们声名狼藉的负面事件最小化并充分利用正面事件. 通过准实时爬下大量的社交数据,可以提取出社交社区中关于品牌的感受和情绪,从而找到影响用户并练习他们,改变并强化与这些用户的交互。
CRMOnboarding
基于访客的社交行为,可以将客户的行为分析和数据的情感分析结合在一起。公司希望将这些在线数据源和已经存在的离线数据结合在一起,这叫做 CRM (customer relationship management) onboarding, 以便于得到更好和更准确的客户定位. 进而,公司能够充分利用这一定位,从而建立更好的目标系统使市场活动的效益最大化。
预测
从数据中学习在过去几年已经成为主要的大数据趋势。基于大数据的预测在许多业界是非常有效的,例如电信界, 这里可以预测大众化的路由日志分析. 每一次在设备上发生了问题, 公司可以预测它并避免宕机时间或利润丢失。
当结合以上的使用场景的时候,根据用户的整体行为,可以使用一个预测型架构来诱惑产品目录的选择和价格。
理解大数据技术生态系统
一旦确实要实施一个大数据项目, 最困难的事是架构中的技术选型。这不仅是选择最著名的Hadoop相关技术,而且需要理解如何给它们分类才能构建一个一致性的分布式架构。为了得到大数据星云中的项目数量,可以参见
https://github.com/zenkay/bigdata-ecosystem#projects-1 ,这里有100多个工程项目。这里,你可以考虑选择一个Hadoop的发布版,一个分布式文件系统 ,一个类SQL处理语音, 一个机器学习语言, 调度器,面向消息的中间件, NoSQL数据存储,数据可视化等等。
既然本书的目的是描述构建一个分布式架构的可扩展方法,所以不深入到所有的项目中;取而代之,重点在典型大数据工程中最可能使用的东西。显然,架构的选择和项目的集成依赖于具体的需要,你可以看到在特定的领域可以使用这些项目的具体实例。为了使Hadoop 技术表现的更有相关性,这一分布式架构将适用于前面描述的典型场景,命名如下:
客户行为分析
情绪分析
CRM onboarding 和预测