关于云上大数据应用开发,IBM Bluemix工程师如是说
大数据和云计算已被视为一体两面,但在云上开发大数据应用并非易事,CSDN记者近日采访了IBM中国云数据服务资深架构师李鹏(Eric),深入探讨构建大数据分析应用面临的挑战及需求,Bluemix云平台的大数据分析技术能够为加速大数据应用的开发、部署和管理解决哪些问题,并重点介绍一些重要技术的实现,以及一些应用案例/场景,供开发者参考。
大数据开发的关键要素
云上大数据分析系统可以分成三个关键要素去考虑:
1. 分析的类型。根据信息密度和信息质量,需要选择不同的分析服务。如银行交易数据是高质量的信息,可以使用成熟的MPP RDBMS和自带列存储、机器学习库的库内分析技术,但像日志、用户行为是低质量的信息,数据量非常大,但是它的信息密度是不高的,可以考虑具有高可扩展能力的廉价集群存储,像NoSQL Database,并用企业级的Spark和Hadoop服务进行分析操作。
2. 数据传输效率。把数据上传到云端,低密度数据的传输可能存在效率的问题,需要高速的端到云的传输技术,具有高压缩比、高并发和高效传输协议的传输服务。
3. 数据存储类型选择,包括随机对象存储,大对象的存储,本地盘和远程存储,和存储的性价比。在云平台上可以考虑有的数据做离线计算,对于低活跃度的数据可以使用大对象存储。例如Swift,S3等。对于在线分析,需要IO吞吐率比较高,使用传输效率更好的本地SSD存储、或者挂载外部SAN、iSCSI等阵列。
IBM Bluemix的对应策略:
1. 针对数据生命周期不同阶段的分析要求,IBM Bluemix提供了针对高质量业务信息的dashDB ——基于关系型数据库的数据仓库,有列存储、分布式能力。来自与多源业务系统的数据,可以汇聚于Cloudant——IBM的NoSQL OperationalDataStore,既支持实时业务系统,也可支持基于MapReduce的数据分析。对于低质量、低密度但数量非常大的非业务数据和历史数据提供基于企业级Hadoop的BigInsight和IBM Spark这样的分析服务。
2. 传输的服务使用新收购的Aspera技术。根据最近的测试报告,在网络带宽允许的情况下,10G数据上传时间可以达到8.4秒,即便是100G以上的数据传输,也只是在分钟级别完成。
3.不同的云架构上,IOPS、吞吐量不一样,IBM Softlayer SAN以及SSD内置盘的IOPS可以达到6000,吞吐量可以在200M/s以上,甚至达到500M/s。
此外,在做具体分析时,还要考虑服务轻重的不同需求。如做预测其实是运用模型的很轻量的服务,但是对数据的训练,就需要一个很强大的计算存储的服务,只有针对用户场景,轻重结合才能有效的解决客户问题。对轻和重的服务,无论是计算、存储,都是需要可伸缩化的,可以做更有效的资源调度,高可用的支持,这也是云端能带来的最大的好处。
对于IaaS还是PaaS的选择,要根据开发人员的IT能力,以及对服务需求的理解。如果想在业务层面做得更深入,企业或开发人员希望把精力花在业务分析层面,使用PaaS也能把入门的门槛降低,可以更快地启动分析服务。如果IT团队能力非常强并对大数据平台本身构建很熟悉,可以选择基于IaaS搭建自己的大数据平台,高可用性、运维需要自己保证。
开源技术的选择
开源当道,IBM也很看重Spark、Hadoop和NoSQL(CouchDB)等开源技术在数据分析领域的作用,并投入了大量的工程师和资源,包括2015年在Spark上投入数亿美元,以及贡献IBM积累的SystemML机器学习库来完善Spark生态。生态系统是IBM Bluemix大数据分析服务选择开源技术最看重的因素之一,并且生态系统要有足够的可扩展、活跃度、接受度。比如说Spark的接受度,很大的程度来源于Hadoop存量用户。企业用户在HDFS上累积了大量的数据之后,一种新的技术能够基于内存直接分析这些数据,并极大地提升计算效率,自然就吸引了大量的Hadoop客户群体尝试迁移到Spark上。再者SparkSQL提供了更容易上手的查询分析接口,以前使用SQL做数据分析的程序员和数据科学家很容易迁移到Spark平台上。同样机器学习库的完善、流式分析、图分析等都吸引不同应用场景的客户。
不过,IBM会区别处理结构化和非结构化,基于积累了几十年的SQL优化经验,用更成熟的RDBMS技术处理结构化高信息密度的大数据的问题,而不是使用SparkSQL。与新生的SparkSQL相比,IBM BigSQL对标准的支持更为完善。IBM Big SQL在HDFS的层次上提供了更好的SQL优化和更佳的执行路径推导,完整地支持SQL2011标准,对于TPC-DS 性能测试中的99个基准SQL,对于使用同样的数据和硬件,BigSQL能完整地支持,并在性能上领先于Spark SQL,而SparkSQL作为后来者大约只支持半数。
在NoSQL领域,IBM主推的是分布式数据存储解决方案Cloudant,Cloudant有灵活的水平扩展的能力,以及强大的高可用性。它可以在短时间内把集群节点数量从几个扩展到几十个甚至上百个,能够轻松应对业务量的爆发式增长,非常适合Web应用开发和移动应用开发。Cloudant支持混合云的部署方式,既提供本地安装版本,同时也提供云上的全托管服务,让开发者能够灵活、经济地获取Cloudant数据存储能力。因为CAP原则,它可以更好的做到可用性和扩展性,能够处理很大的并发,但是在一致性上Cloudant采用的是最终一致性,所以不适合对事务的一致性要求很高的场景。但因为高一致性和低一致性场景是一直存在的,SQL和NoSQL会长期并存。
Bluemix整体架构和核心组件
集成开源技术,到目前为止,Bluemix平台上提供几十个数据服务(IBM的十几个服务加上第三方的服务),针对不同行业不同的业务场景来构建大数据分析平台和大数据分析服务。其总体的设计思路是以解决方案、业务场景驱动,划分出来几种不同的产品。
- Cloudant是一个文档型的数据库,不需要事先定义数据模式,预定义表结构,数据中的每条记录都可能有不同的属性和格式。只要求数据的存储格式为JSON。
- dashDB是针对高质量数据的分析业务,可以在1- 10+TB级别对最高质量数据做快速地分析,支持R、分析引擎、库内分析、列存储,MPP等。
- DB2 on Cloud主要针对于传统的RDBMS 的用户,可以做全托管的数据库,让它在上面完成相关业务。
- BigInsight和Spark,针对的是低信息密度的大数据量的分析场景。Spark加入了IBM独特的的调度引擎,而不是纯粹采用开源的引擎。
算法支持
Bluemix上整个大数据分析对主流的算法都是支持的。一些机器学习的算法,如朴素贝叶斯、K-means、决策树、随机森林、协同过滤等等都可以在不同的服务中找到。IBM把之前很多的Netezza分析库上的算法,都内降到了dashDB里面。而且对数据分析中常用的R语言也有很好的支持,大部分的数据服务,都可以直接使用R来完成数据建模,可视化。
性能优化
性能调优,如dashDB对于SQL调优,IBM有成套的工具,可以很好地发现问题,进行调优。对于Spark和企业级Haoop的支持,有完整的监控体系,可以发现死锁Job,让任务终止,或者是释放更多资源来自动完成大数据的分析。大部分情况下,Job的监控是不需要用户感知的。
优化代码
如果通过SQL开发一些场景,可以用query tuner解释、优化代码。像R语言,则是有一些现成的IDE去完成。当然代码优化很大程度和性能调优有一定的关系,就是针对不同的任务和数据特征,使用不同的运行参数,保证Job在平台上跑得更快更好,同时使用各种云端工具提供各种代码的优化建议。再者,因为用Scala写的和用R写的都有可能是单独运行的。现在的做法是把很多的算法和序列封装到库里面,尽量减少代码量,容易出错的概率就减少,让代码更加接近于优化。
数据安全
Bluemix通过了ISO27001数据安全的认证。而Bluemix的数据服务层面上主要做了几方面:
- 数据库本身的加密,Admin也没有办法看到用户数据。
- 对于HDFS本身的加密,对Big Insight、Spark的加密。
- 运营系统的SLA。每个人的操作完全可监控。
Bluemix大数据分析生态
- IBM去年宣布投资1亿美元成立Spark研发中心,把SystemML贡献给社区,并且已经有很多的贡献者进入到了Spark社区。对于Cloudant,IBM有很多的代码贡献给了CouchDB社区。
- 举办黑客松活动,在全世界范围内吸引开发人员了解、学习和使用IBM的大数据分析平台。
- 在不同的学校,IBM也有一些课程去教授大数据分析技术。
- IBM还有一个大数据大学的全球计划,在国内会通过在线教育网站MOOC,提供了很多大数据分析的课程,以及一些基础课程。目标是在全世界训练一百万个数据科学家或者数据编程者,更广泛的拥抱大数据分析的平台。
获取更多大数据分析相关课程
中国站:http://www.bigdatauniversity.com.cn/courses
美国站:http://bigdatauniversity.com/#
应用入门
在Bluemix上做一个大数据分析应用。首先第要考虑数据的清洗、变换,寻找关键的因子,之后才能根据问题建立模型。然后使用更多的数据验证这个模型准确率和召回率,取得反馈,再应用反馈到数据处理阶段以及模型设计里,反复迭代,最后完成数据的清洗、建模、校验、预测、反馈,然后再建模再收集反馈,多次迭代,构建出更加精准的模型。
Bluemix是一个基于CloudFoundry的平台,对不同服务的整合和应用的整合是非常轻量的。开发者在本地区完成开发,做一个在线的绑定,就可以把这些服务很快地连接在一起,应用很快就能在Bluemix平台上跑起来。
当然,使用Bluemix,首先需要对CloudFoundry有一定了解,因为Bluemix的每个服务的配置是不一样的,根据业务场景选择了不同的服务,会限制可以使用的资源。比如存储的限制,dashDB free的版本是20G,如果强行要30G可能就出问题了。这些可能是新手会遇到的问题。有一些还和编程上的习惯有关的问题。可以通过邮件和在线帮助系统获得答案。
应用案例
目前在Bluemix上使用dashDB服务、Spark服务、Hadoop服务等做大数据分析的活跃用户有3-4万,Cloudant用户有9-10万,有几十个大用户在使用大数据分析平台的Big Insight、Spark和dashDB。一些中国的游戏公司已经开始在商业环境里面使用使用NoSQL来完成游戏的开发和扩容,一些做地理位置信息的公司也在使用Cloudant。
IBM客户群体集中在金融、保险、生物制药、零售行业等,以及其他领域的世界五百强的企业。在这种不同的领域,IBM构建了不同的解决方案和服务去针对它的产品做处理。
例如,使用IBM dashDB做用户流失分析案例,通过选择合适的相关因子例如购买次数、购买品牌以及交易类型,采用朴素贝叶斯算法训练模型,然后使用测试数据去验证这个模型,最后放入一个全新数据来预测用户流失可能性。这是一个典型的案例,详细的建模过程参见:https://github.com/cuericlee/dashDB
又如极限追踪的案例,对实时LBS的数据的进行预测分析,来确认极限运动的飞行状态,以及预测极限运动员是否即将遭遇危险。预测模型试图回答两个基本问题:1.运动员是否处于飞行状态?2. 极限运动是否是即将经历危险?IBM在超过8000万的存量数据序列上使用IBM Spark服务分类、清洗、拟合模型,并在Bluemix上部署模型应用,为极限追踪提供轻量的REST接口,对追踪的实时数据做出低延迟的精确预测,目前准确率可以到达90%。当然中间有很多的数据的清洗、变型和不停地迭代,还要处理一些特定的问题,比如说,如果极限运动员坐在汽车在山间穿行,追踪器产生的数据就会对模型产生很大的干扰。如何去规避这些问题,需要去不断修正模型并引入新的因子和规则,例如等高线数据等。IBM正在把这些成果应用于极限追踪的在线产品系统中,并会在未来的一些会议中公开技术方案。
交通方面的案例,比如和福特合作的一个智慧交通项目。是用Clouant移动设备端开发能力和对地理空间信息强大的存储、索引和分析能力,能够实时地预测一个可以停车的地方。通过大量的数据分析可以找到一个更适合停车的位置。考虑交通流量分析、红绿灯、店铺的位置等。
对于开发者的价值,Bluemix不只是一个技术的堆叠。首先是服务之间的合理集成,这部分工作在其他的应用平台上需要自己去搭建和管理,分析平台需要自己去运维。最主要的是对特定的业务场景,如果没有经验,要走很多的弯路,Bluemix平台承诺提供很多帮助给客户的特定场景的案例、SLA以及专业的支持和指导,比如说适合于使用哪种模板完成业务,使用哪种服务去清洗数据、变型数据,像处理变型和规划,还有使用哪些存储服务更适合场景,还有如何验证模型,让预测服务和生产系统之间做完整的集成,这些都会提供建议,以更快地实施大数据分析方案,让生产系统运转起来。
IBM有7×24小时的服务团队。根据SLA,收费用户能得到7×24小时的反馈,特别严重的级别的问题,能在一个小时以内得到响应的。
Bluemix大数据未来技术路线
普通的大数据、结构化的大数据和NoSQL,三方面都会有更大的投入。
- 持续地在Spark上面投入。Spark会渗入到的分析产生的各个地方,包含ETL里,分析服务里面都会和Spark结合。Spark的计算平台会更加的扩展性,能支持更多数据源和服务集成,提供更友好的交互接口,让用户更透明的在上面运行Spark。
- RDBMS。会在dashDB集群并行化上投入更多的精力。现在可以支持多节点的规模(6+),以后还将实现更多计算节点的线性扩展以及高可用性。
- NoSQL。会继续投入Cloudant,如地理位置信息查询的支持,更大规模的集群,以及Master-Master适合多国的机器的支持。