前段时间有报道称,有学者质疑“大数据”理论,也有硅谷公司负责人质疑大数据应用的效果。结合2011年Gartner关于BI(Business Intelligence)应用70%-80%都失败的一个调查结论(这里的fail是夸张的说法,更确切地讲应该是没有达到预期效果),本文就来谈谈为什么会出现这样的问题,大数据应用落地的瓶颈是什么?为什么大数据应用容易失败?为什么大数据应用需要敏捷?敏捷大数据方法论又是什么,包括那些关键技术,系统架构如何设计等等问题,希望能为业界大数据应用落地提供一点有价值的参考。
1.大数据应用落地的主要瓶颈是什么?
大数据现象源于我们对未来不确定性的恐惧,和应对软件在加速吞噬世界(软件越来越庞杂,操作越来越自动化,数据越来越丰富,而大部分人却对其原理和特性却知之甚少)这一大背景下的管理失控问题。大数据规律的可预测性创造了一种新的知识体系和管理思维,但分析模型的黑箱和操作的自动化却削弱了人类对其深层规律的理解和探索能力,机器的量化能力与人的主观判断能力短时间内还难以有机融合,大数据应用不缺预测模型、计算资源和数据科学家,而是缺乏提出正确问题和利用大数据工具解决问题的能力,就好比用大炮没有打到蚊子,我们不能说大炮没用,而会说这个人的方法搞错了。
大数据分析的核心目标是,面向过去,发现数据规律,归纳已知;面向未来,挖掘数据趋势,预测未知。从而通过大数据分析提高对事物的理解和决策处置能力,终实现智能化。不管是商业智能,机器智能,人工智能,还是智能客服,智能问答,智能推荐,智慧医疗、智慧交通等相关技术和系统,其本质都是朝着这一目标在演进。随着云计算平台和开源大数据系统(如Hadoop、Spark、Storm等)的高速发展,获得大数据基础设施建设相关技术和支持越来越容易。同时,移动互联网和物联网技术所具备的全面数据采集能力,客观上促进了大数据的积累和爆发。但是,大数据应用要落地,除了需要上述提出正确问题和利用大数据工具解决问题的能力之外,个人认为还面临如下几个方面的主要瓶颈:
1)IT向DT(Data Technology,DT)技术泛型的转变,使得传统硬件和软件技术架构面临挑战,大规模并行计算、量子计算机、深度神经网络芯片、分布式存储系统、GPU大规模计算等都是对传统IT技术架构的颠覆。现阶段各种大数据分析相关的开源技术和系统百花齐放,大数据技术生态体系庞杂,技术门槛较高也间接说明了这一点。研究、研发人员要跟上这一波技术变革还需要时间去消化和积累,特别是学术界和工业界的结合,对大数据应用来讲至关重要,深度学习领域的突破就是例证。如何在掌握有限技术的条件下(或受制于核心技术人才的情况下),能快速进行大数据应用研究和落地应用,需要从技术选型角度进行深入探讨、分析和评估。
2)传统商业智能(Business Intelligence, BI)应用的失败教训太多,项目周期漫长,考验客户耐性,应用投入成本高,终成果多是昂贵的豪华报表,没有达到预期效果。另外,传统数据仓库和数据集市架构下,面对海量数据的存储能力、扩展能力、并发能力弱等问题无法从根本解决。大数据分析如何从BI项目中总结失败教训和获得经验,大数据应用与传统BI系统是融合还是代替?企业大数据技术架构如何与发源于互联网巨头的主流大数据技术框架有机统一?也还有很多问题需要深入总结,解决不好就会事倍功半。
3)大数据应用的标准化和产品化问题。针对大数据的多源异构、动态性、关联性等特点,对大数据分析流程和应用进行标准化的管理,对离线分析、在线分析、实时分析、内存分析等计算框架的融合处理,对图像、文本、视频、音频、网页、关系数据库等多源异构数据进行跨模态建模,对大数据分析结果的应用效果进行量化与评价。不管是从技术选型角度还是业务支撑角度,都还有很多问题需要实战经验的积累和支持,想要一劳永逸地解决不现实。
4)除了前述探讨的大数据应用面临的挑战之外,从大数据架构本身的技术角度分析还需要解决如下几个关键问题:高可扩展性,能支持大规模数据增长和大量业务分析的快速扩展等;高容错性和稳定性,能支持大数据分析的失败情况和进行自动恢复等;高性能和并行支持,能在海量数据条件下快速完成多种计算模型和分析处理;多源异构环境支持,能处理多模态数据和多种分析任务;开放性和共享支持,能提供标准的数据和开发接口,支持数据和系统集成;效率和成本的控制,能在有限的时间、人力和财力条件下提高系统性能等,这对大数据系统架构的设计提出了较高要求。
5)大数据管理思维和开发、应用实施的脱节,大数据强化了定量科学和客观方法的地位,但事实上,现阶段很多企业领导,包括技术人员对大数据的处理和使用仍然是主观性的,而且面对机器学习的黑箱,对模型的缺陷和适用范畴很难有深入把握,这样的话通过大数据挖掘分析量化的结果也未必更符合客观事实,大数据不等于好数据,如何切实辅助决策才是关键。
再则,大数据是非常碎片化的,大数据不只是谷歌,亚马逊,BAT等互联网企业,每一个行业、企业里面都有它去关注数据的痕迹:一条生产线上的实时传感器数据,车辆身上的传感数据,高铁设备的运行状态数据,交通部门的监控数据等等;其次,现在的开源大数据系统架构和工具集来源于互联网巨头,这种技术架构不一定适合传统企业和政府关联机构,因为不同组织机构所拥有的数据类型和结构可能大不相同;再次,从大数据应用过程和特点来看,数据科学的本质是迭代,就好比婴儿的学习一样,输入-回应-反馈-学习-再输入,持续训练和学习才会产生智能,大数据分析系统是一样的道理,自适应优化和持续改进是大数据系统的必备特征。所以,这就需要大数据技术架构具有极强的灵活性、可扩展性,或者说敏捷性。
2.大数据应用为什么需要敏捷?
上述五个方面的大数据应用瓶颈分析可以看到,大数据应用要切实落地并产生应有价值还要较长的路要走,当然这取决于我们的期望,在《企业大数据应用三段论》一文中,有明确的界定,大数据应用的效果不能轻易否定,当然也不能太乐观,关键还是看处于那个阶段,技术成熟度和设计研发能力如何等等。为什么大数据需要敏捷,或者说我为什么提出敏捷大数据,主要基于上述大数据应用瓶颈的判断:大数据应用落地面临很多现实问题,首先我们看大数据的应用过程和特点(如图1),大数据要完成的是一种将各方面源数据(零散的、相关的围绕某行业或者某分析主题的数据)通过ETL组织成为主题数据,从主题数据中提炼信息特征,从特征挖掘中发现规律和有价值的知识,就规律和预测等知识信息形成决策支持并进行应用和追踪评估,后反馈回大数据系统进行反复验证、优化并持续迭代的闭环信息处理过程。
其次,有没有通用的大数据应用架构和流程?一般来讲,不同行业、不同企业、不同应用场景,采用的技术架构和分析流程也会有差异;再次,大数据应用落地需面对的现实问题众多,项目周期漫长,考验客户耐性,技术生态庞杂,复合型人才少,一将难求,应用效果如何量化也还没标准,用户参与度低,难达预期目标,机器学习数据实验,如何应用于数据工程等等问题,对大数据分析的系统架构、关键技术及应用方法论,提出了较高要求,下面就来看敏捷大数据能否解决一些问题。
3.敏捷大数据方法论
(1)何为敏捷?
何为敏捷,我们先看几个概念:
敏捷开发(Agile Development),以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷管理(Agile Management),敏捷管理是规划和指导项目流程的迭代方法,与敏捷软件开发一样,敏捷项目是在叫做迭代的小型部门中完成的。每个迭代都由项目团队审查和评判,从迭代的评判中获得的信息用于决定项目的下一个步骤。由于开发周期短,对需求管理恰当,敏捷管理正在从软件研发行业延伸到已经采取项目化管理的大部分行业中。
精益生产(Lean Production),简称“精益”,是衍生自日本丰田生产方式的一种管理哲学,由美国麻省理工学校教授詹姆斯.P.沃麦克等专家通过“国际汽车计划(IMVP)”对全世界17个国家90多个汽车制造厂的调查和对比分析,认为日本丰田汽车公司的生产方式是适用于现代制造企业的一种生产组织管理方式,精益生产是通过系统结构、人员组织、运行方式和市场供求等方面的变革,使生产系统能很快适应用户需求不断变化,并能使生产过程中一切无用、多余的东西被精简,终达到包括市场供销在内的生产的各方面好结果的一种生产管理方式。
精益思维(Lean Thinking)和精益管理(Lean Management),源于精益生产,精益管理由初的在生产系统的管理实践成功,已经逐步延伸到企业的各项管理业务,也由初的具体业务管理方法,上升为战略管理理念。精益管理要求企业的各项活动都必须运用“精益思维”(Lean Thinking)。“精益思维”的核心就是以小资源投入,包括人力、设备、资金、材料、时间和空间,创造出尽可能多的价值,为顾客提供新产品和及时的服务。
敏捷和精益是对孪生姐妹,其关键词涉及需求进化,迭代,可视化,循序渐进,可集成可运行,精益,小资源投入等。单体应用系统建设,传统软件工程对敏捷开发和精益管理思想的需求并不迫切,而面对多源、异构、协作式大数据系统的架构设计、研发和项目实施来讲,敏捷和精益设计理念至关重要,为什么这样讲?下图是典型的传统信息化技术架构与大数据系统架构的一个对比,有经验的朋友们应该可以看出一些端倪。
架构不是固定的,其中每个组件至少有几个替代品,而且可以根据需要进行扩展。从这个图我们可以得出这样的结论,传统信息系统可以一人打天下,而大数据系统的核心思想却是分布式和团结协作,一个人的力量再大,智慧再高,精力再强,也不如一群人有效整合后的力量大,而大数据系统架构就是负责多方面的整合(Hadoop,Spark等大数据基础系统架构同理,如图3-Hadoop系统架构示意图),换句话说,这就像是软件研发或生产过程中的敏捷和精益管理,由公司大领导(Master)进行分配任务,人员调配,每位员工(slave)努力完成自己负责的小目标工作,各级主管进行横向和纵向协同,有效整合起来就是公司的大目标,可见大数据系统架构的演变已经是很接近人类社会协作的思想了。而要有效支撑大数据系统架构的分布式协作能力
(2)敏捷大数据定义
那什么是敏捷大数据呢,本文暂且给出一个初步的定义(还不够成熟):“敏捷大数据是基于数据科学的迭代性本质和敏捷研发管理思想,利用构件化、服务化和容器化等技术,对大数据系统架构和关键组件协作等进行精益设计,逐步实现多层次数据的融合处理和多种计算框架、模型的扩展和高效管理,快速响应大数据分析需求,快速构建大数据生产系统,快速迭代大数据分析能力,从而提升大数据系统的分析效率和大数据决策价值”。敏捷大数据的核心要素遵从SFV原则(Small,Fast,Validation, SFV):一是小、二是快、三是证,小的业务分析目标切入,快速出原型快速迭代,证明有效之后再扩张。从某种程度上讲,传统BI项目的失败很多是没有把握好这三个原则,而互联网企业的大数据系统能成功,能使开源大数据技术百花齐放,是因为把握好了这三个原则。
敏捷大数据要解决如下关键问题:如何实现统一的、标准化的、模块化、可配置的大数据架构,以解决不同类型的异构子系统之间难以有效整合的问题。应用功能可以使用已有的功能组件组合而成,通过服务复用降低成本,在组件之间交换的数据形式应当标准化和接口化;组件的组合只需少量编程或配置便可以完成,常用模型和工具的集成标准化,如何简化使用,可以对非程序员提供开箱即用的数据挖掘和分析能力;大数据应用全程(采集、存储、分析、管理)可视化操作。基于数据科学的迭代性本质和利用高效组件化工具,对大数据各功能子系统(模块)进行组件化,模型标准化设计,并根据实际需求快速选型、快速配置、快速搭建大数据原型系统,快速迭代大数据分析结果,并顺应不断变化的需求,尽快将原型转化成生产系统。在快速迭代、快速反馈、闭环验证过程中,让客户逐步完成大数据分析的系统思维和管理思维变革,天下武功,唯快不破,快小证原则和精益设计,这是敏捷大数据应用的核心目标。
(3)敏捷大数据流程优化
根据敏捷大数据快、小、证SFV原则,我们对传统的跨行业数据挖掘标准流程(Cross-industry Standard Process for Data Mining ,CRISP-DM)进行了改进,提出了基于微服务和容器(后续敏捷大数据关键技术章节会做详细介绍)的敏捷大数据处理流程(Agile Big Data Processing based on Micro-services)
敏捷大数据处理流程相比传统数据挖掘流程,从两个层面进行了扩展:首先是架构上采用基于容器的微服务技术进行支撑;其次针对传统数据挖掘模型、系统和现实决策反馈的脱节问题,根据数据科学迭代性本质特点,对模型系统和现实决策反馈两个过程分别进行自适应迭代升级和智能决策进化支持。通过这种扩展,使得敏捷大数据方法论与传统数据挖掘技术,以及和新兴的主流大数据框架,能在架构和流程上进行互补和融合。要实现敏捷大数据SFV原则,敏捷大数据架构的设计至关重要。敏捷大数据架构需要在组件化管理、数据融合、资源调度、服务抽象、部署运维、计算模型和标准数据集的服务化,以及敏捷大数据处理流程等多个层面,进行科学有效地设计支撑。核心目标是要实现大数据的融合处理和分析功能的服务化、标准化和流程化,基于数据融合和微服务技术,设计模块化、可配置的大数据分析平台,对微服务的构建和管理进行快速实现,通过各种微服务的划分、组合、编排和动态配置,形成可复用的、可扩展的和可灵活调整的大数据分析系统,从而实现敏捷大数据目标。
4.敏捷大数据关键技术
大数据时代,各种新兴技术和计算框架层出不穷,加之分析需求的不断变化,如何使大数据架构能随时调整以适应业务需求,跟上技术更新的步伐,是大数据应用要解决的关键问题,这也是为什么提出敏捷大数据架构的本质原因。面对大型企业动辄数十个上百个信息系统,如何通过跨物理、虚拟、公共和私有云环境实现一致性、互操作性和可移植性,对IT基础设施来讲是极大的挑战。所以微服务和容器技术应运而生,微服务实现系统模块的组件化和独立自治运行,容器能实现轻量级的虚拟化,而且完全使用沙箱机制,相互之间没有任何接口。微服务、容器与云计算技术的天然结合,及其快速的研发、部署、维护优势,使得基于微服务和容器的敏捷大数据应用潜力巨大。
(1)微服务技术
服务的本质就是行为的抽象,面向对象的方法是从对象实体这个维度对世界进行描述,而面向服务(SOA)则是从行为模式这个维度对世界进行描述,本质上是两种不同维度的描述方法。
由于数据科学的迭代性本质,大数据分析即服务成为应用热点,而微服务与容器技术能有效支持本文提出的敏捷大数据SFV核心原则。近年来,微服务(设计思想发源于康威定律,如图7)成为互联网和大数据企业的研究和设计热点,诸如谷歌、亚马逊、Facebook、百度、京东、携程等公司都在采用微服务理论和技术进行产品的设计、研发和部署。Netflix公司的Adrian Cockcroft将微服务称为“细化SOA(Service Oriented Architecture, SOA)”,并认为这是一套具备开创意义的新型架构。敏捷之父Martin Fowler在他的《Micro services》一文中给出了微服务的定义,概括来说,微服务设计思想是一种使用若干小服务开发庞大应用的方法,每个服务运行在自己的进程中,通过轻量级的通信机制进行信息交互,每个微服务的粒度基于业务能力大小进行构建,并可以由不同的程序语言实现,构建的服务链能够通过容器等技术进行自动化部署。
从上述微服务定义可以看到,去中心化、原子化、独立自治、快速组合、自动部署等特性是微服务技术的核心要素,中心思想是将一个单体应用构架打散,把原来庞大的应用层功能切分成粒度较小的微服务模块,数据库也按微服务功能单元进行相应的拆分进行支持(如图8所示),采用基于云的容器技术单独运行这些服务模块,通过网络和轻量级通信机制将这些分解的服务模块协同连接起来,形成微服务簇和网络,完成大型复杂任务,这种通过将复杂系统切分成若干小的微服务模块的方式,其分布式、低耦合架构能极大地适应大数据分布式处理特性。
(2)容器技术
微服务技术采用类似搭积木的构建方法,使得服务之间不相互影响,而且同一个系统的微服务可以采用不同的开发语言和数据库技术。但是面对大型企业动辄数十、上百个信息系统,如何通过跨物理、虚拟、公共和私有云环境实现一致性、互操作性和可移植性,对IT基础设施来讲是极大的挑战。所以容器技术应运而生,容器早由Docker公司提出并应用于自家的PaaS云服务平台,近年来获得广泛认可,很多大型企业开始将单体应用系统微服务化,并部署在容器中。容器基于操作系统之上能实现相比传统虚拟化技术(如VMware)更轻量级的虚拟化,而且完全使用沙箱机制,相互之间没有接口。Hadoop的子系统Kubernetes已经能支持基于云计算和Docker容器技术的微服务开发和部署,容器技术与云计算的天然结合及其快速的研发、部署、维护优势,对于微服务和敏捷大数据架构的设计和实现具有重要支撑作用。
(3)数据融合技术
由于大数据呈现的关联性、动态性、多源异构性等特点,导致大数据的存储、挖掘、分析和理解面临极大挑战。如何对多种形态格式的数据进行统一标准化融合处理,是敏捷大数据要解决的关键问题。与一般的大数据融合目标不同,本文主要从构建标准数据集的角度进行大数据多粒度融合,通过构建统一数据单元(unified data units,UDU)来支持多模态特征融合和多种类型、结构数据集的封装融合。将多源异构数据进行抽取、融合、集成为支持不同计算模型处理的UDU数据集,是多粒度信息融合技术的核心目标。统一数据单元是独立的和灵活的实体数据集,可随数据源和分析需求的变化进行快速重组、调整和更新。通过信息融合形成的UDU标准数据集,是进行敏捷大数据处理的基础。(相关推荐:
)针对机器学习各类模型的数据适配特点,我们提出了一种标准数据集定义:统一数据单元(UDU)对大数据多个层次和粒度的信息进行融合处理。特别是对多模态数据,通过统一数据单元设计方法能实现数据的存储优化和机器学习模型数据输入的标准化,以统一数据单元作为敏捷大数据系统的基本数据组织和处理单元,能提高大数据分析模型和算法的适应性和敏捷性,提升大数据处理能力。