CN116860746A - 用于轻量大数据的处理系统 - Google Patents

用于轻量大数据的处理系统 Download PDF

Info

Publication number
CN116860746A
CN116860746A CN202310714573.XA CN202310714573A CN116860746A CN 116860746 A CN116860746 A CN 116860746A CN 202310714573 A CN202310714573 A CN 202310714573A CN 116860746 A CN116860746 A CN 116860746A
Authority
CN
China
Prior art keywords
configuration
container
tenant
file
metadata
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310714573.XA
Other languages
English (en)
Inventor
杨辉
路培杰
刘文虎
陈威余
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongke Yungu Technology Co Ltd
Original Assignee
Zhongke Yungu Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongke Yungu Technology Co Ltd filed Critical Zhongke Yungu Technology Co Ltd
Priority to CN202310714573.XA priority Critical patent/CN116860746A/zh
Publication of CN116860746A publication Critical patent/CN116860746A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2219Large Object storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供一种用于轻量大数据的处理系统。包括:容器管理平台,用于为多租户数据分析平台、分布式计算引擎以及元数据配置管理模块提供容器,为大数据提供管理和调度功能;多租户数据分析平台,用于为多种SQL查询提供查询引擎,获取SQL客户端提交的SQL查询语句,并将SQL查询转化为定时调度数据处理任务;分布式计算引擎,用于根据定时调度数据处理任务生成对应的分布式计算集群,以通过分布式计算集群完成与SQL查询对应的数据分析;元数据配置管理模块,用于管理大数据的元数据;表格式数据湖,用于将大数据的目录信息以表格式进行存储;对象存储模块,用于存储大数据的数据内容。本发明降低了大数据系统运维难度和成本。

Description

