摘要: 今天多数的大数据方案都是依托Hadoop环境来做结构化和非结构化数据处理,如何把自己的Hadoop算法快速部署到实际的生产环境当中去,对很多企业的大数据部署也提出了挑战。CSDN专访MathWorks中国资深技术专家陈建平,分享大数据解决方案。
近年来,随着大数据在Google、Facebook等企业的成功应用,很多传统企业和初创公司都转向应用大数据技术挖掘数据金矿。现有企业累计了大量的工业数据,但是大数据的开发的复杂流程阻碍了企业快速从工业数据和商业数据中挖掘价值。行业专家(算法研究者)精通行业数据分析,却受限于编程复杂度和缺乏快速部署算法的方法,使很多创造性想法无法得到有效实施。在这个技术飞跃的时代,拥有大量工业数据的企业和技术专家们应该如何开展大数据技术的研发工作?
大数据从业者在数据搜集、数据探索、开发和部署的每一个阶段都会碰到各式各样的难题,不得不在不同的开发环境中进行切换,并为此付出了大量额外的时间和人力成本。在现有的数据资源上,如何对数据进行清洗、整合以及探索性研究,正是数据专家们发挥专长的地方;而这个过程所耗费的时间往往是编程实现的好几倍。今天多数的大数据方案都是依托Hadoop环境来做结构化和非结构化数据处理,如何把自己的Hadoop算法快速部署到实际的生产环境当中去,对很多企业的大数据部署也提出了挑战。
MathWorks公司的MATLAB软件在科研和工业生产上拥有大量的用户,而且在数据分析领域,MATLAB作为传统数据分析专业软件独树一帜。最近,针对大数据研发过程中关键点,基于大家熟悉的 MATLAB 开发环境,该公司提出一个完整的解决方案。下面我们就来看看他们关于大数据分析的流程,来自MathWorks公司的资深应用工程师陈建平对记者做了相关介绍。
从流程角度上看,整个大数据处理可以分成4个主要步骤。第一步是数据的搜集和存储;第二步是通过数据分析技术对数据进行探索性研究,包括无关数据的剔除即数据清洗,和寻找数据的模式探索数据的价值所在; 第三步是在基本数据分析的基础上,选择和开发数据分析算法,对数据进行建模。从数据中提取有价值的信息,这其实是真正的大数据的学习过程。这其中会涉及很多算法和技术,比如机器学习算法等; 最后一步是对模型的部署和应用,即把研究出来的模型应用到生产环境之中。
我们分别从流程和技术两个角度来看一下MATLAB开发大数据应用的特点。从流程上,我们可以把大数据应用的过程分成四步。
第一步,数据的获取和存储和访问。MathWorks的产品是以工具箱的形式来组合的,在现有MATLAB 平台上已经有80多个专业工具箱和300多个第三方厂商工具箱。 从数据搜集和访问角度,MATLAB 支持以下几种搜集和访问方式:
- 数据库的访问。数据库是现有的大量数据,尤其是工业数据的默认存储格式。目前最新版本的MATLAB即支持对结构化数据库的访问,同时支持非结构数据库的访问,比如Mango DB,用户无需学习SQL等专业语言,即可通过MATLAB语言进行数据库的访问。另外,MATLAB也支持从专业金融数据库中直接抓取金融数据。
- 分布式文件系统。从2014b版本开始,通过引入一个叫做datastore的数据结构,MATLAB 已经能够支持对Hadoop HDFS文件系统的访问,并且统一了文件、文件夹、分布式数据库的访问接口,使用者无需改动算法即可访问不同的数据来源。
- 硬件数据的采集。MATLAB一直以来都硬件设备有着良好的支持,从专业数据采集设备,比如数据采集卡和测试仪器,到通用硬件,比如摄像机,都有统一的访问接口支持直接从MATLAB语言中抓取数据。结合不同的数据搜集、存储和访问手段,在一个平台中就能够完成大多数数据搜集和整理的工作。
第二步,数据的组织和基础分析。这一部分需要介入相应的统计手段,也是行业专家最擅长的地方。行业专家可以结合对行业的理解,探寻数据的价值所在。行业专家对自身工作领域非常熟悉,了解自身行业数据特点,但是未必对通用编程语言比如C或者Java充分熟悉。
MATLAB作为工业普及的语言,以其语法简单和可视化功能强大而深受工业和研究人员的喜爱。最新的MATLAB提供了大量图形化傻瓜工具,可以帮助行业专家进行诸如数据导入、数据清洗和数据可视化分析。更重要的一个特点是,这些工具大部分支持通过搜集操作行为,自动生成MATLAB脚本或者函数的能力,辅助自动化开发。即使你不了解编程细节,也能够得到高校的代码,大大提升了开发效率。
MATLAB的工具箱覆盖了各个不同的领域,行业专家可以采用相应的工具箱,对数据进行初步处理和特征探索,比如通过滤波等信号处理手段滤去噪声,或者通过频谱检测,寻找语音数据的嚣叫。这是通用数据分析工具无法替代的。
第三步,数据建模。经过数据清洗、探索性分析,目的就是为了建立一个有效模型用于工业生产。典型的手段是求助于统计分析方法和机器学习算法,寻求合理的数学模型。一直以来,MATLAB就是一个传统的数据分析平台,最近几年MathWorks结合最新的机器学习算法和深度学习算法,推出了升级了神经网络和统计工具箱。机器学习不再需要编写大量的代码了,通过采用分类和聚类App,可以对数据进行拖放就可以完成机器学习的过程。直接从App分析结果中就可以得到最佳的预测模型。
最后一步,应用发布。如何把计算模型发布到生产环境中,是一件费事费力的工作。传统算法开发流程中,算法工程师开发完算法后,把算法通过文本或者伪代码的方式提交给软件工程师,软件工程师再通过通用编程语言对算法进行实现。这种分段式开发方法非常容易带来错误,而且开发效率也相对地下。
现在,行业专家可以在前一个阶段得到的模型基础上,通过App和几个鼠标点击就可以把MATLAB代码发布成可执行程序、动态链接库、JAVA或者.NET包。部署工程师可以在这些结果上进行集成即可,减少了重新开发潜在的错误,加速了开发迭代的过程。
这4步构成了一个完整的大数据应用流程,行业专家可以在一个熟悉的环境中完成整个复杂数据分析的过程。
从技术进展的角度,MATLAB针对不同的数据规模和不同的数据复杂度,也提供了不同的大数据支持。下面的图对从数据复杂度和数据规模角度对数据进行了一个简单分类。
陈建平介绍说:“针对不同的数据类型和规模,我们应该有不同的处理方式,才能够达到处理和效率的最佳化。根据数据规模,把数据划分成能够加载入集群内存中的数据,和无法加载到集群内存的数据; 根据数据的复杂度,我们把数据可以分成能够分片并行处理的简单数据和无法分片的复杂数据。针对每一种组合,MATLAB都应该要有不同的解决方法,并且应该提供足够傻瓜的处理技术。”
在上述的二维划分中,我们可以把数据类型总结为三大类: 第一类为简单数据,即数据能够被划片,能够被多个节点同时处理。第二类为能够支持MapReduce操作的数据。第三类为复杂数据,这一类数据传统上属于高性能计算的领域,需要专门的编程和环境才能够处理。
第一类问题是最简单的,也是最容易被简单编程实现的。理论上,我们通过手工或者自动化把数据划分成单机能够处理的数据片,启动足够的计算资源即可。实际上,对这类问题的处理,在需要考虑计算效率的地方,还是需要一定的编程技巧要求的,比如如何做到负载均衡就是一个相对复杂的问题。MATLAB中通过并行计算工具箱和分布式计算服务器,可以用一个 ”parfor” 语句即可实现这类数据的并行化。
第二类问题可以通过MapReduce算法框架可以解决的问题。一般这类问题的数据是存放在HDFS之中,客户已经有了Hadoop环境,当时如何编写MapReduce算法是一个难点,需要一定的Java或者Python的相关编程经验,并且熟悉相应的API。在MATLAB中,你可以通过 “datastore” 直接访问本地文件、本地文件夹、HDFS文件、以及HDFS文件夹。工程师只要书写相应的MATLAB Map函数和 MATLAB语言的 Reduce 函数即可调用Hadoop环境进行MapReduce运算。在完成计算后,可以把相应的MATLAB代码放到部署App中,一键部署到MapReduce生产环境中。
最后一类问题最复杂,数据无法分割成片段,也无法通过MapReduce模型建模。一个典型的应用是大规模矩阵的分析。MATLAB中可以通过并行计算工具箱和MATLAB分布式计算服务器直接对阵列运算并行化。这类运算可以在客户端上对集群的计算过程进行交互式控制,并行化编程就像单机串行运算一样简单。
不管从大数据的处理流程上,还是从数据规模上,作为一个完整的开发平台,MATLAB提供了从数据搜集、数据分析、数据建模和应用部署等全面解决方案。用户可以不用过多关注编程细节,只需把有限的时间和资源投入到有效的分析过程中,让大数据应用开发成为一件简单轻松的事情。
陈建平,MathWorks 中国资深技术专家,专注于工程大数据分析和高性能计算领域。拥有北京大学学士和硕士学位,并于2008年加入MathWorks公司。之前,他在NTT DoCoMo从事4G算法研究和无线系统设计。加入MathWorks后,专注于高性能计算和工程数据的分析和建模,并深入探索工程数据在大数据领域的应用。他拥有十余年数值算法设计、实现,以及对大规模工程数据分析和建模经验;尤其对MATLAB与不同编程语言,以及Hadoop和Spark等大数据架构的结合有较为深入的研究。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。