掌桥专利:专业的专利平台
掌桥专利
首页

去中心化分布式数据处理系统

文献发布时间:2023-06-19 09:55:50


去中心化分布式数据处理系统

技术领域

本发明涉及大数据处理领域,尤其涉及去中心化分布式数据处理系统。

背景技术

因为随着数据的爆炸式增长,单台计算机已经不能满足对大数据的分析和处理需要的能力,一味去靠提高单台计算机硬件的处理效率,不仅成本高,而且处理大数据的效率也不会提高很多,这样遇到了数据处理的瓶颈。

因此,企业通常利用成百上千台普通计算机进行联网形成一套分布式系统来实现对大数据的分析和处理。请参见如图1所示的分布式数据系统的发展史,在2003年,Google第一个提出分布式大数据处理技术MapReduce,是用来实现其对全球网页备份数据的搜索。Yahoo根据Google发布的MapReduce,研发并开源了Apache Hadoop系统。

2009年UC Berkeley研发出了Apache Spark,由于Apache Hadoop在进行数据处理过程中,中间值存储在磁盘上,不断从磁盘上读取数据影响了数据处理的效率,而ApacheSpark实现数据处理过程中基于内存的处理,从而提升了高达100倍的效率。但是ApacheHadoop和Apache Spark都是对存储在磁盘上的数据进行处理,无法针对网络的流式数据进行处理。2011年,Twitter首次发布了基于流式处理的开源大数据处理系统Apache Storm。Apache Storm虽然解决了流数据处理的实效问题,但在处理时并没有解决对流数据准确处理exactly-once的问题。2015年,Apache Flink学习了部分Google下一代的数据处理技术MillWheel解决了对流数据的准确处理exactly-once的问题,并且将批数据和流数据整合在了一个系统进行处理。

但是现有的大数据处理系统皆采用主从分布式构架,即利用一个中心主节点来调度,并分配数据到其余的多个从机节点,数据将在从机上进行处理。主从分布式构架系统对中心主节点依赖度很高,如果中心节点失去连接或者故障,整个分布式系统将失效无法对数据进行处理;而且在维护升级时,由于只有一个中心节点,需要把系统停掉,使得系统可靠性很低;主从构架的数据处理,每个从机都需要跟主机进行数据交互,单台主机的处理能力有限,带宽也是有限的,造成数据处理瓶颈,影响数据处理的效率。这样的构架会带来性能、扩展性、和可靠性方面的缺点。

发明内容

本发明提供的去中心化分布式数据处理系统,主要解决的技术问题是:主从分布式构架的数据处理系统在性能、扩展性和可靠性方面有待提升。

为解决上述技术问题,本发明提供一种去中心化分布式数据处理系统,包括:

系统构建与维护模块,利用一致性hash算法,对hash环进行分区,每个分区由一个键值key占位,键值范围0至2

任务调度模块,当待处理数据进入系统时,利用所述一致性hash算法,对所述待处理数据进行hash运算生成对应的hash识别值,并映射到hash环中的键值位上;

数据处理模块,用于实时监测映射到当前节点至相邻上游节点所在区间段内的待处理数据,并接收、处理、存储。

可选的,所述数据处理模块用于在所述待处理数据包含至少两步处理流程时,处理其中最近需要处理的一步处理流程,得到该处理流程的中间处理结果,并将该中间处理结果以及后续未处理流程发送给所述任务调度模块;

所述任务调度模块还用于利用所述一致性hash算法,对所述中间处理与所述后续未处理流程进行hash运算生成hash识别值,并映射到hash环中的键值位上,以待其他节点处理。

可选的,所述去中心化分布式数据处理系统采用C++、Erlang或Go编程语言实现,可适用于物联网设备、嵌入式设备以及云计算设备。

可选的,所述去中心化分布式数据处理系统可实现批数据和流数据的处理。

可选的,所述系统构建与维护模块还用于实时监测与本节点相连的相邻上下游节点的工作状态,当判断相邻上下游节点发生退出、失联或宕机时,自动与异常节点的另一相邻节点通讯连接;异常节点的任务和/或存储数据由其下游相邻节点接收。

本发明的有益效果是:

根据本发明提供的去中心化分布式数据处理系统,包括系统构建与维护模块,利用一致性hash算法,对hash环进行分区,每个分区由一个键值key占位,键值范围0至2

本系统抛弃了以前的主从分布式构架,采用peer-2-peer(p2p)的去中心化的分布式构架,是第一个在大数据处理系统上采用去中心化构架,去中心化构架允许分布式系统里的任意节点能实时地加入或者离开这个网络,而对不影响整个分布式系统的正常工作,从而保障了整个分布式运行的高可靠性。

在维护时,只需对任意需要维护的节点进行hot code升级,而不会有系统停机维护的问题。

同时,由于没有一个中心主节点,数据在和网络的每台计算节点进行交互,从而解决了所有从机跟单台主机数据交互的瓶颈问题。