用于轻量大数据的处理系统
技术领域
本申请涉及计算机技术领域,具体涉及一种用于轻量大数据的处理系统。
背景技术
在传统工业制造领域,很多企业及其供应链上下游的企业都在谋求数字化转型,通过数字化进行产品,服务的升级,提高产品的附加值,提升企业的经营管理效率。大数据技术是企业数字化转型所依赖的非常重要的基础技术之一,其在各行各业都发挥着越来越重要的作用,企业所有的数据处理、统计、分析、展示以及风控等都需要利用大数据相关的技术才能完成。
现有技术通常采用hadoop进行大数据分析任务的开发,但是hadoop生态涉及到很多的服务组件,系统运维难度大,需要投入较高的人力成本,且不同计算任务的计算资源不能做到很好的隔离,无法保证优先计算任务的稳定运行,因此导致了大数据技术在中小型制造企业落地困难。
发明内容
本申请实施例的目的是提供一种用于轻量大数据的处理系统。
为了实现上述目的,本申请第一方面提供一种用于轻量大数据的处理系统,包括:
容器管理平台,用于为多租户数据分析平台、分布式计算引擎以及元数据配置管理模块提供容器,为大数据提供管理和调度功能;
多租户数据分析平台,用于为多种SQL查询提供查询引擎,用于获取SQL客户端提交的SQL查询语句,并将SQL查询转化为定时调度数据处理任务;
分布式计算引擎,用于根据定时调度数据处理任务生成对应的分布式计算集群,以通过分布式计算集群完成与SQL查询对应的数据分析;
元数据配置管理模块,用于管理大数据的元数据;
表格式数据湖,用于将大数据的目录信息以表格式进行存储;
对象存储模块,用于存储大数据的数据内容。
在一个实施例中,分布式计算引擎还用于:获取分布式计算引擎的容器构建请求;根据容器构建请求从容器管理平台中的预设计算引擎镜像服务器中拉取计算引擎镜像;根据计算引擎镜像对分布式计算引擎进行容器化部署。
在一个实施例中,分布式计算引擎还用于执行计算引擎镜像的制作步骤,制作步骤包括:获取并解压计算引擎安装包;获取系统配置文件,其中,系统配置文件包括元数据配置管理模块及对象存储模块对应的系统配置文件;确定计算引擎安装包进行解压后的第一解压目录;将系统配置文件以依赖文件的形式复制到第一解压目录;在第一解压目录下的配置脚本中增加系统配置文件所在位置的环境变量;获取计算引擎镜像构建指令文件,计算引擎镜像构建指令文件中包括第一解压目录中的系统配置文件和配置脚本;基于计算引擎镜像构建指令文件执行构建指令,以得到计算引擎镜像。
在一个实施例中,分布式计算引擎还用于执行计算引擎镜像的存储步骤,计算引擎镜像的存储步骤包括:获取计算引擎存储指令;根据计算引擎存储指令将计算引擎镜像存储至预设计算引擎镜像服务器中。
在一个实施例中,对象存储模块还用于执行对象存储模块的启动步骤,对象存储模块的启动步骤包括:获取对象存储模块的二进制文件;确定对象存储模块的安装位置,并在安装位置创建对应的安装目录;将二进制文件上传至安装目录;为对象存储模块的启动脚本划分许可权限,以在处理系统中进行启动。
在一个实施例中,元数据配置管理模块还用于:获取元数据配置管理模块的容器构建请求;从容器管理平台中的预设配置单元镜像仓库中拉取配置单元镜像;根据配置单元镜像对元数据配置管理模块进行容器化部署。
在一个实施例中,元数据配置管理模块还用于执行配置单元镜像的制作步骤,配置单元镜像的制作步骤包括:获取并编译配置单元源码包;从编译后的配置单元源码包所在目录获取配置单元安装包;解压配置单元安装包,以得到配置单元解压包,并确定配置单元解压包所在的第二解压目录;获取计算引擎安装包,并将计算引擎安装包解压至第二解压目录,以得到计算引擎解压包;在第二解压目录中创建配置单元镜像构建指令文件;在配置单元镜像构建指令文件中创建配置单元解压包和计算引擎解压包的存放目录,并将配置单元解压包和计算引擎解压包复制到存放目录;基于配置单元镜像构建指令文件执行构建指令,以得到配置单元镜像。
在一个实施例中,容器管理平台还用于:创建命名空间和服务账号;在命名空间内通过服务账号创建元数据配置管理模块的配置文件;获取并执行配置文件的执行指令,以将配置文件发布至元数据配置管理模块的容器中;通过配置文件在元数据配置管理模块进行容器化部署之前进行认证;在认证成功的情况下,对元数据配置管理模块进行容器化部署。
在一个实施例中,元数据配置管理模块还用于执行元数据配置管理模块的容器的启动步骤,元数据配置管理模块的容器的启动步骤包括:创建元数据配置管理模块的后台元数据表;根据配置单元镜像在容器管理平台部署元数据配置管理模块的容器;根据容器管理平台的启动规则编写元数据配置管理模块的容器的资源文件,资源文件包括启动元数据配置管理模块的容器所需的容器管理平台资源属性;获取并执行元数据配置管理模块的容器的启动指令,以在容器管理平台中启动元数据配置管理模块的容器。
在一个实施例中,元数据配置管理模块还用于:在资源文件中设置元数据配置管理模块的访问端口的配置文件;获取并执行访问端口的配置文件的启动指令,以启动访问端口;分布式计算引擎和表格式数据湖通过访问端口与元数据配置管理模块进行元数据交互。
在一个实施例中,多租户数据分析平台还用于:获取多租户数据分析平台的容器构建请求;从容器管理平台中的预设多租户镜像服务器中拉取多租户镜像;根据多租户镜像对多租户数据分析平台进行容器化部署。
在一个实施例中,多租户数据分析平台还用于执行多租户镜像的制作步骤,多租户镜像的制作步骤包括:获取并解压多租户安装包;构建用于在多租户容器启动时安装容器管理平台并用于添加容器管理平台集群认证的证书的第一脚本;确定多租户安装包解压的第三解压目录;在第三解压目录的多租户启动脚本中增加第一脚本的位置和启动方式;获取多租户镜像构建指令文件,多租户镜像构建指令文件中包括多租户启动脚本;基于多租户镜像构建指令文件执行构建指令,得到多租户镜像。
在一个实施例中,多租户数据分析平台还用于执行多租户数据分析平台的容器的启动步骤,多租户数据分析平台的容器的启动步骤包括:在容器管理平台中创建多租户数据分析平台的容器的启动资源对象;获取多租户数据分析平台的工作负载的创建指令;通过启动资源对象执行创建指令,以启动多租户数据分析平台的容器。
在一个实施例中,多租户数据分析平台还用于:根据多租户镜像对多租户数据分析平台进行容器化部署之前,依次执行多租户数据分析平台对应的资源文件,其中,资源文件包括部署资源文件、资源配置文件以及服务资源文件。
在一个实施例中,多租户数据分析平台还用于执行部署资源文件的构建步骤,部署资源文件的构建步骤包括:确定需要执行的多租户数据分析平台的容器所属的命名空间;确定多租户数据分析平台的容器的名称以及多租户数据分析平台的容器对应的配置参数;基于命名空间、名称以及多租户数据分析平台的容器对应的配置参数构建部署资源文件。
在一个实施例中,多租户数据分析平台还用于执行资源配置文件的构建步骤,资源配置文件的构建步骤包括:获取用于确定多租户数据分析平台的环境变量配置参数、用于执行数据分析任务提交的提交配置参数以及分布式计算引擎的配置参数;获取简易信息聚合服务的shuttle配置参数和分布式计算引擎的资源动态调整参数;获取用于确定分布式计算引擎与对象存储模块之间的连接关系的连接参数;基于环境变量配置参数、提交配置参数、分布式计算引擎的配置参数、shuttle配置参数、分布式计算引擎的资源动态调整参数以及连接参数构建资源配置文件。
通过上述技术方案,实现了大数据分析任务开发的简化。通过将大数据存储和计算机型分离,存储和计算扩缩容彼此独立,降低了系统运维难度和成本,提高了资源利用率。
本申请实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本申请实施例,但并不构成对本申请实施例的限制。在附图中:
图1示意性示出了根据本申请实施例的用于轻量大数据的处理系统的系统架构图;
图2示意性示出了根据本申请实施例的kyuubi的架构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解的是,此处所描述的具体实施方式仅用于说明和解释本申请实施例,并不用于限制本申请实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1示意性示出了根据本申请实施例的用于轻量大数据的处理系统的系统架构图。如图1所示,在本申请一实施例中,提供了一种用于轻量大数据的处理系统,包括:
容器管理平台,用于为多租户数据分析平台、分布式计算引擎以及元数据配置管理模块提供容器,为大数据提供管理和调度功能;
多租户数据分析平台,用于为多种SQL查询提供查询引擎,用于获取SQL客户端提交的SQL查询语句,并将SQL查询转化为定时调度数据处理任务;
分布式计算引擎,用于根据定时调度数据处理任务生成对应的分布式计算集群,以通过分布式计算集群完成与SQL查询对应的数据分析;
元数据配置管理模块,用于管理大数据的元数据;
表格式数据湖,用于将大数据的目录信息以表格式进行存储;
对象存储模块,用于存储大数据的数据内容。
容器就是一个视图隔离、资源可限制、独立文件系统的进程集合,它将系统的其他资源隔离开来,具有自己独立的资源视图。容器具有一个独立的文件系统,因为使用的是系统的资源,所以在独立的文件系统内不需要具备内核相关的代码或者工具,我们只需要提供容器所需的二进制文件、配置文件以及依赖即可。只要容器运行时所需的文件集合都能够具备,那么这个容器就能够运行起来。在本技术方案中,容器管理平台可以是指K8s,通过K8s可以实现快速容器化部署,降低大数据组件的部署难度,以便于监控。K8s的容器化是基于Docker实现的,K8s将Docker容器通过各种资源定义组织在一起。K8s中管理的最小单位是pod,K8s需要对于容器进行管理,所以抽象了一个pod作为管理单元。具体地,K8s在处理系统中可以为多租户数据分析平台、分布式计算引擎以及元数据配置管理模块提供容器,即为软件的运行提供一个运行的环境,多租户数据分析平台、分布式计算引擎以及元数据配置管理模块在K8s中进行容器化部署之后,则可在大数据平台中正常运行,从而为大数据提供管理和调度功能。
多租户数据分析平台可以是指Kyuubi,Kyuubi是一个分布式多租户Thrift JDBC/ODBC服务器,用于大规模数据管理、处理和分析,构建在Apache Spark之上,旨在支持更多引擎。Kyuubi的目标是让Spark的使用变得简单高效,并方便用户像处理普通SQL数据一样处理大数据。在本技术方案中,Kyuubi可以用于为多种SQL查询提供查询引擎,用于获取SQL客户端提交的SQL查询语句,并将SQL查询转化为定时调度数据处理任务。具体地,容器里面提交计算任务的时候,为了防止多个提交的任务之间抢占资源,而通过Kyuubi可以实现不同计算任务之间在不同的计算集群里面实资源的隔离和存储共享。在Kyuubi将SQL查询转化为定时调度数据处理任务之后,分布式计算引擎则可以根据定时调度数据处理任务生成对应的分布式计算集群,以通过分布式计算集群完成与SQL查询对应的数据分析。分布式计算引擎可以是指spark,Spark是专为大规模数据处理而设计的快速通用的计算引擎。Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使Spark在某些工作负载方面表现得更加优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。具体地,当通过SQL客户端向kyuubi提交spark的数据分析任务时,kyuubi容器会根据相应的规则和配置,通过k8s客户端向k8s api server发起请求,然后自动拉起一个在k8s中运行的spark集群,然后完成相应的数据分析任务。
元数据配置管理模块可以是指Hive Metastore,即HSM,Hive Metastore是Hive用来管理库表元数据的一个服务,有了它上层的服务不用再跟裸的文件数据打交道,而是可以基于结构化的库表信息构建计算框架。在本技术方案中,可以通过元数据配置管理模块管理大数据的元数据,元数据是指数据的描述信息。表格式数据湖可以是指iceberg,以表的形式对一堆的数据文件进行集中管理,存储数据所在文件的信息,例如,现在查询某用户的信息,该信息存在哪一个文件的哪一行这些数据都是通过iceberg进行管理。在本技术方案中,iceberg用于将大数据的目录信息以表格式进行存储。对象存储模块可以是指minio,minio是一款高性能对象存储软件,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,并且可以很简单的和其他应用的结合。在本技术方案中,可以minio来存储大数据的数据内容。具体地,为了彻底摆脱hadoop相关服务的束缚,本技术方案放弃了hadoop,创新性地引入了更加轻量级的对象存储系统minio来进行数据的存储。对象和文件最大的不同,就是在文件基础之上增加了元数据,与hadoop这种块存储和文件存储管理数据的方式不同,对象存储是以对象的形式管理数据的。对象存储的数据通常是无结构的数据,可以存储各种类型的数据(图片、视频或文档等),采用minio带来的好处是可扩展性高,效率高,无需迁移,安全性高,访问方便,存储成本相对低,由于minio只具有存储功能,所以架构更简单,部署运维成本极低。为了更方便上层计算引擎使用minio中的数据,本技术方案创新性引入了数据湖技术iceberg,iceberg是一种无服务模式的表组织格式,通过iceberg,上层spark计算引擎可以通过sql更加方便地访问对象存储的数据,极大降低开发成本,由于在iceberg中创建库表,进行数据读写需要有元数据管理服务的支持,本技术方案中我们通过技术创新,实现了hive metastore(HMS)元数据存储服务的容器化部署,这样spark-sql就可以从HMS获取到iceberg中表的元数据信息,进而对数据湖中的数据进行读写分析处理,数据存储在minio对象存储上,计算在k8s中的spark集群上进行,存储和计算引擎都可以单独进行扩容,实现了存储和计算的分离,将计算和存储彻底解耦,这也是为了实现spark计算节点弹性扩缩容的一个必备条件之一,之后用户只需要通过kyuubi的jdbc客户端提交spark-sql分析代码,即可完成数据分析的任务,极大简化了数据开发的流程,降低了开发的难度。
上述技术方案,实现了大数据分析任务开发的简化。通过将大数据存储和计算机型分离,存储和计算扩缩容彼此独立,降低了系统运维难度和成本,提高了资源利用率。利用更加轻量化的对象存储系统替代复杂架构的hadoop,存储成本更低,扩展性更强,存储和计算分离。利用数据湖进行数据文件的表格式组装,实现了现有技术多种组件才能实现的功能,简化了架构设计,降低相应的成本,使用更方便。
在一个实施例中,k8s是docker容器的编排和管理系统,分布式计算引擎即spark要想在容器中进行运行,必须需要一个虚拟文件系统。该虚拟文件系统包含spark分布式计算引擎所有的目录,这些目录文件再加上宿主机的内核提供了一个linux的虚拟环境,当在k8s所管理编排的docker中启动该虚拟linux环境,即可把spark集群拉启动起来;包含spark的所有目录的虚拟文件系统即为spark docker镜像,该镜像只能在k8s中运行,为了在提交不同spark数据分析任务时,方便快捷地在k8s中搭建spark分布式计算环境,需要能够复用spark的docker镜像,需要将spark docker镜像提前准备好,同时为了实现后续能从k8s集群之外的hadoop系统中读取hive数仓中的物联网数据进行计算。具体地,分布式计算引擎在容器管理平台中进行容器化部署包括:获取分布式计算引擎的容器构建请求,根据容器构建请求从容器管理平台中的预设计算引擎镜像服务器中拉取计算引擎镜像,根据计算引擎镜像对分布式计算引擎进行容器化部署。其中,计算引擎镜像的制作包括:第一步,获取并解压计算引擎安装包。具体地,下载spark-3.2.2-bin-hadoop3.2.tar.gz安装包到linux系统下的某个目录中,然后进行解压,经过解压,就可以进入到指定目录下的任何次级目录进行查看、文件的修改、参数的配置。因为不同版本的spark安装包具有不同的功能,可以适配其他不同版本的大数据组件,所以可以根据不同版本的spark安装包制作不同版本spark docker镜像,以不同docker镜像标签tag进行区分即可。
第二步,获取系统配置文件,系统配置文件包括元数据配置管理模块及对象存储模块对应的系统配置文件。确定计算引擎安装包进行解压后的第一解压目录。将系统配置文件以依赖文件的形式复制到第一解压目录。具体地,为了实现基于spark docker镜像启动的spark cluster集群可以正常访问k8s集群之外的minio对象存储系统中的数据,k8s集群中的spark pod需要能够访问到外部的minio系统,因此需要将minio集群相关的javajar依赖文件copy到spark解压目中特定位置。
第三步,在第一解压目录下的配置脚本中增加系统配置文件所在位置的环境变量。获取计算引擎镜像构建指令文件,计算引擎镜像构建指令文件中包括第一解压目录中的系统配置文件和配置脚本。基于计算引擎镜像构建指令文件执行构建指令,以得到计算引擎镜像。具体地,通过docker来构建spark镜像时,必须制作好Dockerfile文本文件,该dockerfile包含了很多构建spark镜像所需的指令和说明,本技术方案中构建spark镜像时,在该文本文件必须指明:spark所依赖的jdk环境,spark集群的操作用户(USER root),spark镜像启动后的容器内需要安装的系统工具,创建容器中的一些目录Hadoop,复制spark解压目录中一些文件和目录到容器中,指定容器中的环境变量和工作目录,为spark容器中一些目录赋权,指定spark容器运行时执行预处理逻辑的shell脚本ENTRYPOINT["/opt/entrypoint.sh"]。通过对spark解压目录中的Dockerfile文本文件配置好上述所需的指令之后,就可以进行spark镜像的构建了。
进一步地,上述配置完成之后就可以进行spark镜像的构建,在解压目录中,执行构建指令,在执行完成之后就可以得到spark image。spark image是一个可在k8s运行的基本单元,spark image里面是一层层文件系统,叫做Union FS联合文件系统,可以将几层目录挂载到一起,成为同一个虚拟文件系统。文件系统的目录结构就像普通linux的目录结构一样,docker通过这些文件与宿主机的内核提供了一个linux的虚拟环境。
在一个实施例中,为了简化不同数据分析任务的部署过程,spark镜像是需要复用的,因此,需要一个用来存储spark镜像的服务器,以便于快速调用spark镜像。而将spark镜像存储至镜像服务器中包括:获取计算引擎存储指令,根据计算引擎存储指令将计算引擎镜像存储至预设计算引擎镜像服务器中。具体地,每次提交数据分析任务时都可以基于spark镜像进行spark cluster集群的搭建和任务的分析,因此需要spark镜像推送到harbor镜像服务器,以便每次发布spark数据分析任务时自动从harbor镜像服务器拉取spark的镜像,避免重复进行spark镜像的构建。执行存储指令即可将spark镜像push到镜像服务器,之后每次提交spark分析任务时,只要从该镜像服务器拉取spark镜像即可,无需每次都重复上述spark镜像的制作步骤,即达到了一次制作,反复使用的目的。
在一个实施例中,本技术方案中选择minio作为对象存储的原因之一,是因为minio的安装部署使用非常简单。而对象存储模块即minio要想在处理系统中正常启动运行包括:获取对象存储模块的二进制文件。确定对象存储模块的安装位置,并在安装位置创建对应的安装目录。将二进制文件上传至安装目录。为对象存储模块的启动脚本划分许可权限,以在处理系统中进行启动。具体地,从官网下载minio的二进制文件,在需要安装minio的linux机器上创建相应安装目录,把minio的二进制文件上传到上述创建的安装目录,并为其中的minio启动脚本赋予可执行权限。创建minio的登录账号和密码。最后,启动minio,通过minio的web客户端操作页面添加文件夹和上传文件等操作。Minio支持通过S3协议对其进行远程访问,因此k8s容器中spark pod可以通过s3对minio中的数据进行远程读写操作。
在一个实施例中,Hive Metastore是Apache hive为了方便管理元数据而设计的一个服务,由于历史原因,很多大数据组件包括spark,iceberg在内对hive metastore都有很好的支持,功能完善,对接容易,所以本技术方案通过单独剥离出Apache hive中HiveMetastore进行容器化部署,用来做spark和数据湖iceberg的元数据存储。具体地,元数据配置管理模块即Hive Metastore在容器管理中进行容器化部署包括:获取元数据配置管理模块的容器构建请求,从容器管理平台中的预设配置单元镜像仓库中拉取配置单元镜像,根据配置单元镜像对元数据配置管理模块进行容器化部署。其中,配置单元镜像的制作包括:第一步,获取并编译配置单元源码包,从编译后的配置单元源码包所在目录获取配置单元安装包,解压配置单元安装包,以得到配置单元解压包,并确定配置单元解压包所在的第二解压目录。第二步,获取计算引擎安装包,并将计算引擎安装包解压至第二解压目录,以得到计算引擎解压包,在第二解压目录中创建配置单元镜像构建指令文件。第三步,在配置单元镜像构建指令文件中创建配置单元解压包和计算引擎解压包的存放目录,并将配置单元解压包和计算引擎解压包复制到存放目录,基于配置单元镜像构建指令文件执行构建指令,以得到配置单元镜像。具体地,首先从代码仓库下载Apache hive的源码包,然后编译Apache hive源码,从编译好的target目录中获取hive metastore的安装包,将该安装包解压到特定解压目录下。下载hadoop-3.2.3的安装包并解压到与HMS相同的解压目录下,删除hadoop-3.2.3解压目录中的doc目录,删除HMS解压目录lib下的guava相关的jar包,防止与hadoop中的guava包冲突,然后将hadoop解压目录下的guava jar包,aws-java-sdk-bundle-*.jar,hadoop-aws-3.2.3.jar以及mysql的驱动包复制到HMS的解压目录lib下。在HMS的解压目录中创建Dockerfile文件,然后对该文件内容进行编辑:添加jdk,容器中的linux用户,环境变量信息,安装容器运行的一些基本指令包,对容器中的目录授权添加用户,创建hadoop和hive metastore解压包在容器中的存放目录并为该目录添加权限。将上述HMS和hadoop的安装包解压目录内容复制到容器中创建的hadoop和hive metastore安装目录,指定hive metastore对外提供服务的端口CMD,至此Dockerfile文件内容就制定完成。然后执行hms docker镜像的构建命令,这样HMS的docker镜像就制作完成了。
进一步地,为了后续复用该镜像,我们需要经该镜像push到私有镜像仓库,后面有用到该镜像的地方,直接从私有仓库拉取即可,无需重复制作。
在一个实施例中,为了保证元数据配置管理模块在容器管理平台中能够实现资源隔离,因此,在元数据配置管理模块进行容器化部署之前,需要进行如下操作,包括:创建命名空间和服务账号,在命名空间内通过服务账号创建元数据配置管理模块的配置文件,获取并执行配置文件的执行指令,以将配置文件发布至元数据配置管理模块的容器中,通过配置文件在元数据配置管理模块进行容器化部署之前进行认证,在认证成功的情况下,对元数据配置管理模块进行容器化部署。具体地,在进行HMS容器化部署之前,需要在K8s中创建命名空间,服务账号,并为该服务账号绑定一定的角色,后续所有的服务、配置、网络等资源的启动都需要在该命名空间内,使用这个服务账号进行操作,起到资源隔离、认证等功能。HMS服务的启动需要进行一些关键信息的配置,因为HMS服务是在K8s容器中启动,所以需要将HMS配置文件以Configmap形式在k8s中进行资源的管理,该configmap以yaml语言进行开发,最终形成hive-metastore-cofingmap.yaml文件。该文件主要包括如下配置信息:metastore.task.threads.always,metastore.expression.proxy,mysql的jdbc驱动,mysql的jdbc连接地址,mysql的用户名和密码,minio的S3连接用户名密码,minio的s3连接地址,hive metastore的thrift端口。通过上述配置,可以确保HMS服务在启动之后能够将元数据存储到后台mysql数据库,并能从minio获取到iceberg表的一些元数据,同时可以通过thrift接口对外提供元数据管理服务。hive-metastore-cofingmap.yaml配置文件制作完成之后,执行发布指令,即可将HMS的配置文件发布到容器中。命令执行成功之后,该配置文件就会以k8s configmap资源的形式存在,当HMS启动之后就会加载该配置。
在一个实施例中,元数据配置管理模块在容器管理平台中进行容器化部署之后,为了确保元数据配置管理模块的容器能够正常启动,需要进行如下操作包括:创建元数据配置管理模块的后台元数据表,根据配置单元镜像在容器管理平台部署元数据配置管理模块的容器。根据容器管理平台的启动规则编写元数据配置管理模块的容器的资源文件,资源文件包括启动元数据配置管理模块的容器所需的容器管理平台资源属性。获取并执行元数据配置管理模块的容器的启动指令,以在容器管理平台中启动元数据配置管理模块的容器。具体地,在启动HMS服务之前,需要初始化HMS的后台数据库mysql即自动创建所有的后台元数据表,首先在mysql中创建数据库hms_db,然后编写HMS的初始化容器资源文件hive-initschema.yaml。该文件内容主要包括:资源类型job,初始化容器的基本配置信息:容器的名称hivemeta和容器镜像。容器启动之后需要执行的初始化数据库命令,配置完成之后,在k8s容器中进行初始化容器的启动。执行容器启动命令,在命令执行完成之后,会在k8s中拉起一个HMS的初始化pod,在pod的容器中执行hive-initschema.yaml文件中制定的初始化命令,mysql的hms_db库中就会自动创建相应的表。Mysql中所有的元数据表创建成功之后,该容器的任务就完成了,状态会变为completed。在HMS服务的后台数据库已经创建好之后,接下来需要在容器中启动HMS服务。根据k8s容器启动的规则,首先还是要通过yaml语言编写HMS容器的资源文件hive-metastore.yaml,在该文件中需要指定HMS容器启动所有需要的k8s资源属性,具体包括:部署HMS的资源控制器类型deployment,HMS容器的元数据信息(pod的名称,应用的标签),pod的副本数,pod的标签选择器,pod中容器镜像的基本信息(HMS镜像2.3.1中制作的HMS镜像),环境信息,HMS提供服务的端口信息,容器内数据持久化目录,容器的服务账号信息等等,这些信息指定完成,执行容器启动命令即可在k8s容器中把Hms服务启动起来。
在一个实施例中,元数据配置管理模块在容器管理平台中进行容器化部署之后即HMS服务在k8s容器中部署完成之后,为了保障iceberg,spark能够访问到HMS,HMS服务需要向容器中其他服务暴露端口。而向容器中其他服务暴露端口包括:在资源文件中设置元数据配置管理模块的访问端口的配置文件,获取并执行访问端口的配置文件的启动指令,以启动访问端口,分布式计算引擎和表格式数据湖通过访问端口与元数据配置管理模块进行元数据交互。具体地,根据k8s容器的规则,要通过yaml语言编写服务发现资源文件hms-rest-service.yaml。在该文件中要指定如下内容:资源类型service,服务名称,需要开放的端口9083,网络协议类型TCP,选择器匹配的应用名称HMS服务的应用名称,这样就表示是把HMS服务的9083端口暴露给容器中其他服务。hms-rest-service.yaml配置完成之后,在k8s中执行端口访问命令,在命令执行完成之后,hms命名空间下的其他服务spark,iceberg就可以通过容器网络访问hms中的元数据服务了。
在一个实施例中,在没有kyuubi之前,最初使用Spark时,只有理解了Spark RDD模型和其提供的各种算子时,才能比较好地使用Spark进行数据处理和分析。由于向上层暴露了过多底层实现细节,Spark有一定的高使用门槛,在易用性上对许多初入门用户来说并不太友好,Spark ThriftServer的出现使Spark的易用性又向前迈进了一步,通过提供标准的JDBC接口和命令行终端的方式,平台开发者可以基于其提供的服务来快速构建它们的数据分析应用。Spark ThriftServer在带来各种便利性的同时,其不足也是显而易见的。首先,Spark ThriftServer难以满足生产环境下多租户与资源隔离的场景需求。由于一个SparkThriftServer全局只有一个SparkContext,也即只有一个Spark Application,其在启动时就确定了全局唯一的用户名,因此在Spark ThriftServer的维护人员看来,所有通过SparkThriftServer下发的SQL都是来自同一用户(也就是启动时确定的全局唯一的用户名)。尽管其背后实际上是由使用Spark ThriftServer服务的不同用户下发的,但所有背后的这些用户都共享使用了Spark ThriftServer的资源、权限和数据。因此难以单独对某个用户做资源和权限上的控制,操作审计和其它安全策略。其次,单个Spark ThriftServer也容易带来单点故障问题。从Spark ThriftServer接受的客户端请求和其与Executor的通信来考虑,Spark ThriftServer本身的可靠性也难以满足生产环境下的需求。
因此本技术方案通过技术创新和流程设计,通过结合Kyuubi,并将kyuubi与spark进行融合,替代Spark Thriftserver,通过kyuubi和spark的容器化部署实现,达到了降低spark应用开发难度,降低spark使用门槛,降低运维成本的目的。kyuubi是一个分布式和多租户网关,为物联网数据的分析计算引擎Spark提供SQL接入服务,即仅需要通过jdbc客户端向kyuubi提交数据分析任务的SQL代码,即可实现海量物联网数据分析任务的提交、计算和分析,无需提前构建spark集群,编写任务提交脚本,配置计算资源参数等操作,大大简化spark分析任务开发,部署,运维的复杂度。
如图2所示,提供了一种kyuubi的架构图。kyuubi架构设计可以分为四层,包括:
第一,用户层,指通过不同方式使用Kyuubi的用户(User1,User2),比如通过JDBC或beeline方式使用Kyuubi的用户。
第二,服务发现层,服务发现层依赖于Zookeeper实现,其又分为Kyuubi Server层的服务发现和Kyuubi Engine层的服务发现。
第三,Kyuubi Server层,由多个不同的KyuubiServer实例组成,每个KyuubiServer实例本质上为基于Apache Thrift实现的RPC服务端,其接收来自用户的请求,但并不会真正执行该请求的相关SQL操作,只会作为代理转发该请求到Kyuubi Engine层用户所属的SparkSQLEngine实例上。
第四,Kyuubi Engine层,由多个不同的SparkSQLEngine实例组成,每个SparkSQLEngine实例本质上为基于Apache Thrift实现的并且持有一个SparkSession实例的RPC服务端,其接收来自KyuubiServer实例的请求,并通过SparkSession实例来执行。在Kyuubi的USER共享层级上,每个SparkSQLEngine实例都是用户级别的,即不同的用户其会持有不同的SparkSQLEngine实例,以实现用户级别的资源隔离和控制;为了实现向容器化的spark提交任务,kyuubi也必须实现容器化。在本技术方案中,通过技术创新和流程设计,实现了kyuubi的容器化并与容器化的spark进行了融合。
进一步地,多租户数据分析平台在容器管理平台中进行容器化部署即kyuubi在k8s中进行容器化部署包括:获取多租户数据分析平台的容器构建请求,从容器管理平台中的预设多租户镜像服务器中拉取多租户镜像,根据多租户镜像对多租户数据分析平台进行容器化部署。其中,多租户镜像的制作包括:第一步,获取并解压多租户安装包。具体地,下载安装包到linux系统下的某个目录中,然后进行解压。经过解压,我们就可以进入到特定目录下的任何次级目录进行查看,文件的修改,参数的配置。因为不同版本的kyuubi安装包具有不同的功能,可以适配其他不同版本的大数据组件,所以我们可以根据不同版本的kyuubi安装包制作不同版本kyuubi docker镜像,以不同docker镜像标签tag进行区分即可。
第二步,构建用于在多租户容器启动时安装容器管理平台并用于添加容器管理平台集群认证的证书的第一脚本。确定多租户安装包解压的第三解压目录。在第三解压目录的多租户启动脚本中增加第一脚本的位置和启动方式。获取多租户镜像构建指令文件,多租户镜像构建指令文件中包括多租户启动脚本。基于多租户镜像构建指令文件执行构建指令,得到多租户镜像。具体地,编写kyuubi容器启动时容器内部安装k8s客户端并添加证书的脚本run.sh,该脚本主要是为了当用户通过kyuubi提交spark数据分析任务时,kyuubi容器可以通过容器内的k8s客户端并且有权限向k8s集群的api server发起请求,即拉起一个spark计算集群并执行kyuubi传递过来的spark数据分析计算任务请求。该run.sh脚本主要包括以下指令:创建目录并且赋予可读可写权限,复制k8s集群认证文件到相应目录,配置容器内的k8s认证地址环境变量。下载k8s的客户端kubectl,脚本制作完成之后,在解压目录的bin目录下,修改kyuubi启动脚本,并将上述run.sh脚本位置和启动方式在kyuubi脚本中进行配置。
进一步地,为了得到可以运行的kyuubi镜像,需要制作构建kyuubi镜像时必须的文本文件Dockerfile。该Dockerfile包含了很多构建kyuubi镜像所需的指令和说明,本技术方案中构建Kyuubi镜像时,在该文本文件必须指明kyuubi容器启动时需要的一些基本环境和需要执行的一些指令,主要包括:
(1)修改openjdk的源;
(2)修改拉取debian的源;
(3)安装配置所需的插件;
(4)复制初始化脚本run.sh,用来在镜像拉起后进行修改/etc/hosts文件;
(5)设置user用户为0(root)(使用root,或者0都行);
(6)复制解压目录到容器内的相应的目录中;
(7)指定kyuubi的在容器中运行的指令,kyuubi的Dockerfile即制作完成。
进一步地,在kyuubi安装包目录中,进入到docker目录下,将制作的Dockerfile复制到该目录下,并执行构建命令,该构建命令中需要指明创建kyuubi镜像所依赖的Dockerfile,以及spark镜像作为基础镜像,将kyuubi与spark进行融合,以便在向kyuubi提交spark分析任务时,spark集群可以根据指定的spark镜像被快速拉起并进行物联网数据的分析计算。
进一步地,为了简化不同数据分析任务的部署过程,kyuubi的镜像是需要复用的,每次提交数据分析任务时都可以基于kyuubi镜像进行spark分析任务的提交。因此需要将kyuubi镜像推送到harbor镜像服务器,以便每次发版或者更新时可以快速拉取kyuubi镜像,避免重复进行kyuubi镜像的构建。执行以下命令即可将构建的镜像push到镜像服务器,之后需要搭建kyuubi sql多租户统一提交服务平台时,只要从该镜像服务器拉取kyuubi镜像在k8s中按照约定进行部署即可,无需每次都重复上述操作步骤,即达到了一次制作,反复使用的目的。
在一个实施例中,根据多租户镜像对多租户数据分析平台进行容器化部署之前,依次执行多租户数据分析平台对应的资源文件,其中,资源文件包括部署资源文件、资源配置文件以及服务资源文件。具体地,在向k8s提交spark的数据分析任务前,需要在k8s容器中将kyuubi相关的服务启动起来。k8s中部署服务只需要将相应的资源对象通过yaml语言描述清楚,最终以yaml文件形式向k8s集群提交即可在k8s中拉起相应的服务。k8s的deployment是最常用的workload,也是基础设施扩缩容基础。deployment的作用:发布应用,升级应用,回退应用,扩缩容,因此也采用deployment来发布kyuubi应用,kyuubi的deployment yaml文件配置主要包括:
(1)kyuubi-deployment的名称,标签,所在命名空间;
(2)容器中需要解析的ip和hostname的映射关系;
(3)需要启动的容器及相关信息的配置;
(4)容器中环境变量;
(5)容器需要加载的配置文件;
(6)容器的持久化存储等,按照yaml的编程规范,将上述配置参数配置完成之后就得到kyuubi-deployment的yaml文件。
在一个实施例中,部署资源文件的构建包括:确定需要执行的多租户数据分析平台的容器所属的命名空间。确定多租户数据分析平台的容器的名称以及多租户数据分析平台的容器对应的配置参数。基于命名空间、名称以及多租户数据分析平台的容器对应的配置参数构建部署资源文件。具体地,在k8s中把相应服务的容器启动之后,如果不做其他处理,这些服务只能在容器内访问。在k8s集群之外的服务如果要访问kyuubi-server就会因网络问题而无法实现,k8s集群内容器中的服务,由于集群内网络限制等原因,是不能对外访问的。为了解决这个问题,还需要通过k8s的service资源进行端口和网络约定,把容器内的服务端口通过NodePort或者Ingress形式暴露到k8s集群外面,方便开发人员远程向k8s集群提交spark分析任务。在本技术方案中,可以选择NodePort进行服务端口的暴露,kyuubi-service.yaml文件的配置内容主要包括:指定资源类型为service,所属命名空间为kyuubi,源端口和目标端口,以及映射形式。上述参数配置完成之后,就得到了kyuubi-service.yaml的yaml文件。
进一步地,K8s中不同资源的隔离是通过命名空间进行的,通过在k8s中创建一个命名空间,并为该命名空间指定一定的cpu,内存资源,那么绑定到该命名空间的项目,或者任务就只能使用该命名空间中的资源,不能共享或者抢占其他命名空间的资源。创建了命名空间之后,要在该命名空间下创建服务账号和角色,并将二者进行绑定,之后所有的操作都以该服务账号在k8s中进行pod的创建和删除。在本技术方案中,可以根据此为spark创建命名空间,服务账号和角色绑定,以达到spark不同分析计算任务资源的隔离和相关权限的精细化管理。
在一个实施例中,资源配置文件的构建包括:获取用于确定多租户数据分析平台的环境变量配置参数、用于执行数据分析任务提交的提交配置参数以及分布式计算引擎的配置参数。获取简易信息聚合服务的shuttle配置参数和分布式计算引擎的资源动态调整参数。获取用于确定分布式计算引擎与对象存储模块之间的连接关系的连接参数。基于环境变量配置参数、提交配置参数、分布式计算引擎的配置参数、shuttle配置参数、分布式计算引擎的资源动态调整参数以及连接参数构建资源配置文件。具体地,Kyuubi容器启动时需要进行很多参数的配置,即与kyuubi自身相关的、与spark相关的以及与minio相关的配置,主要包括:
(1)kyuubi自身环境变量的配置;
(2)kyuubi提交执行任务参数的配置;
(3)spark相关参数的配置,由于这一部分配置都是以不同文件形式存在,为了将这些配置文件集中到一起并方便kyuubi容器的加载,通过k8s的configMap资源对象进行这些配置的管理,通过最终形成configmap的yaml文件,将这些配置文件统一到一起,该configmap的yaml文件中需要配置的信息包括:
(1)configmap的名称及所属的命名空间;
(2)在data部分将上述2个文件的内容进行集中配置,分为2类,分别将不同文件中的配置参数在yaml文件中进行罗列。一类是kyuubi运行时需要的环境变量信息,另一类是kyuubi,spark,spark集成iceberg的参数配置信息,将kyuubi与spark容器运行的具体参数信息配置完成之后,当kyuubi和spark容器启动时,这些配置参数就会生效。在本技术方案中,选择iceberg数据湖来进行底层数据的组织,方便spark-SQL查询,在此configmap中,要配置清楚二者的依赖关系,配置完成之后,就可以得到kyuubi-hms-configmap.yaml的配置文件。
在一个实施例中,Spark容器启动之后,需要向minio中写入或者读取数据,并且很多spark分析任务依赖的第三方jar包或者配置项文件都是跟具体任务相关。因此为了得到一个可以复用的spark镜像,这些跟具体任务相关的文件,本技术方案中并没有将其放到spark镜像中,而是采取了一种更加灵活的方式,将这些文件放到minio分布式对象存储系统中。可以在kyuubi configmap yaml中配置好spark与minio的连接关系,之后当提交spark分析任务时,spark容器在启动时就会从外部服务minio上拉取本次数据分析任务需要的文件到spark容器内,参与数据的计算。这样可以做到最大的灵活性和spark镜像的复用,同时也使spark集群具有读写minio对象存储中的数据文件的能力。
进一步地,经过上述准备工作之后,可以在k8s集群的其中一台节点上依次启动kyuubi相应的资源文件,即执行k8s的相关工作负载创建指令。依次在k8s创建configmap,service,deployment三种资源对象,然后kyuubi的工作负载就会被创建成功,kyuubi-deployment下面就会包括kyuubi-server和kyuubi-engine的pod,pod中就会运行具体的容器。等到kyuubi相关的pod在k8s容器中完全启动之后,就可以在k8s集群外面通过beeline客户端连接kyuubi-server进行spark任务的提交。
在本技术方案中仅需要一个jdbc客户端,即可将spark的数据分析任务提交到k8s管理的容器中,并且提交任务时不再需要做任何参数配置或者写任何脚本,也不需要提前创建spark集群。具体任务提交过程如下:通过hive的beeline客户端,输入kyuubi的jdbc连接地址,按提示输入用户名和密码,即可建立与kyuubi server的jdbc连接,此时,将准备好的spark SQL分析代码在该jdbc客户端进行提交,kyuubi server收到数据分析任务请求之后,将该请求发送到kyuubi engine,kyuubi engine通过k8s客户端kubectl向k8s的apiserver服务发起建立spark driver pod的请求,driver pod向k8s申请计算资源,拉起一定数量的spark executor pods,并开始spark SQL分析任务的计算,各个服务容器启动过程中都会根据之前步骤指定的yaml约束文件进行相应服务pod的自动拉起,并自动完成计算。当数据分析任务计算完成之后,不同的spark executor pod会根据计算是否完成将pod的状态打上completed的标签,然后将该pod的资源释放出来,供其他pod使用,使资源利用率最大化,当所有spark executor状态都变为completed时,表示数据分析任务已结束,集群的资源可以得到全部的释放,同时spark diver pod会将计算分析结果返回给jdbc客户端,整个计算分析任务结束。上述所有流程仅在首次提交任务时,会做上述准备,之后所有的分析任务只需按此步骤说明执行即可,极大简化了现有技术方案繁琐的分析流程和任务提交流程。
上述技术方案,采用了创新性的流程设计和技术创新,通过云原生技术实现了去hadoop的轻量化,存算分离的大数据技术底座的搭建部署。通过云原生技术实现了统一元数据管理服务HMS的部署,元数据管理服务是大数据技术体系中不可或缺的服务组件,所有与数据处理相关大数据组件都需要元数据服务的支持,才能对海量数据进行处理。本技术方案首次实现了将hive metastore单独进行容器化部署,实现了元数据的统一存储和管理。同时,本技术方案创新性地引入了对象存储服务MINIO替代hadoop的datanode做数据存储,充分利用对象存储成本低廉,可扩展性好,安全性高等优点,降低了存储架构的复杂性,降低了部署和运维成本。其中,MINIO只负责存储,不负责计算,架构简单,易上手,实现了存储和计算的分离。其次,本技术方案创性地将kyuubi与spark进行结合并进行容器化部署,通过kyuubi服务提供的远程任务提交jdbc客户端,可以很方便地将spark-sql数据分析任务提交到容器中的spark集群,spark集群仅在有数据分析任务提交时才会在k8s容器中即时拉起,无需spark集群常驻,减少了运维和监控的复杂度。由于是通过kyuubi提交sql开发的数据分析任务,开发的难度和上线的复杂度大大地降低,普通开发人员都可以上手进行大数据开发。本技术方案最大的创新点是抛弃了目前技术方案离线hive数仓,快速查询hbase数仓,dorisdb实时数仓等为满足各种业务场景而引入的大数据数仓组件,引入了数据湖iceberg来对minio中的数据文件进行表格式的组织,很好地兼容和支持spark-sql语法,由于iceberg数据湖的行级更新,多版本控制,时间旅行,支持事务等新特性,可以帮助实现历史数据查询,数据增量分析,数据回滚,数据回溯等功能,即通过iceberg就可以替代现有技术方案中的各种大数据数仓组件,满足不同业务场景的需要,极大地简化了大数据的架构设计。同时,由于iceberg无服务模式的工作机制,无需部署iceberg服务,更无须运维或者监控,降低了大数据分析门槛,极大降低了使用成本及开发部署监控运维成本。由于本技术方案是利用k8s容器来承载spark大数据分析,每次提交spark-sql分析任务时在k8s中创建的spark-executor pod(spark集群中负责数据计算的计算机进程)就可以根据CPU和内存使用情况进行快速的扩缩容,提高计算效率,很好地解决了存在流量洪峰的业务场景,快速增加spark-executor pod的数量,快速增加计算资源从,以满足业务需求。譬如双11大促的业务场景,当流量洪峰退去spark-executor pod的数量自动缩容,恢复的正常水平,释放计算资源。由于本技术方案已经实现了存储和计算分离,所以计算资源的弹性伸缩并不会影响对象存储MINIO,即MINIO无需跟着计算资源一起扩容,二者彼此独立,弹性伸缩容的整个过程自动完成,无需人为参与,计算资源的弹性伸缩,削峰填谷的特性也是本技术方案实现的一个新功能。通过本技术方案的实施,公司供应链上的众多中小微,尖敬特性,传统小企业都能够以低成本,不需要很高人力投入的方式实现大数据技术在各自公司中的应用,同时也满足了很多投入少的业务场景实际需求,极大地提高了数据分析的效率,发挥了大数据技术在企业数字化转型中的重要作用,产生了很高的经济效益。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (16)

