随着大数据时代到来和数字化的发展,原始数据的非结构化比例越来越高,传统架构的数据库已经无法满足数据驱动业务的需求。
在这种背景下,湖仓一体架构的数据库日益受到关注。相比传统架构的数据库,湖仓一体架构有哪些优势?如何确保湖仓之间数据顺畅流通?湖仓一体能为企业带来哪些改变?
近日,HashData资深数据库工程师陈亮和解决方案工程师张承万,通过网络直播分享了HashData 湖仓一体设计理念与实践应用。
什么是数据湖?
在介绍湖仓一体之前,先要了解什么是数据湖?关于数据湖,微软、亚马逊等厂商各有不同的定义。总体来讲,数据湖应具备以下特性:
1.数据湖是一个集中式的存储库。如上图所示,在数据湖的外围会有各类不同的应用或者系统,这些应用产生的数据就好比是一条条小溪,不需要做任何的加工或结构化处理,可以直接汇聚到数据湖里。
2.任意规模数据湖必须要提供任意规模的数据存储能力。理想情况下,数据湖的存储能力最好能够保存企业所有的数据,因为随着数据规模不断地增加,数据湖必须要支持超大规模的存储。而且,这个存储是可以任意扩展的。所以,数据湖底层的存储普遍都是采用对象存储或者 hadoop 的 HDFS。
3.任意结构数据湖可以存储海量任意类型的数据。这些数据包含结构化数据(行和列)、半结构化数据(如CSV、日志、XML、JSON)、非结构化数据(如email、文档、PDF等)和二进制数据(如图像、音频、视频)。
4.数据湖中的数据是原始数据,是业务数据的完整副本,这些数据应该保持在业务系统中原来的状态。
5.数据湖需要具备完善的数据管理能力(包括元数据),能够管理各类数据相关的要素,包括数据源、数据格式、连接信息、数据schema、权限管理等。如果不具备完善的数据的管理功能,数据湖就很容易变成数据沼泽。
6.数据湖要具备完善的数据生命分析管理能力。数据湖需要支撑各种各样的数据源,同时要从这些数据源中去获得全量的或者是增量的数据进行规范的存储,并能够把结果保存到合适的存储的引擎中,满足不同的应用的访问需求。
数据湖能否替代数据仓库?
数据湖具有存储格式开放、无限拓展、成本低廉等优点,那是否可以用数据湖代替传统的数据仓库呢?
从使用模式来看,传统数仓使用的是写入型模式(schema on write),而数据湖是相反的,使用的是读取型的模式(schema on read),两者有着本质的差别。
使用模式的不同,导致数据湖与数据仓库的数据质量有着显著的差异。传统数仓写入数据的时候已经对数据进行了检查、清洗,可以保证数据精确应用到业务场景,是可以高度信赖的;而数据湖由于使用的是读取模式,数据在入库的时候没有经过严格清洗和验证,容易出现数据缺失、无效、重复等问题。
易用性方面,数据仓库内存储的是结构化的数据,可以使用 SQL 查询,使用成本相对较低。而数据湖内的数据没有经过任何加工处理,每种类型的数据在使用时需要按照各自的标准或工具进行转换,使用成本相对较高。
在性能方面,传统的数仓采用固定的表结构,数据有着很好规范性,性能可以得到保证。数据湖因为存储数据的多样性,随着数据量的增加,数据管理的复杂性也会随之增加,性能表现不如传统数仓。
此外,传统数仓经过几十年的发展,在数据安全方面已经具备非常成熟的方案和技术。相比之下,数据湖作为新兴技术,且保存着大量原始数据,安全性还有待完善。
综上所述,数据湖并不能完全取代数据仓库,两者各有侧重,各有擅长,使用场景也不是完全相同的。在很多企业的实际应用当中,更多的是采用两者并存的架构。
因此,如何有效发挥数据湖与数据仓库各自的优势,实现真正的“湖仓一体”,成为企业在数字经济时代所面临的挑战。
HashData作为“湖仓一体”技术倡导者,基于湖仓一体模式构建,打通了数据仓库和数据湖,将数据仓库的高性能及管理能力与数据湖的灵活性、开放性融合了起来,底层支持多种数据类型并存,能实现数据间的相互共享,上层可以通过统一封装的接口进行访问,可同时支持实时查询和分析,为企业进行数据治理带来了更多的便利性。
HashData湖仓一体创新与实践
为了打通数据仓库和数据湖,HashData提供了外部表和连接器两类组件。
通过外部表组件,可以和普通文件、对象存储、HDFS进行集成,用户在不依赖任何第三方工具的情况下,简单地通过SQL语句即可完成包括数据加载、数据备份、归档数据临时查询等数据工程任务。
除常见的gpfdist外部表外,HashData还支持OSS、HDFS等多种外部表协议与数据格式。外部表⽅案成熟稳定容易理解,且数据只需要进⾏⼀次数据复制即可多次访问,但是数据实时性较差,难以支持多样化业务需求,通常用于相对静态、大量数据集成。
另一种方案是连接器。HashData 连接器组件目前已经实现和 Kafka、Spark以及 Hive 集成。
Hive连接器Hive 连接器会在HashData主节点部署Hive Connector插件,通过连接Hive Metastore Service,获取Hive表的元数据信息,利用获取到的元数据信息,基于gphdfs协议,在HashData创建相应的外部表。
Hive 连接器支持的Hive表格式:TEXT和ORC,Hive版本2.x、3.x;主要用于Hive联邦查询、数据湖(基于Hive)访问等场景。
Kafka连接器Kafka 连接器通过订阅卡夫卡的topic来实现,根据设置的Task最大值,启动多个Task并行读取Partition数据,读取后将记录缓存,到一定时间或记录数,通过gpfdist加载到HashData。
Kafka 连接器通过同步offset的方式,来避免出现数据重复、丢失;Kafka 连接器通常用于流数据采集场景。
Spark连接器Spark连接器在Spark端使用,HashData 需要创建OSS表空间,供连接器独占使用。通过这个表空间,连接器调用DataSource 的Read或Write方法,读取HashData 数据,或持久化结果到HashData。
Spark连接器Spark 版本为2.3.x、2.4.x。Spark连接器主要支撑数据科学实验场景为Spark提供历史数据;利用Spark资源进行复杂计算。
连接器组件时效性好,适合按需调用,及时获取最新数据,但是数据每次被访问调⽤时,都需要进行一次传输,海量数据整体性能不⾼,通常被用于和内容可变、数据量可控的数据源集成。
HashData 的数据集成组件主要用于支撑以下应用场景:构建数据联邦,无需搬迁数据,可以通过标准SQL实现多数据源联邦查询;连接各类数据源,完成数据采集,且满足企业批量和实时的时效性要求。通常来说,外部表可以满足企业对跑批业务的需求,而连接器可以很好地满足对实时性比较高的业务需求;实现Spark 计算引擎集成,构建企业级湖仓一体的数据分析平台。
借助外部表和连接器这两类组件,HashData可以帮助企业实现Data Fabric架构,在混合云或者多云的环境中,实现动态管理不同的数据源,并基于MPP 引擎进行并行、高速的数据访问,实现与企业混合数据生态的无缝集成。
HashData湖仓一体解决方案,能够高效发挥湖仓一体低成本、高可用、易拓展等优势,帮助企业建立统一治理、湖仓一体的云原生数据分析平台。
目前,HashData云数仓已广泛应用于金融、电信、政府、能源、交通、互联网等领域。
在能源领域,HashData与中油瑞飞共同构建了中国石油“梦想云”平台。其中,“梦想云”数据湖集中管理了中国石油历史勘探开发、生产经营等6大领域及物探钻井等15个专业领域数据,涵盖结构化、非结构化等8类数据,总量达5PB,真正实现了海量数据入湖、治理、共享、分析等功能。
同时,“梦想云”使用多种创新技术,能够以较低成本实现数据管理,只需单个100GB节点即可以开始运行。随着业务的发展,当数据量增大到PB级,利用控制台能够轻松完成扩展支持1PB及以上的用户数据。