思明软件大数据技术平台除解决海量数据存储和快速并行处理之外,还对大数据服务和管理进行了技术革新和封装,使其能满足应用开发各种业务需求。本期云先锋将为大家分享思明软件大数据平台打造历程和Impala实战。
在采访思明数据刘诚忠的过程中,他表示当下大数据领域企业级市场靠技术垄断获取高额利润的玩法已经过时了,技术的成本会不断降低,这是大势所趋,这个市场的巨头会出现在技术很好,但服务更好的公司里。而站在用户的角度,用户们首先关心的是如何让数据发挥价值,然后才是这套解决方案依赖何种技术,是否能快速应用,是否能适应后面可能的扩展,相对技术来说第一点是更难的。
事实上今天的企业客户,特别在大数据技术领域,更需要的是长期的合作伙伴。他们不只需要购买技术密集的产品,还需要和大数据的技术专家一起研究如何让数据发挥出价 值,利用技术公司的丰富经验跟企业现有的业务进行碰撞,一起探讨新的数据应用场景,这是客户最需要的,也是思明数据最擅长的。下一步才是考虑使用何种技术方案的 问题。一个经验丰富的大数据公司不只是处理大数据,应该能帮助企业客户发现数据、带来数据、进而整合出合理的数据模型,然后再考虑展现,最后反映到企业的日常决策 中,形成运营-数据-决策的良性闭环。
思明数据走的是拥抱开源但坚持自主研发的路线,他们在提供产品的同时也提供解决方案。为了和各大发行版兼容,思明的大数据基础平台保持完全的标准化和开放性,在平台方面主要是bug fix的跟踪和patch跟踪,解决各个组件的依赖问题,发布稳定的,验证可用的大数据平台版本。针对思明软件大数据技术平台的具体打造历程,我们采访了思明软件技术经理刘诚忠,以下是采访实录。
思明软件技术经理 刘诚忠
思明数据的团队、定位、优势
CSDN:首先介绍下自己和思明数据,目前的技术团队情况如何?
刘诚忠:我2008年毕业于北航计算机系,在VMware中国研发工作4年,做网络虚拟化和虚拟机在线迁移优化的工作,接下来在国内领先的广告技术公司秒针系统负责分布式系统的设计实现,目前在思明数据担任研发经理,负责大数据技术平台方面的研发工作。思明数据是新兴的一家本土大数据技术公司,我们的核心技术团队基本上都是计算机,数学和信息学背景,90%以上都是清华、北大、北航、北邮、中科大、CMU这些海内外名校毕业,可以说是国内大数据技术人才密度最高的公司。
CSDN:目前企业级的大数据应用、实施和分析领域,国内外的市场态势如何?思明数据在其中的定位是怎么样的?具备哪些独特的优势?
刘诚忠:传统数据应用分析这块,基本是IBM、HP、Oracle等国际软件巨头的天下,这些先基于单机然后再扩展的方案,都是性能优先于扩展性的解决方案,而且各家都是闭源的技术封闭形成技术垄断,因此在过去的几十年里赚走很大利润。我们当前面临的这次技术升级,是来自于整个社会电子化以后信息的爆炸,导致可利用的需要处理的数据量暴增,而传统体系架构并没有发生革命性的根本变化,比如量子计算机,具备扩展性的方案基本还是X86的天下,通过线性扩展去应付增长的数据,这给来自Google的内部实践然后由雅虎的一些工程师参考设计最后流行起来的Hadoop技术路线一个蓬勃发展的机会。
基本上新兴的大数据解决方案,都建立在一个相对简单廉价的分布式文件系统(HDFS)基础上,围绕大数据移动成本极高的关键点来设计,通过架构获得性能优势和扩展性,相对于传统方案来说,这具有更好的扩展性和更低的成本。当然传统的软件厂商也在努力去适应这个技术潮流,有的公司会把原有产品和Hadoop这些工具整合打通比如Oracle,有的会和Hadoop商业发行版进行合作一起打造整体解决方案比如EMC和MapR合作,所以总的来说在当前企业级大数据应用分析特别是交互式分析这块,还是传统商业软件转型和新兴的基于开源标准的商业产品PK的态势。但是值得注意的是,基于Hadoop社区的整个产品族趋势已经形成,这个路线已经是势不可挡了,这意味着很难再重新做一套Hadoop这样底层基础架构的东西并且获得大家的认可支持,阿里的技术团队能把Oceanbase这么多年坚持做下来是个奇迹,我个人对此抱有敬意。
思明数据走的是拥抱开源但坚持自主研发的路线,我们提供产品的同时也提供解决方案。思明的大数据基础平台会保持完全的标准化和开放性,这是为了和各大发行版兼容,在平台方面我们主要是bug fix的跟踪和patch跟踪,解决各个组件的依赖问题,发布稳定的,验证可用的大数据平台版本。在此基础上,我们一方面提供企业级使用必备的功能组件,包括运维管理、任务管理、用户审计、访问安全、权限控制、实时分析引擎等核心组件,另一方面开发丰富的上层应用,我们的实时分析引擎是国内首家整合了MPP和迭代计算的混合引擎,屏蔽下面各种组件的复杂性,向上层应用提供一致性的SQL接口;数据挖掘平台致力于让普通业务人员也能够轻松创建和训练模型,让业务人员轻松转型数据科学家;可视化展现平台能够让客户快速创建基于HTML5的类似数据魔方这样的报表工具,直观感受数据的威力;数据工厂则拥有业内领先的大数据实时增量同步的功能。总的来说, 思明立足于扎实的技术功底提供标准化的平台搭建,又有强大的上层应用开发能力,帮助客户发挥数据的价值。
附图:思明大数据产品图示:
用户最关心的是什么
CSDN:思明数据的用户分布如何,有没有一些重量级的客户?
刘诚忠:我们服务过的用户已经覆盖了金融、零售、通信等多个领域,典型的客户比如中国银联、邮政储蓄银行、CCTV、中国联通、国家统计局、苏宁云商、国美在线、贵州电网等等,这些客户都有一个共同点,就是他们有丰富的数据,迫切需要从这些数据中提炼信息,进一步引导决策。一般来说客户分为两类,一类是单纯的企业信息架构的技术升级,我们会提供大数据技术平台产品,帮助企业进行升级;另一类是面临新的数据驱动的业务,需要信息技术支撑,我们会从业务入手,搭建整套解决方案。因此,思明数据可以说是国内为数不多的,既能够提供基础的大数据平台,又能够提供与业务密切相关的上层大数据应用的,最完整的大数据整体解决方案提供商。
CSDN:站在客户的角度,最关心的问题有哪些?你们如何应对?
刘诚忠:客户首先关心我面临的数据如何发挥价值,然后才是这套解决方案依赖何种技术,是否能快速应用,是否能适应后面可能的扩展。相对技术来说第一点是更难的,这要求和业务方紧密合作,思明的技术团队植根于数据挖掘应用领域多年,有丰富的经验帮助企业做各种数据驱动的业务提升,事实上今天的企业客户是不希望一个公司只卖产品的,特别在新兴技术领域,思明更愿意做的是长期的企业合作伙伴,我们的技术专家会和业务方坐在一起长达数月,讨论研究出如何让数据发挥出价值,用我们的经验跟客户已有的业务进行碰撞,一起探讨一些新的数据应用场景,这是我们最擅长的,也是在我们看来客户最需要的。
第二点才是采用何种技术方案,比如如何搭建底层存储计算的大数据基础平台,但这还只是一个基础性的设施,这对真正企业的解决方案来说,只是一部分。大数据技术要在客户那里落地,有无数隐形成本,需要考虑包括ETL、运维管理、权限审计、业务应用、可视化展现等诸多环节,思明数据是国内目前对大数据提供解决方案最完整的技术公司,我们的产品覆盖了从数据迁移,数据基础平台到数据挖掘应用,数据展现的全栈,这样的好处是能够保证最大的一致性对客户服务,降低交付成本,以最敏捷的方式让客户迅速得到业务提升。
思明软件大数据技术平台打造历程
CSDN:能否分享下思明软件大数据技术平台的打造历程?
刘诚忠:经验很多,教训更多,整个技术团队基本都是踩着坑过来的,像我是从秒针系统过来,也有从Ebay、百度、酷我这些互联网公司过来的同事。拿我自己来说,我和我的团队在2012年开始基于PostgreSQL9.1(pg)做一款分布式数据库集群,采用分区的一些水平扩展常用方式,用10台机器实现了秒级查询TB级别数据的目标,当时团队就3个人,主要精力花在元数据库的设计,数据如何高效的分表导入集群,以及利用文件系统的已有机制便捷的实现一个任务工作流,但是对SQL的解析这块非常弱,几乎只能跑最简单的SQL,因此使用范围很有限。
不过我们后来在2013年把Cloudera Impala进行了hack,使用Impala作为pg集群的引擎,得到了很好的SQL覆盖面和不输于Impala的性能。在2012年底开始,我们用C++基于pg, rabbitmq消息队列自己设计实现了一套分布式存储计算平台,这个软件里的各个模块充斥着各种程序员喜欢的名字比如Amoeba之类,上线后运行至今,处理每天秒针对全网几十亿广告曝光点击的海量统计日志,分别出实时报表和每天的批处理报表,现在看来这个架构类似于混合的Storm和Hadoop。
当时一个清华毕业的工程师用一个模板类非常精简的实现了Map和Reduce原语,然后我们搭建了核心的批处理模块,再基于此开发消息队列流转经过的各个运算模块,最后使用PostgreSQL数据库作为结果汇总,类似这样的经验还有好几次,2012年的时候我们使用KFS的集群已经上百台,很多问题KFS开发团队都没遇到过,只能自己维护一个版本。我们当时一直在自主开发这些系统,也一直在关注Hadoop社区的进展,同时做各种尝试和性能对比,对Hadoop的稳定性和可调试性一直都不太满意,直到Hadoop2.0出来后,我们认为开源标准这边的趋势已经形成,才放心的开始切换到使用Hadoop的路线,于是技术团队又开心的在Hadoop社区的产品族里做各种尝试。
总的来说,我们技术团队的大多数人有比较类似的教训,那就是大数据基础技术的研发成本是很高的,大家各自为战去开发这些复杂度非常高的系统是一件非常不划算的事情,在目前开源技术成熟的情况下,紧密结合主流的标准技术是一种对未来负责任的做法,也是更为安全的方案,有个例子是当时Hive出来时对SQL支持很不完善,开源社区有很多人自己开发parser去支持更好的SQL语法,但是这些项目2013年后大部分都停了,因为后面Hive0.12,0.13冲得很快赶了上来,大家发现使用标准的Hive更容易和整个生态圈的产品协同合作,于是又纷纷转了回来。在我看来,开源就类似于三体里的安全声明,对某一个细分的技术方向发出号召,大家一起来打造优质的东西,而不是互相不知情各自为战,这样的组织方式带来的好处就是大大降低了后面技术升级时被淘汰的风险。
所以对思明而言,我们提供企业服务,客户在上线这样大规模的信息架构系统面临什么风险是我们的第一考虑要素,吃了这么多年闭源商业软件的亏,客户都明白不能被锁在某一个厂商的平台上,如果要换其他平台应该能够无缝的切换过去,这就要求我们对客户尽量提供业界标准的通用技术架构,我们的自主研发产品都是以添加功能的方式放入这个平台而不是侵入性很强的修改方式,保证整体的移植性不受影响,这样就有利于客户后面的技术升级,降低风险。
Impala实践经验分享
CSDN:你是Impala实践领域的大牛,在Impala的使用上有哪些分享给大家的?
刘诚忠:我们只是实践者,Cloudera Impala有很好的代码质量,是不错的SQL引擎学习资料,最好的学习就是去hack,这是在VMware工作时我的经理何英女士灌输的理念。Impala目前还是一个半开放的状态,因为核心团队对代码质量要的很高,并不希望很多人参与一起开发,所以虽然是开源,但并没有形成大的社区,至今交流也主要是Mail List和Google Group,这对于希望在这基础上做二次开发的技术人员很不方便,比如应该给出更完整的测试集和bug跟踪。也是因为这个原因,虽然在国外很多商业公司生产环境中得到使用,但是并没有什么很大的声音发出来。总的来说,Impala是经过验证的成熟的SQL on Hadoop引擎,适合企业做大数据的交互式分析,使用Cloudera发行版的企业,应该能放心的使用,我们尝试过把Impala跑在标准的Apache社区版上,问题也不大,主要是注意下几个组件之间版本的依赖问题。另外相比于Apache Drill、Shark on Spark、 Facebook Presto这些方案,Impala的成熟度是最高的。
我们在2013年时做的工作是把Impala修改为一个兼容Hadoop和传统数据库的混合引擎,当时的需求是数据虽然在分布式系统里,但有一个表在MySql里需要实时更新,而有的查询是要联合这个表来查,当时找不到现成的方案(我们现在会倾向把这样的表放入HBase),只好尝试在Impala里面加入这部分功能,后来去BDTC2013分享的时候发现巨杉的同学们也在做类似的工作,原因是他们银行的客户有这样的数据孤岛,想和数据仓库的内容一致性的去查。
想要和大家多分享的一点是按照我们的经验做基于MPP方案的分布式数据库集群是没有前途的,除非数据类型很单一且稳定,原因在于大数据背景下ETL的成本很高,一个简单统一,适应冗余和噪声的分布式文件系统是必需的,这方面数据库基于schema有天然的劣势,不适合作为大数据的基础存储支撑,所以我不看好基于传统数据库去做扩展这条路,这不是一个正确的方向,往下走只会指数级消耗更多的成本。另外引擎这边经常看到Shark on Spark和Impala在做一些比较,我们都自己验证过,简单来说单用户性能差别不大,并发上来了Impala基本上是完胜,尤其是在16-256的并发数下,再多的并发我们没有测过,这个结果和Cloudera官方的结果基本一致,随着并发上升,Impala的查询时间几乎是线性增长,这是很好的表现。
当然现在的情况来说,Shark后面将要被今年7月份新出的Spark SQL取代,我们也在持续关注,因为Hive本质上是在把SQL往Map Reduce(MR)翻译,但和Hive绑定紧密的Shark其实是要把SQL往Spark上的RDD运算翻译,这导致很多工程上的trade off很难维护,Spark SQL会作为更纯粹的基于Spark的SQL引擎往下走。另外对Hive本身的优化像Apache Tez也在逐渐成熟,着重从最大限度减少I/O的角度去优化从简MR本身的执行流程,最新的Hive0.13已经包含了这部分功能,因此实际上Hive现在的性能已经在慢慢赶上来了。正是考虑到这些技术进步的速度和空间, 在服务客户时,我们一般不会刻意引导客户采用某一种引擎,这往往是不明智的,因为具体查询情况要根据实际查询的数据集特点和执行树的复杂度来考虑,我们一般做法是提供给客户混合的查询引擎,可以自适应的选择MPP的方式或者是迭代计算的方式。
社区里还有很多Spark和Impala的比较,我不认为有什么好比的,Spark是更精细的Map Reduce计算框架,因为使用设计良好的迭代方式,能够适应较为复杂的执行流程,特别是多趟Map Reduce的执行流程。对SQL on Hadoop来说,绝大多数SQL查询还是比较简单的数据执行流程,从MR框架的角度看,往往只有很少甚至一个Reducer,对于这种类型的任务,使用基于MPP的方式是很自然的,就好像你当然可以使用一把不错的菜刀做各种厨房工作,但是在切水果时你还是会希望手里有一把水果刀。Spark在复杂计算方面前途无量,这和Cloudera的目标——使用Impala进行交互式的SQL查询并不矛盾。思明不会在某一种技术上下注,我们更关注客户实际需求,解决实际问题。
巨头=技术+服务
CSDN:目前大数据分析和应用领域最大的挑战有哪些?能否谈谈大数据分析行业未来的一些发展?
刘诚忠:首先企业级市场靠技术垄断获取高额利润的玩法已经过时了,这是肯定的,技术的成本会不断降低,这是大势所趋,这个市场的巨头会出现在技术很好但服务更好的公司里。我觉得目前最大的挑战还是落地,对于企业来说有一套技术领先的平台是远远不够的,这个不是技术问题。一个经验丰富的大数据公司不只是处理大数据,应该能帮助企业客户发现数据、带来数据、进而整合出合理的数据模型,然后再考虑展现,最后反映到企业的日常决策中,形成运营-数据-决策的良性闭环,这是一个系统工程。
在未来几年,这个行业会很快细分,在每一个领域都会出现2-3家专注于一小块的公司,专业的大数据咨询公司会很快出现,产业链的上下游都会有公司去做,就好像现在硅谷的情况一样。在面向消费者的领域,国内的IT公司已经走到了全世界的最前面,接下来该轮到面向企业的领域了。最后想说的是我们是一家非常年轻有冲劲的公司,有丰富的大数据落地经验,是一家技术主导但又很接地气的公司。我们还在创业早期,经常需要同时负责研发,项目和售前工作,所以希望每个人都是以一敌百的精英,欢迎有共同理想的,对自己有信心的高手加入我们,一起打造本土最好的大数据技术公司。 |