1.一种用于轻量大数据的处理系统,其特征在于,所述处理系统包括:
容器管理平台,用于为多租户数据分析平台、分布式计算引擎以及元数据配置管理模块提供容器,为大数据提供管理和调度功能;
所述多租户数据分析平台,用于为多种SQL查询提供查询引擎,用于获取SQL客户端提交的SQL查询语句,并将所述SQL查询转化为定时调度数据处理任务;
所述分布式计算引擎,用于根据定时调度数据处理任务生成对应的分布式计算集群,以通过所述分布式计算集群完成与所述SQL查询对应的数据分析;
所述元数据配置管理模块,用于管理所述大数据的元数据;
表格式数据湖,用于将所述大数据的目录信息以表格式进行存储;
对象存储模块,用于存储所述大数据的数据内容。
2.根据权利要求1所述的用于轻量大数据的处理系统,其特征在于,所述分布式计算引擎还用于:
获取所述分布式计算引擎的容器构建请求;
根据所述容器构建请求从所述容器管理平台中的预设计算引擎镜像服务器中拉取计算引擎镜像;
根据所述计算引擎镜像对所述分布式计算引擎进行容器化部署。
3.根据权利要求2所述的用于轻量大数据的处理系统,其特征在于,所述分布式计算引擎还用于执行所述计算引擎镜像的制作步骤,所述制作步骤包括:
获取并解压计算引擎安装包;
获取系统配置文件,其中,所述系统配置文件包括所述元数据配置管理模块及对象存储模块对应的系统配置文件;
确定所述计算引擎安装包进行解压后的第一解压目录;
将所述系统配置文件以依赖文件的形式复制到所述第一解压目录;
在所述第一解压目录下的配置脚本中增加所述系统配置文件所在位置的环境变量;
获取计算引擎镜像构建指令文件,所述计算引擎镜像构建指令文件中包括所述第一解压目录中的系统配置文件和配置脚本;
基于所述计算引擎镜像构建指令文件执行构建指令,以得到所述计算引擎镜像。
4.根据权利要求2所述的用于轻量大数据的处理系统,其特征在于,所述分布式计算引擎还用于执行所述计算引擎镜像的存储步骤,所述计算引擎镜像的存储步骤包括:
获取计算引擎存储指令;
根据所述计算引擎存储指令将所述计算引擎镜像存储至所述预设计算引擎镜像服务器中。
5.根据权利要求1所述的用于轻量大数据的处理系统,其特征在于,所述对象存储模块还用于执行所述对象存储模块的启动步骤,所述对象存储模块的启动步骤包括:
获取所述对象存储模块的二进制文件;
确定所述对象存储模块的安装位置,并在所述安装位置创建对应的安装目录;
将所述二进制文件上传至所述安装目录;
为所述对象存储模块的启动脚本划分许可权限,以在所述处理系统中进行启动。
6.根据权利要求1所述的用于轻量大数据的处理系统,其特征在于,所述元数据配置管理模块还用于:
获取所述元数据配置管理模块的容器构建请求;
从所述容器管理平台中的预设配置单元镜像仓库中拉取配置单元镜像;
根据所述配置单元镜像对所述元数据配置管理模块进行容器化部署。
7.根据权利要求6所述的用于轻量大数据的处理系统,其特征在于,所述元数据配置管理模块还用于执行所述配置单元镜像的制作步骤,所述配置单元镜像的制作步骤包括:
获取并编译配置单元源码包;
从编译后的配置单元源码包所在目录获取配置单元安装包;
解压所述配置单元安装包,以得到配置单元解压包,并确定所述配置单元解压包所在的第二解压目录;
获取计算引擎安装包,并将所述计算引擎安装包解压至所述第二解压目录,以得到计算引擎解压包;
在所述第二解压目录中创建配置单元镜像构建指令文件;
在所述配置单元镜像构建指令文件中创建所述配置单元解压包和所述计算引擎解压包的存放目录,并将所述配置单元解压包和所述计算引擎解压包复制到所述存放目录;
基于所述配置单元镜像构建指令文件执行构建指令,以得到所述配置单元镜像。
8.根据权利要求6所述的用于轻量大数据的处理系统,其特征在于,所述容器管理平台还用于:
创建命名空间和服务账号;
在所述命名空间内通过所述服务账号创建元数据配置管理模块的配置文件;
获取并执行所述配置文件的执行指令,以将所述配置文件发布至所述元数据配置管理模块的容器中;
通过所述配置文件在所述元数据配置管理模块进行容器化部署之前进行认证;
在认证成功的情况下,对所述元数据配置管理模块进行容器化部署。
9.根据权利要求6所述的用于轻量大数据的处理系统,其特征在于,所述元数据配置管理模块还用于执行所述元数据配置管理模块的容器的启动步骤,所述元数据配置管理模块的容器的启动步骤包括:
创建所述元数据配置管理模块的后台元数据表;
根据所述配置单元镜像在所述容器管理平台部署所述元数据配置管理模块的容器;
根据所述容器管理平台的启动规则编写所述元数据配置管理模块的容器的资源文件,所述资源文件包括启动所述元数据配置管理模块的容器所需的容器管理平台资源属性;
获取并执行所述元数据配置管理模块的容器的启动指令,以在所述容器管理平台中启动所述元数据配置管理模块的容器。
10.根据权利要求9所述的用于轻量大数据的处理系统,其特征在于,所述元数据配置管理模块还用于:
在所述资源文件中设置所述元数据配置管理模块的访问端口的配置文件;
获取并执行所述访问端口的配置文件的启动指令,以启动所述访问端口;
所述分布式计算引擎和所述表格式数据湖通过所述访问端口与所述元数据配置管理模块进行元数据交互。
11.根据权利要求1所述的用于轻量大数据的处理系统,其特征在于,所述多租户数据分析平台还用于:
获取所述多租户数据分析平台的容器构建请求;
从所述容器管理平台中的预设多租户镜像服务器中拉取多租户镜像;
根据所述多租户镜像对所述多租户数据分析平台进行容器化部署。
12.根据权利要求11所述的用于轻量大数据的处理系统,其特征在于,所述多租户数据分析平台还用于执行所述多租户镜像的制作步骤,所述多租户镜像的制作步骤包括:
获取并解压多租户安装包;
构建用于在多租户容器启动时安装容器管理平台并用于添加容器管理平台集群认证的证书的第一脚本;
确定多租户安装包解压的第三解压目录;
在所述第三解压目录的多租户启动脚本中增加所述第一脚本的位置和启动方式;
获取多租户镜像构建指令文件,所述多租户镜像构建指令文件中包括所述多租户启动脚本;
基于所述多租户镜像构建指令文件执行构建指令,得到所述多租户镜像。
13.根据权利要求11所述的用于轻量大数据的处理系统,其特征在于,所述多租户数据分析平台还用于执行所述多租户数据分析平台的容器的启动步骤,所述多租户数据分析平台的容器的启动步骤包括:
在所述容器管理平台中创建所述多租户数据分析平台的容器的启动资源对象;
获取所述多租户数据分析平台的工作负载的创建指令;
通过所述启动资源对象执行所述创建指令,以启动所述多租户数据分析平台的容器。
14.根据权利要求11所述的用于轻量大数据的处理系统,其特征在于,所述多租户数据分析平台还用于:
根据所述多租户镜像对所述多租户数据分析平台进行容器化部署之前,依次执行多租户数据分析平台对应的资源文件,其中,所述资源文件包括部署资源文件、资源配置文件以及服务资源文件。
15.根据权利要求14所述的用于轻量大数据的处理系统,其特征在于,所述多租户数据分析平台还用于执行所述部署资源文件的构建步骤,所述部署资源文件的构建步骤包括:
确定需要执行的多租户数据分析平台的容器所属的命名空间;
确定所述多租户数据分析平台的容器的名称以及所述多租户数据分析平台的容器对应的配置参数;
基于所述命名空间、所述名称以及所述多租户数据分析平台的容器对应的配置参数构建所述部署资源文件。
16.根据权利要求14所述的用于轻量大数据的处理系统,其特征在于,所述多租户数据分析平台还用于执行所述资源配置文件的构建步骤,所述资源配置文件的构建步骤包括:
获取用于确定所述多租户数据分析平台的环境变量配置参数、用于执行数据分析任务提交的提交配置参数以及所述分布式计算引擎的配置参数;
获取简易信息聚合服务的shuttle配置参数和分布式计算引擎的资源动态调整参数;
获取用于确定所述分布式计算引擎与所述对象存储模块之间的连接关系的连接参数;
基于所述环境变量配置参数、所述提交配置参数、所述分布式计算引擎的配置参数、所述shuttle配置参数、所述分布式计算引擎的资源动态调整参数以及所述连接参数构建所述资源配置文件。
CN202310714573.XA 2023-06-15 2023-06-15 用于轻量大数据的处理系统 Pending CN116860746A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310714573.XA CN116860746A (zh) 2023-06-15 2023-06-15 用于轻量大数据的处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310714573.XA CN116860746A (zh) 2023-06-15 2023-06-15 用于轻量大数据的处理系统