本系统可以部署在上百台普通的物理计算机,云计算节点,虚拟节点、物联网边缘设备和嵌入式设备等形成一个分布式系统,对通用数据类型的大数据,执行基于内存的高效计算。

附图说明

图1为大数据处理系统发展时间轴;

图2为Apache Hadoop系统架构图;

图3为Apache Hadoop系统数据处理执行框架一;

图4为Apache Hadoop系统数据处理执行框架二;

图5为Apache Spark系统架构图;

图6为本发明实施例一的去中心化分布式数据处理系统模块结构示意图;

图7为本发明实施例一的去中心化分布式数据处理系统架构示意图;

图8为本发明实施例一的去中心化分布式数据处理系统数据跨节点处理示意图;

图9为本发明实施例一的去中心化分布式数据处理系统线程控制示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

实施例一:

请参见图2,Apache Hadoop为主从式构架的分布式系统,一个Hadoop计算集群拥有一个中心节点NameNode和达到数百个DataNode。NameNode是一个专用服务器,含有树状的命名空间信息和映射到DataNode里面的文件区域信息,用于寻找文件数据的物理位置。而应用程序数据被保存在了其他的服务器上叫做DataNode。

MapReduce是Hadoop所用的编程模型,用来处理大规模数据集。用户定义一个Map函数来处理数据的键值对(key/value pair),从而产生一系列中间键值对,然后用一个Reduce函数来合并相同的中间键值对。

Map函数能调用分布式服务器自动对输入的数据进行分区成m个分块。这些分块能并行被分布式服务器同时处理得到一个中间键值对空间。Reduce函数能用分区哈希函数把中间键值对空间分成R分块进行处理得到输出结果。MapReduce执行框架,如图3-4所示。

NameNode是Hadoop的一个中心节点,一旦中心节点崩溃会造成整个系统瘫痪,使得系统可靠性和稳定性能受限。而对数据的处理,Hadoop将中间值保存在本地硬盘上,计算时需要对本地硬盘上的数据读取和写入,使得处理的效率较低。

与Apache Hadoop不同,Apache Spark是基于内存的分布式数据处理,其采用的同样是一个主从式构架,如下图5所示。

为了解决现有数据处理系统基于主从分布式构架导致在性能、扩展性和可靠性方面存在的缺陷,本实施例提供一种去中心化分布式数据处理系统,请参见图6,该系统包括如下模块:

系统构建与维护模块10,利用一致性hash算法,对hash环进行分区,每个分区由一个键值key占位,键值范围0至2

任务调度模块20,当待处理数据进入系统时,利用所述一致性hash算法,对待处理数据进行hash运算生成对应的hash识别值,并映射到hash环中的键值位上;

数据处理模块30,用于实时监测映射到当前节点至相邻上游节点(逆时针方向)所在区间段内的待处理数据,并接收、处理、存储。

请参见图7,采用一致性哈希算法将分布式系统进行分区,每个分区由一个key键值占位,需要多少个分区即是多少个键值key。分布式系统的所有计算节点被映射到一个Chord Ring环上的键值位上。这个环被一致性哈希算法切分为一系列的区域,每个区域被分配了一部分0到2

目前的Apache系列的大数据处理系统都是基于云计算的运行环境,官方对硬件的要求如下:

4GB以上的内存;

只能基于Linux操作系统的主流发布版本,比如Ubuntu,CentOS,Redhat,Debian,Fedora等;

在数据处理时,只能基于CPU的计算。

而在物联网时代,边缘设备通常基于跟云计算不同的运行环境:

1GB以下的内存;

嵌入式设备,如GRiSP,或实时操作系统,如Free RTOS,AtomVM等;

在数据处理时,有异构硬件FPGA,GPU,人工智能芯片等参与计算。

也即,现有Apache系列的大数据处理系统都不能在边缘设备上运行,为此,本实施例中的去中心化分布式数据处理系统,采用C++或Go编程语言实现,可适用于物联网设备、嵌入式设备以及云计算设备。实现物联网设备、嵌入式设备以及云计算设备之间的互联。

物联网设备采集实时海量流数据,本发明可适用于对流式大数据和批式大数据的处理,流数据在每个计算节点实施一步数据处理,可以进行跨多个计算节点的多个步骤的处理。

数据处理模块30用于在待处理数据包含至少两步处理流程时,处理其中最近需要处理的一步处理流程,得到该处理流程的中间处理结果,并将该中间处理结果以及后续未处理流程发送给所述任务调度模块;任务调度模块20还用于利用所述一致性hash算法,对所述中间处理与所述后续未处理流程进行hash运算生成hash识别值,并映射到hash环中的键值位上,以待其他节点处理。

