论坛1 | 数据时代的技术与应用 简丽荣 「云端数据仓库的技术与应用」



  • 时间: 2016年7月28日
    发言人: 酷克数据创始人 & CEO 简丽荣
    演讲主题: 云端数据仓库的技术与应用


    我是HashData的联合创始人。我们公司的中文名是酷克数据,是一家专注于云端数据仓库的初创公司。由Apache HAWQ(开源的SQL-on-Hadoop解决方案)创始团队成员创立,核心团队由来自Pivotal、Teradata、IBM、Yahoo!等公司资深的分布式数据库、云计算和Hadoop专家组成。今年5月份,我们在青云QingCloud上面推出了国内第一个基于PostgreSQL和Greenplum Database的SQL-on-Cloud解决方案——HashData数据仓库,是一个高性能、完全托管的PB级数据仓库。

    我会简单介绍数据仓库的技术与应用、数据仓库的现状、云端数据仓库、统一数据架构,特别是现有的数据仓库都面临哪些技术挑战,云端数据仓库解决了现有数据仓库的哪些问题。由于Hadoop和Spark的出现,有人认为基于传统关系型数据库的数据仓库可能会退出历史舞台,但是我们认为数据仓库能够与Hadoop、Spark等技术在云端以统一数据架构的形式组成一套完备的生态系统。

    首先来数据仓库的定义。引用数据仓库之父、《建立数据仓库》的作者比尔·恩门(Bill Inmon)的定义,数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理人员决策,这是数据仓库的目的。相对稳定的、反映历史变化的数据集合是指数据仓库是历史数据,不是实时的数据。这两点与OLAP数据库是一样的。数据仓库是一个面向主题的、集成的,并不是要求数据仓库把数据放在一起,而是各个数据之间都围绕着一个主题,它们之间有明确的集成关联关系。这种明确的集成关联关系在某种意义上意味着不灵活,特别是相对Hadoop系统来说。但这种不灵活正是保证数据仓库里没有垃圾数据的唯一方法。

    0_1470378530785_2016-8-5-14.png

    正因为是面向主题集成的要求,数据仓库在很长一段时间内都是基于关系型数据库构建的。由于数据量的剧增,基于硬件升级、正向扩展的单机数据库面临越来越严重的问题。现在大家讨论更多的是基于横向扩展分布式的数据库,也就是大规模并行处理MPP架构的分布式数据库来构建数据仓库。这是MPP的架构图,包括一个主节点和多个计算节点。为了高目前可用性还会配备从主节点作为备份。然后每个主节点和从节点都有智能独立的CPU galary和外部存储。主节点负责从客户端接收SQL请求,生成查询计划,并将查询计划发送到每个节点,协同查询计划执行。最后把每个节点上的结果汇总,再发送给客户端。计算节点负责数据的存储和计算,数据节点之间是没有共享的。由于查询计划在每个节点上并行执行,大大提升了查询效率。

    基于MPP架构的数据仓库在每个行业都有应用,这里只是列举了其中一些。包括Facebook做营销分析、用户行为分析、数据模型分析,建立营销精准模型。中信银行基于这样的架构做了信用卡中心、优化销售流程,降低现有业务的风险。还有中国电信利用Teradata共享销售流程,提高渠道协同销售能力。

    因为Hadoop和Spark技术的兴起,很多人认为关系型数据仓库正一步步走向没落。今年3月份在圣何塞举办的Hadoop峰会,还有在伦敦、北京举办的峰会都进行了争论,这个争论会一直持续下去。我个人无意于参与这种争论。但我倾向于从市场调查数据来看,数据仓库是不是真的这么不堪。

    0_1470378606002_2016-8-5-15.png

    这是美国一家调研公司Dimensional Research在2015年做的数据仓库现状分析。在这个调研报告里,数据仓库就是指基于关系型数据库的数据仓库,所有基于Hadoop和Spark的技术都归类于大数据技术。72%的人觉得数据仓库对他们很重要,27%的人认为重要,只有1%的人认为不怎么重要。在企业IT预算上,70%的人认为将会增加数据仓库的IT预算,26%的人会维持现在的预算,只有4%的人认为要减少IT预算。从这里看起来,数据仓库并不像大家所说的那么不堪。

    0_1470378639641_2016-8-5-16.png

    实际上数据仓库也面临很多问题。第一点是它的可扩展性。因为数据量和用户数量增加,很多数据仓库的使用者担心现有的数据仓库解决方案不能满足可扩展性。第二是现有的数据仓库解决方案难以维护和运维。第三是价格非常贵。第四点是学习曲线有点高。第五点是数据仓库学习太慢。第六点是部署项目的周期太长。

    结合来看,数据仓库在很长的时间内都有足够的空间和机会去成长和发展,同时又面临很多问题。数据仓库需要的并不是退出历史舞台,而是需要进行根本性的改变。云计算恰恰是从两方面促进了数据仓库的改变。North Bridge是美国的一家风险投资公司,每年都会进行云计算的前景展望和调研。这是他们去年调研报告的结论,云端上面的数据在快速的产生和积累,随着企业把越来越多的应用部署到云上,这些应用产生了大量的数据,由于网络延迟和数据移植性的问题,把云上的数据迁回企业内部的数据库进行商业分析,长期来看是非常不可取的。这意味着数据仓库上云是大势所趋。另一方面,云计算也可以给云端数据仓库解决传统数据仓库面临的问题提供了包括商业和技术上的坚实基础。North Bridge的结论很激进,他们认为云是可以解决大数据问题的唯一一个平台。

    0_1470378694553_2016-8-5-17.png

    云端数据仓库的机遇与挑战。云计算可以给数据仓库解决现有挑战提供了基础。一个是使用费用,云计算的规模经济和按需付费的模式大幅降低了数据存储和计算成本,并且没有任何前期投入。现有数据仓库解决方案高昂的前期投入是非常大的问题。这对于用户来说是一个机遇,对于提供数据仓库服务的公司来说更多是技术上的挑战。我们需要在资源完全共享、完全虚拟化的环境中提供高性能、低成本、用户体验一致的数据分析引擎。根据我们产品在青云上线的两个月以来,因为青云提供的Iaas性能比较高,我们本身认为在高性能、低成本上做得还是比较不错的。在用户体验方面,我们面临的问题复杂很多。性能波动较大。在同类的产品上也遇到类似的问题,在云上比专有硬件环境的性能波动会大一点。这是普遍的,而且是比较有挑战的问题。我们现在还在用很多精力在解决这个问题。

    第二是实施和运维成本。基于MPP的数据仓库对于Hadoop的用户体验来说是非常难被正确部署配置和使用的。用户为了高效地使用MPP数据仓库,需要很多参数,要自己调优。这也是为什么现有的数据仓库面临的问题里面有很多是跟运维相关的,包括很难找到(1:22:04英文没听懂)来运维数据仓库的集群,并且部署项目的周期很长,运维成本很高。

    对于云端数据仓库提供商来说,我们需要帮用户解决这样的问题。让用户可以将精力集中在利用数据分析改善业务上,而不用操心刚才说到的那些问题。云计算将计算、存储、网络API化,实现自动化运维。刚才Ray(周小四)也提到其中很多基础知识,云的数据仓库服务提供商利用计算、存储和网络资源的API化融合软硬件,简化数据仓库的部署。利用API实现自动化管理的代码,实现系统的自动化、智能化运维。

    第三点是可扩展性。这是现有数据仓库面临的头号挑战,数据量增加,使用用户也在不断增加。用户希望能够根据工作负载的变化,动态对数据仓库的计算和存储能力进行伸缩。对于云端数据仓库提供商来说,问题复杂很多。相对于Hadoop这样的分布式系统来说,MPP数据库为了提高性能,特别是查询性能需要做很多优化。所以无论是数据分布策略,还是动态扩展的时候,要考虑的问题有很多。比如增删节点的时候,数据快速进行重分布以及增删节点过程中对系统正在运行的一些查询,且不影响它的性能。我们在这方面花了很多功夫,但仍然有很长的路要走。

    第四点是数据的互联互通。数据孤岛是大数据面临的很大问题。用户会把数据放在不同的系统。我们希望可以通过云端数据仓库可以快速整合各类业务数据,避免数据孤岛的现象。这就要求我们设置和实现一些比较灵活、高速的数据连接器,与各种各样的数据源实现连接互通。用户才可以通过云端去访问很多数据。

    最后一点是安全性。对于数据仓库来说,安全性是摆在第一位的。安全问题是非常复杂的,不仅是云端数据仓库服务提供商的问题,也是Iaas服务商面临的问题。从用户的角度来看,数据不能泄漏,要足够安全和隐私。对于我们来说,挑战在于数据的加密和解密有不可避免的开销,需要在数据安全和性能之间进行平衡。

    0_1470378769070_2016-8-5-18.png

    再看一下云端数据仓库总的概述图。这是以Hashdata的数据仓库图为例。在访问工具层,用户可以通过标准SQL客户端、BI和ETL工具、编程语言(如Java、Python等),经过JDBC、ODBC的驱动去访问数据仓库。数据仓库有很多丰富的分析功能,除了标准的SQL扩展,还允许用户进行自定义分析,还提供文本检索、地理信息处理和机器学习的算法。在服务方面,我们提供快速部署,只需要几分钟就可以部署几十个节点,甚至上百个节点的数据仓库集群。也提供了动态伸缩,包括横向伸缩和纵向伸缩,纵向伸缩可以调整每个计算节点的计算能力和存储能力,横向伸缩可以改变集群节点的数量。我们还提供多级容错、包括硬盘数据的多重备份以及计算节点备份恢复,用户防止因为误操作而导致数据丢失。也可以根据数据库的备份重新起一个新的数据仓库集群。我们还提供持续的性能监控,包括数据仓库操作的审计,从而保证用户数据的安全。所有的这些服务都是自服务,都已经嵌入数据仓库中,用户根本不用担心。

    回到核心的执行引擎中,我们采用了大量的技术。这是完全为了数据仓库搭建的架构,包括无共享大规模并行处理、流水式执行引擎。在云端数据仓库中,我们并不是像MapReduce一样分阶段的执行,而是在开始的时候,所有的阶段全部启动,像流水一样并行的处理。我们还提供了列式的存储和压缩。对于很多数据仓库的应用来说,它的查询是访问一张表里的某些字段而已,并不是访问一张表里所有字段。所以列式存储可以节省大量的IO、包括内存。同时列式存储的压缩,因为同一类数据的数据类型是类似的,或者是一样的,压缩比会非常高;其次我们需要支持灵活的数据分布策略。我们希望基于数据分布策略,对一些类似聚合操作、等值连接操作进行优化。同时我们要考虑当集群动态增删节点的时候,如何实现数据的快速分布。这一点跟Hadoop系统是不一样的,Hadoop没有灵活的数据分布策略,完全是随机分布的。在云端数据仓库和传统数据仓库中,还有很重要的不同在于计算与存储是分离,这样可以让错误恢复变得非常简单,也可以增加系统的弹性。我们现在可以支持对节点的计算能力和存储能力分别进行调整。最后就是高速的外部数据连接,可以将云上的很多数据源(包括对象存储、HDFS、RDS、关系数据库MySQL和PostgreSQL,还有远程服务器)高速加载到数据仓库。

    从业务需求出发,围绕某一主题,客户可以通过SQL语言,将分散在云平台上的各种数据通过高速的外部数据连接器整合到数据仓库,利用数据仓库MPP把强大的并行执行引擎进行功能非常丰富的分析,并且挖掘数据的价值。而数据仓库的运维、部署、配置都是通过云端数据仓库自带的字符就可以搞定。用户只需要关心张罗数据、挖掘数据、分析价值。所有跟运维相关的,云数据仓库可以通过内置的字符来解决。

    最后一点,讲一下统一数据架构。有很多人认为Hadoop和Spark会替代MPP数据库。这种观点是你死我活的竞争关系。而我们认为在云端上,基于MPP架构的数据仓库跟Hadoop、Spark是互补关系,他们能够以UDA (Unified Data Architecture)的统一数据架构,可以组成完整的生态系统。

    在这个生态系统里,不同的组件都有自己擅长的业务。比如对于典型的商业分析。数据仓库基于关系型数据库有几十年的积累,无论是SQL的兼容性,还是查询性能的优化,还是对BI工具的集成,都远远比Hadoop生态圈的工具成熟。特别是结构化数据存储、批量实时计算、数据标准化、数据模型、数据集成。对于Hadoop系统来说,它更擅长的是对一些非结构化数据的存储和历史数据的归档和查询。由于MapReduce本身编程模型的灵活性,对于那些很难用一两条SQL语句表示的逻辑,涉及到很多复杂的操作场景,都能很好的应用。Spark的生态圈更加丰富,Spark Streaming用于流式处理,Spark SQL做监控式查询,Spark MLlib做机器学习。我个人认为Spark的核心还是在内存计算。如果要对一个数据可以进行多轮迭代处理,Spark是非常好的选择。因为每轮迭代的中间数据是以RDB类型存到内存里的,无论是MPP数据库,还是Hadoop,最终都要落盘,IO性能都非常慢的。

    统一的数据架构涉及到很多系统的部署、运维、集成。青云云平台的好处就是所有组件都以服务的形式提供,并且组件之间是相互集成好的,包括青云作为云服务提供商提供的大数据组件,还有我们公司这样的作为第三方提供的数据仓库。

    以上就是今天要跟大家分享的主要内容。

    谢谢大家!


登录后回复
 

与 青云QingCloud 社区 的连接断开,我们正在尝试重连,请耐心等待