Publications (1)

Publication Number Publication Date
CN116860746A true CN116860746A (zh) 2023-10-10

Family

ID=88218190

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310714573.XA Pending CN116860746A (zh) 2023-06-15 2023-06-15 用于轻量大数据的处理系统

Country Status (1)

Country Link
CN (1) CN116860746A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117708219A (zh) * 2024-02-06 2024-03-15 中科云谷科技有限公司 用于物联网数据的处理方法、处理装置及存储介质
CN117725086A (zh) * 2024-02-06 2024-03-19 中科云谷科技有限公司 大数据服务系统
CN117743470A (zh) * 2024-02-06 2024-03-22 中科云谷科技有限公司 用于异构大数据的处理系统

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117708219A (zh) * 2024-02-06 2024-03-15 中科云谷科技有限公司 用于物联网数据的处理方法、处理装置及存储介质
CN117725086A (zh) * 2024-02-06 2024-03-19 中科云谷科技有限公司 大数据服务系统
CN117743470A (zh) * 2024-02-06 2024-03-22 中科云谷科技有限公司 用于异构大数据的处理系统
CN117725086B (zh) * 2024-02-06 2024-05-07 中科云谷科技有限公司 大数据服务系统
CN117743470B (zh) * 2024-02-06 2024-05-07 中科云谷科技有限公司 用于异构大数据的处理系统
CN117708219B (zh) * 2024-02-06 2024-05-07 中科云谷科技有限公司 用于物联网数据的处理方法、处理装置及存储介质

