星环科技是一家非常年轻的创业公司,主要做Hadoop的商业版本以及在Hadoop上的数据库产品。Cloudera、Hortonworks、MapR是大数据领域的三家美国公司,而星环是一家专注于做Hadoop商业版本的本土公司。
星环擅长的领域是Hadoop上一个比较完善的高效计算引擎,可为用户提供数据库服务,建立一个大的数据仓库,实现数据挖掘,也提供实时的数据处理相关的产品。星环科技创始人兼首席技术官孙元浩为我们介绍了星环科技在国内应用大数据技术的三大挑战以及应对方法。
大数据的可用性
Hadoop是一个庞大的系统,非常难用。过去互联网公司主要通过组建一个大的团队来维护Hadoop集群。如今当Hadoop技术运用到各行各业时,技术的使用难度这一难题就逐渐凸显出来了。
首先是缺乏完整的SQL支持。没有完整的SQL支持,很多应用难以实现数据的迁移,新的应用开发困难。
其次,仅有SQL还不够。因为Hadoop中间是一个核心,中间有了一层SQL支持以后,上面的应用开发人员还需要一个完整的标准接口来访问这个数据库、新的数据架构。这些数据接口本身也没有实现得很完整。
第三个问题是,中间件经过多年的发展已非常丰富,开发人员借助中间件开发应用程序,而中间件如果不能对接Hadoop,应用开发人员在使用Hadoop过程中也会面临诸多不便。
应用开发人员特别是没经过Hadoop培训的开发人员会发现Hadoop很难用,同时业务人员缺乏一个有效的用以访问Hadoop的工具,如报表工具、分析软件等。虽然很多厂商已经开始实现这些工具与Hadoop的对接,但并非所有的功能都可以在Hadoop上实现,这也构成了一个挑战。为了实现更好的对接,这些工具厂商都需要时间,使得Hadoop的可用性受到一定的局限性。
星环科技从Hadoop层开始提供完整的SQL支持,包括SQL2003和存储过程的支持;更完整工具类的支持,包括DBC/ODBC式的驱动接口,以达将Hadoop作为一个完整数据库供应用程序使用的目标。
目前星环科技正在支持更多的中间件软件,便于开发人员在使用Hadoop时可以像使用传统的关系型数据库一样进行非常方便的数据访问、进入数据访问层。同时,与各种各样的工具的对接来提高Hadoop的易用性、可用性。
在Hadoop上面的SQL支持仍然是对各个引擎有不同的支持程度,星环科技已经在SQL上建立起相比其他开源引擎快至少两倍以上Inceptor SQL引擎,在TPC-DS 99个SQL的连续测试中都能够正确运行,这样的一个程度能够使得用户将原来的应用能够轻松迁移。
同时,星环科技跟IBM进行了一些深度合作。虽然现在Hadoop的架构可以横向扩展,但随之而来的问题是,30T的数据量需要用30台x86机器来处理,大概需要花将近20个小时,效率缓慢。
“但是,我们在做性能优化的时候发现,Hadoop在计算过程中耗费的CPU是非常高的,CPU利用率达到99%。也就是说,要想得到更高的性能,我们需要一个更强的CPU。”孙总谈到,“我们看到POWER8的CPU,拥有单颗CPU 12个核,每个核有8线程,高性能的计算可以帮助我们大数据软件得到更高的加速。”
数据的一致性
现在的数据仓库主要分成两种,一种是传统的数据仓库,一种是实时的数据仓库。
在第一种场景当中通常是数据批量的导到数据仓库当中,初次是批量导入,然后每隔一天或几小时把增量数据导入到传统数据仓库当中,需要对数据仓库进行修改或者插入。同样对于实时数据仓库而言,需要对数据进行实时的插入和更新,这两个应用使得对数据平台的要求不大一样。
从本身来讲,批量更新通常是多个客户端、多个服务器同时往多台服务器进行更新,这样的操作即是全球的分布式事务。例如对一张已有的表进行插入和更新,根据用户原来的一些指标更新风险值或者信用值,这样的应用场景需要保证它的一致性,也就意味着用户在操作的时候必须全部成功,否则就是全部失败,不能因为一台机器出现故障,导致数据不一致。
如何解决这一问题呢?星环科技的Inceptor用来解决分布式一致性的问题。通过把读取和写入分开,提高读和写事务的并发度。通过协议保证所有写数的可创新化,实现了可创新化的判断隔离技术,如此用户可对数据进行连续的增删查改,同时保证一致性。
一致性是所有用户最关心的问题,谁也不希望在使用Hadoop以后、在进行数据加工的过程中出现错误。过去很多人认为大数据可以容忍数据的不一致性,因为数据很大,然而现在不用牺牲一致性,仍可保持分布系统中的数据一致性,这样应用范围更加广泛。
从大数据中发掘价值
随着大数据越来越得到大家的认识和接受,很多客户和合作伙伴积累了大量的数据,如何发挥大数据的价值是比较大的挑战。
目前创新的应用可能还不是很多,无论国内还是国外,用户都在经历三个阶段。
第一个阶段,首先把数据收集起来存在一起,提供在线查询功能,可提供数据给内部部门和外部客户。
第二步是快速利用SQL Hadoop引擎,对Hadoop上的数据进行大规模的统计和分析,在上面进行交互式分析和报表,对客户进行精准的画像。
再往上对数据进行深度探索或预测性分析的时候,就发现一些挑战。
这些挑战有三块:
一是没有比较好的工具从大量的数据中抽取特征,包括结构化数据和非结构化数据,怎么应用算法?比如从非结构化数据中找出指标来进行下一步的数据挖掘。
第二步也是很大的差距,Hadoop上的分布式算法不是特别多。虽然大家认为Hadoop以后可以不需要采样,可以对全数据进行分析,但是这样的分布式算法对全量数据进行统计的算法仍然是不多的,需要在其上进行很多的开发工作。
三是缺乏一个易用的工具,大数据分析部门团队通常需要三类人。第一类人是需要对Hadoop比较了解,能够对数据进行加工、能够进行抽取编程;第二类人是熟悉各类算法的人,能够对算法进行复杂的应用,能够进行建模;第三类是业务人员,需要从业务角度提出一些需求。
这三部分是必不可少的。那么问题来了,多种不同类型的人对数据进行挖掘、发现它的价值,最佳的方案是要简化,提供统一的语言、统一的工具,甚至业务人员都可以直接使用这个工具进行数据挖掘,这就提供了真正促进数据挖掘成为主流应用的方式。
所以,实现RHadoop应该在Hadoop上提供完整的R语言支持,让用户既能使用传统的串行在R的5000多个算法包,也能够使用分布式R的算法库。星环科技在过去一段时间也做了很多的改造,提供产品来对数据进行深入挖掘,首先是可以让用户通过R语言直接去操作Hadoop上的表,这些表可以映射到R语言当中,使得只要是熟悉R语言的用户就可以来非常方便的操作几十TB级别的数据、可以做特征的选取。
其次,实现55种统计和精确算法,来覆盖了精准营销、风险分析、反欺诈、文本分析四大类应用,这种算法一直在继续增加,这些算法会提供非常高效的数据挖掘工具。这些算法本身是和R语言的函数定义是类似的,跟在SQL实现SQL Hadoop的策略是一样的,过去是实现标准SQL语言,但实现是完全不一样的;今天星环科技希望维持R的原生函数或者是它的调用接口、简单的扩展,提供底下完整的实现,对全量数据进行分析。如果光靠这55个算法不足以做非常复杂的风险模型,还需实现原生的R几千个算法包在大平台上的直接使用。提供的框架可以让用户在分布式数据上直接应用这些串行算法,从而提供帮助用户在数据中挖掘价值的方式。
“我提到了三大挑战,其中两大挑战是怎么访问这么大的数据,通过SQL和R语言来让数据统计和数据挖掘变得更加可用、易用。”孙总说到,“同时我们也意识到传统关键数据库的特性,今天在分布式数据库上仍然能够实现和保证,这使得以前的应用可以方便的移植到新的平台上,同时可以借助新的学习和统计算法,发掘更多的价值。”