请参见图8,在数据处理时,尤其是流数据,数据可能会经过多个节点,每个节点将对数据进行一步处理。整个数据处理的过程需要多少步,这个数据处理的流程就会经过同样多的节点个数。比如,数据x刚进入系统会被标记一个hash码<<167.168.3.0,....>>,这个hash码在计算节点Node1的管辖范围,计算节点Node1进行第一步处理,假设得到中间处理值为x’,然后会直接通过任务调度模块,计算中间处理值x’的一致性hash值,分配到计算节点Node3,进行第二步处理,假设得到一个中间值x”,然后又通过任务调度模块对x”进行一致性hash运算,分配到计算节点Node7进行第三步处理,得到一个中间值x”’,最后该数据被调度到计算节点Node4从系统网络里输出用于存储或是实时显示。

在云计算的运行环境,也能实现基于云计算的批数据或流数据的处理。在多步处理时也要进行多个云计算节点的多步骤处理。在批数据处理时,本发明可以调度所有节点同时参与计算。

在软件系统组成的网络里,任意一个计算节点由于故障导致的失联或者宕机,该计算节点旁边的两个计算节点将实现自动链接,从而不会对该系统的正常运行造成影响。

具体的,系统构建与维护模块10还用于实时监测与本节点相连的相邻上下游节点的工作状态,当判断相邻上下游节点发生退出、失联或宕机时,自动与异常节点的另一相邻节点通讯连接;异常节点的任务和/或存储数据由其下游相邻节点接收。

Apache Hadoop的缺点是在数据过程中,每步的中间值都是基于磁盘的写入和读取,大大影响了数据处理的效率。并且在读取数据的过程中,Hadoop采用单线程的磁盘读取方式,没有将磁盘读取的速度最大化,从而也大大影响数据处理的效率。

Apache Spark改进了Apache Hadoop的数据处理效率,在数据处理的pipeline里的中间值都是基于内存的读写,从而提升了数据处理的效率。在磁盘的读取过程中,Spark采用高并发的多线程的方式,将磁盘读取的速度达到了最大化,也提升了数据处理的效率。但是,Apache Spark是基于Java Virtual Machine(JVM)上运行,JVM采用的是分享式内存,在高并发的多线程的环境里面,存储在JVM分享式内存里往往不能得到释放,从而造成大量内存堆积引发的系统崩溃。

较Hadoop和Spark,本发明摒弃了JVM的分享式内存的机制,采用C++,Go等语言开发,能直接编译成机器码,不仅可以适用于云计算的主流Linux发布版本,还克服了现有大数据处理不能适用于边缘设备的运行环境的问题。在基于内存高并发多线程计算的时候,数据存储在每个线程里面,线程之间的内存并不共享,一旦线程处理结束,该线程的内存立即释放,彻底解决了分享式内存的堆积无法彻底释放的问题。在中间值的存储和交互计算时,本发明采用基于内存的去中心化键值(key/value)存储来解决。

本发明也为程序员提供了编程接口,屏蔽了分布式和并行底层技术的细节问题,用户使用起来简单方便。

本发明采用去中心化的分布式架构,数据进入系统被标识为一个hash码,并在系统内部产生一个线程,该数据储存在线程本地内存里,其他线程并不能访问。单台计算节点可以产生高达上万条线程来实现对大数据的并发处理。

在单个线程内的数据处理,该系统线程可以通过有限状态机的模式控制到一个操作系统的线程,来利用外部的计算单元,比如C++,Python,Go执行文件,来实现对多种编程语言的支持。

请参见图9,在1号计算节点,红色线程控制了一个操作系统线程,并通过有限状态机模式来传输数据到外部的一个执行文件,当该执行文件完成对该数据的处理,会又通过有限状态机的模式回传给系统的红色线程。红色线程接到该数据会立即传输到5号计算节点的红色线程进行第二步的数据处理。

本发明提供的去中心化分布式数据处理系统,采用去中心化的构架,允许任意的计算节点实时加入或离开,相比于以前的系统更可靠。同时解决了中心主节点跟从机数据交互时的网络带宽的瓶颈问题。还能使得在系统维护时,不让整个系统停机来进行维护。

以前的系统只能运行于云计算的环境里面,而本发明不仅可以运行于云计算的环境,更能运行于边缘的物联网设备上。

由于本发明的去中心化分布式数据处理系统,可以操控操作系统的线程,可以实现用更高效的语言去实现数据处理,来达到计算机性能的极致,并可以实现用特殊硬件(GPU、FPGA、人工智能芯片等)上的加速。

本方案相对于Hadoop系统提升了600倍的性能,比起Spark提升了5倍的性能。

本发明的系统可以运行于多个树霉派(rapsberry pi)芯片-Cortex-A72(ARM v8)64位1.5GHz CPU、2.4GHz/5Ghz双频wifi、802.11AC无线WIFI网络、千兆以太网有线网络、GPIO传感器接口、2GB内存以及运行于云上的虚拟节点上。实现了任意节点掉线,其他计算节点仍然可以实时组成一个网络进行计算。

显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。

以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

相关技术
  • 去中心化分布式数据处理系统
  • 一种基于区块链的分布式存储系统审计与去中心化的方法
技术分类

06120112358412