Similar Documents

Publication Publication Date Title
Murthy et al. Apache Hadoop YARN: moving beyond MapReduce and batch processing with Apache Hadoop 2
JP6774499B2 (ja) オフラインでのハイブリッドアプリケーションへのアクセスの提供
Arundel et al. Cloud Native DevOps with Kubernetes: building, deploying, and scaling modern applications in the Cloud
CN116860746A (zh) 用于轻量大数据的处理系统
CN111324571B (zh) 一种容器集群管理方法、装置及系统
CN107797767B (zh) 一种基于容器技术部署分布式存储系统及其存储方法
US10162735B2 (en) Distributed system test automation framework
CN109165206B (zh) 基于容器的hdfs高可用实现方法
US20220385532A1 (en) Adding host systems to existing containerized clusters
Rusek et al. A decentralized system for load balancing of containerized microservices in the cloud
CN115344273B (zh) 一种基于货架系统来运行应用软件的方法及系统
CN115981789A (zh) 基于容器的物联网数据批处理方法、处理器及存储介质
CN115525396A (zh) 基于云原生的应用管理方法及装置
Schmeling et al. The impact of kubernetes on development
CN117743470B (zh) 用于异构大数据的处理系统
CN110837394A (zh) 一种高可用配置版本仓库配置方法、终端及可读介质
Hicks et al. Integration and implementation (int) cs 5604 f2020
WO2022057698A1 (en) Efficient bulk loading multiple rows or partitions for single target table
US12013774B2 (en) Verification of core file debugging resources
US20240103823A1 (en) Smart image registries for dynamic image generation
US20240086168A1 (en) Automatic generation of container images
Pathak et al. Kubernetes and Docker the Star Duo of container culture
US20240037017A1 (en) Verification of core file debugging resources
US20240127148A1 (en) Delta based task analysis for ci systems
Agrawal Kubernetes Deep Dive

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination