大家好!今天我讲的内容有点偏技术,我们主要是给用户提供工具,我们并不是做某一个行业。我先做一下自我介绍,我是国信达软BI技术顾问。主要基于开源平台上做BI,如果大家做过报表、做过EPR应该了解,在开源领域,开源BI产品是非常少的,只有两个:Pentaho;SPagoBI。
首先看一下我们大数据的整体方案,这是一个比较概念性的方案。这个方案最顶层是展现这层,这层包括报表。在展现层和数据存储层之间可以建立一个业务模型,包括如何做数据挖掘需要做分类的模型,如果做多维分析要建立多维分析模型,如果做报表要建立业务模型,这是模型层。我们的工作主要在ETL这一层还有展现这层的工作。至于其他层,如存储层可以用Hadoop等产品……我们今天的交流主要集中在ETL这一层。
什么是ETL?我们主要面对的是企业的业务部门,企业的领导和决策层他们需要看到数据,他们只关心两个事情,他们只关心能不能在规定时间内看到数据;看到的数据是不是完全正确的。我们为了保障用户能看到数据,首先利用模型会建立这样一个模型,下面还有一个数据挖掘模型,预测分析模型。这是我们希望的数据模型,我们希望的数据是干净、经过处理的。我想大家很多是IT部门的CIO,我们面临的问题是数据是不干净的,存储在很多地方,比如说数据有格式化的、非格式化的,日志文件、HTML,还有一些PDF文件、网页、微博上的数据,等等。中间的过程就是ETL过程。这是一个概念的图,实际上还要建立主数据、业务流程。
打个比方,用户想要干净的水,很简单。如果我们是纯净水企业,我们有着不同形态的水,可能是雨水、河水、地下水,我们的工作是要把这些自然形态的水变成用户可以消费、可以喝到的矿泉水,这个过程就是ETL过程,把水抽过来,做清洗、转化,加工,最后装到瓶子里。抽取、转换、加载。这就是ETL的含义。
如何做ETL?从过去的几年来看,我们做ETL大部分是通过写代码的方式来做,这种方式被慢慢的抛弃了。现在我们都要用流程图的方式,画一个流程图来做ETL。市面上有很多商业软件,比如Infomatica,Datastage,微软的SSIS等,基本上和这个非常类似。我们今天讲的开源的ETL工具Kettle也是以画图的方式来解决ETL问题。
这是我们做ETL的三种方式的时间和成本的比较,进行的比较。
第一种是手写代码,第二种是从上到下的曲线,这种是商业的ETL软件,第三种是开源的,就是这条绿色的横线,这三条曲线揭示的是随着时间变化,ETL成本有什么变化。手写代码的这条曲线,开发人员用两个月时间把数据搞定了,随着需求不断变化代码要不断更新,但是人员换了一个,随着时间推移,代码维护越来越难,甚至不可维护。很多企业都是商业的ETL,有一些商业软件最大问题就是成本太高,比如有的购买成本大概是100万,每年还要交维护费用,所以初期成本非常高,初期购买成本随着时间推移也在均摊,成本会慢慢下来。而开源软件初期成本不高,只是每年的维护费用,所以基本是一条直线。
PentahoDataIntegration是一个开源软件。它在国内不是很流行,但是我们之前就一直在推广。它的原名叫Kettle(水壶),现在叫PDI。Kettle可以独立使用,也是PentahoBI平台的一部分,它分为社区版和企业版,通过开源版吸引用户,通过企业版为企业增加收入。我们这次交流的主要是它的社区版。
这是我们刚才打比方的一个再细化的流程,从水源到成品水,实际上我们建立数据仓库中间还要经过很多过程,第一部分是水源,DataSource,先放到DataLake(s),然后到DataMart(s)、DataWarehouse,接下来是Ad-Hoc。
首先看看怎么从不同数据源把数据取过来。这有一个特点是系统数据和原数据保持转换,不会做任何转化。这样的话,如果前面数据报表出现问题,就可以追踪溯源找到是哪条出现了问题。所以从DataSource到DataLake(s)数据不发生变化,但是难点在于数据源有很多种。我们看看Kettle支持哪些数据源?这些都是Kettle数据源。表输入可以支持30多种数据库,甚至包括一些国产的数据库等等,另外还支持PDF文件输入、Excel输入,企业80%数据源都可以通过这个方式处理数据。除了已经设置好的数据源,如果说企业数据特别特殊,我们还有自定义格式。也没有关系,Kettle有一个开放的接口,我们可以自己写代码来扩展。比如说Oracle增量表输入,这就是我们自己写得插件。
现在我们再看一下,第一个就是数据源,而第二个阶段从DataLake(s)到DataMart(s),这里最麻烦的就是数据清洗和排除,好几个数据源过来如何保证它是正确的。难点是数据验证、排除,需要人工干预,但是ETL可以帮助你建立企业的主数据。
我们看看Kettle怎么建立清洗流程。Kettle清洗流程非常简单,这是一个转换的图,从前面拖过来一个输入以后,我们自己定义很多校验规则,定义数据长度是否在规定的长度之内,数据的大小取决范围都可以设定好,设定好之后根据不同的错误会分别到不同的地方再做处理,这是一个业务流程,它非常清晰、简单,维护起来会轻松很多。
再看第三个环节,ETL第三个场景就是这里,要求快速开发。针对此我们推出“敏捷BI”的概念。大家听说过“敏捷开发”,其实两者是相似的,要求开发人员、业务人员合在一起开发。这在以前看来是难以想象的,业务人员也不会写代码,而现在有一个工具,通过这个工具,业务人员、开发人员可以通过这个工具来工作,这个工具可以画ETL流程图,也可以在这个工具里把画好的ETL流程通过建模展现出来。同时业务人员可以看到这些数据是否是你需要的数据,哪些属性需要修改。从ETL到建模到报表进行一站式开发,可以减少很多迭代过程,效率比较高。
怎么支持大数据?有几种方式:Hadoop、MongoDbInput、HBaseInput等等。Kettle本身支持这些,包括数据库的写入、抽取数据,除了这些还包括可以调用其他的作业(这是Hadoop自己带的脚本工具,如Pig,Oozie等,Kettle可以自己调)。另外还有基于关系型数据库,这种基于列存储的关系数据库在设计时考虑到查询性能,所以也适合于大数据的场景。如Greenplum,Infobright等,我们也在帮助客户做这些数据库和Kettle的实施工作。
下面介绍一下我们的案例。Kettle在哪些地方应用呢,也是大家比较关心的。
这九个地方跟我们有关系。首先看一下流程。联想进入的时间比较早,他们也比较注重开源,如何降低企业成本。我们2008年开始合作。当时给联想做了一个报表系统,联想在亚太区13个国家的门店、代理商每天销售的计算机,计算机销售情况都会上报到联想总部。Kettle从上报数据里生成报表,直接发送到邮箱里。同时里面加入回执功能,统计一下谁看过这个报表。
第二个是是一家外企,PHOENIX。他们有一个数据中心在美国,希望把变化数据同步到世界的其他的数据中心,这也是一个比较早期的项目数据。当时用的是Kettle3.0的版本。
刚开始大家用Kettle不太放心,担心会担心出问题。当时给PHOEIIX做这个项目的时候,他们的经理还问我,“我们是不是第一个国内敢吃螃蟹的公司?”我说“不是,联想已经吃过了。”所以大家可以放心,我们可以帮助大家解决使用中遇到的问题。另外政府部门也在用,比如说公安部数据量比较大,比如人口信息查询,驾驶员信息查询。还有我们跟地方公安局有合作,这样可以降低他们的成本。另外还有电商,比如58同城、淘宝都在用。电商开发能比较强,我们跟他们做是为他们提供咨询、培训,帮助他们的开发人员快速掌握。其他的还有品众互动、四维图新,这些是科技类的中小企业,品众是做网络营销的公司,帮助企业推广自己的品牌。现在和我们合作做Hadoop,把数据从Hadoop抽出来,他们每天的数据量大概在一个T左右。还有四维图新,它是做地理信息的,他们发布了一个手机应用叫“就近儿”,类似“百度地图”,可以查找到最近的优惠券、最近的商铺的信息,我们做后台的数据处理,包括把数据从不同网站抓过来,把数据集合进行排重,融合,最后进行数据发布。
下面三家是比较大的国企,比如说中国联通,他们有一个使用Kettle的项目规模比较大,现在正在进行中,第一期已经做完了,还比较顺利。还有中国电信,电信跟我们的合作也比较长,帮助我们不断的提高产品功能。这个产品是开源的,但是我们也可以往上提交代码,也是其中的一个成员。另外就是国家电网,通过第三方公司做项目,我们给第三方集成商做技术支持。
下面是我们公司和北大CIIM中心云计算应用联合实验室合作的介绍。这个实验室的目的是帮助用户基于国产和开源的软硬件构建下一代基于云计算的、安全可控的、低成本的信息系统。我的交流就到这里,谢谢大家!