CN108427680A - 一种基于大数据快速排序算法和分布式排序处理系统 - Google Patents
一种基于大数据快速排序算法和分布式排序处理系统 Download PDFInfo
- Publication number
- CN108427680A CN108427680A CN201710077531.4A CN201710077531A CN108427680A CN 108427680 A CN108427680 A CN 108427680A CN 201710077531 A CN201710077531 A CN 201710077531A CN 108427680 A CN108427680 A CN 108427680A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- hash table
- sequence
- hash
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明提供了一种基于大数据快速排序的算法及分布式排序处理系统。排序算法采用迭代列处理方式进行快速排序,此算法最大限度降低了计算复杂度和空间复杂度,迭代列处理排序法与独特的复合型数据结构相结合,极大地提高了排序处理效率。本发明根据迭代列处理排序法的特点,提出分布式排序处理系统的实施方案,两者有机地结合在一起,使得本发明提出的迭代列处理排序法,可以拓展到针对大规模排序数据进行集群化分布式处理。
Description
技术领域
本发明涉及计算机数据排序技术领域,尤其涉及大数据快速排序、分布式处理和负载均衡系统。
背景技术
当今已进入信息大爆炸的时代,算法运行效率与资源使用率直接关系到大数据处理成本的高低,大数据处理低成本运行已经成为企业核心竞争力的重要体现。现有排序算法存在计算效率不高、内存空间利用不够充分等问题。排序算法作为大数据信息时代最基础性的技术,提高排序算法效率和充分利用存储资源是降低大数据处理成本的重要方式。
发明内容
本发明提出一套全新的快速排序算法,最大限度降低了计算复杂度和空间复杂度,达到充分利用计算机各种资源的目的,并且建立分布式排序处理系统,适应大规模数据处理的需要,制定了分布式处理节点的负载均衡策略。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例并用于解释本发明,并不构成对本发明的限制。在附图中:
图1为分布式排序处理系统流程图;
图2为排序算法处理流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,以便于理解本发明的原理及实施方式,此处所描述的优选实施例仅用于说明和理解本发明,并不用于限定本发明。
本发明提及的分布式排序处理系统所需硬件包括一台“主管理节点”计算机和n(n≥1)台“计算节点”计算机,节点之间相互联通的网络环境。“主管理节点”计算机负责任务分配、计算节点负载均衡阀值、监视“计算节点”任务完成情况,以及“计算节点”可用性和性能检测。“计算节点”负责接收并执行“主管理节点”计算机分配的排序任务、向“主管理节点”计算机发送任务完成和完成任务所用时间报告。
本发明提及的“本机待处理文件”是指排序数据文本目标文件。
本发明提及的“数据元素”为文本目标文件的行数据,也就是排序处理的目标个体数据。
本发明为了更准确地说明分布式排序处理系统工作流程,以及事件处理规则,制作了具体的系统工作流程图,见附图1“分布式排序处理系统流程图”。
步骤1:“主管理节点”计算机向所有“计算节点”计算机发送读取“本机待处理文件”到内存中的指令。
步骤2:“计算节点”计算机接收到“主管理节点”计算机发出的读取“本机待处理文件”指令后,按行读取数据文件。
步骤3:“计算节点”计算机按行方式读取“数据元素”,并截取“数据元素”第一个字符,假定此字符为“c”。以字符“c”为关键字、以“计数D”(以“1”为初始值)为键值插入到“散列表A”中;以字符“c”为关键字、以“数据元素”字符串单链表为键值插入到“散列表B”中。插入规则:如果此字符在“散列表A”中不存在,向“散列表A”和“散列表B”分别执行相应插入操作;如果此字符“c”已存在“散列表A”中,则对以字符“c”为关键字的“散列表A”键值执行累加“1”操作,向以字符“c”为关键字的“散列表B”字符串单链表键值中追加“数据元素”项。
步骤4:重复执行“步骤3”操作,直到“本机待处理文件”读取完成,并向“主管理节点”计算机发送完成分割文件报告。
步骤5:“计算节点”计算机读取“本机待处理文件”同时,将“步骤3”中“散列表A”发生变化的数据发送给“主管理节点”计算机。
步骤6:“主管理节点”计算机定时汇总各“计算节点”计算机发送“散列表A”数据分布情况,生成或更新汇总表“散列表F”,计算“散列表F”中“计数D”总和,计算节点负载均衡阀值,计算公式:
根据“散列表F”动态向各“计算节点”计算机发送“合并数据任务指令表L”。“合并数据任务指令表L”中包含三项内容:“散列表F”关键字、计数D、负责排序处理的“计算节点”IP或主机名。负载均衡策略:每个“计算节点”计算机分配“散列表F”多个数据项的“计数D”总和不得超过“节点负载均衡阀值”。如果剩余未分配数据量低于“节点负载均衡阀值”50%,剩余未分配数据由“主管理节点”计算机进行排序处理,超过部分由处理速度较快的“计算节点”计算机分担。
步骤7:“计算节点”计算机接收到“合并数据任务指令表L”后,将“散列表B”相应数据项内容发送给指定的节点计算机,发送完成的“散列表B”数据项即刻删除,仅保留本机需要处理的“散列表B”数据项,并向相应节点计算机发送传输完成报告。
步骤8:“计算节点”计算机接收到其他“计算节点”计算机发送来的数据,传输完成报告后,在“合并数据任务指令表L”中作出相应标记,确保数据完整性。
步骤9:“计算节点”计算机成功通过数据项完整性检查后,可以直接进入数据排序处理,无需等待“主管理节点”计算机指令,仅向“主管理节点”计算机报告排序处理进度即可。
步骤10:“主管理节点”计算机接收到所有“计算节点”计算机分割文件完成信号后,重新生成汇总表“散列表F”,并对“散列表F”进行快速排序处理,生成“散列表FileID”,在“合并数据任务指令表L”相应数据项上追加“文件排序ID号”,并发送给所有“计算节点”计算机。
步骤11:进入排序处理阶段,具体排序处理流程见附图2“排序算法处理流程图”。
步骤12:定义复合数据类型“MyStruct”,定义如下:
复合数据类型MyStruct{
字符型单链表:Index;
散列表<字符型,整数型>:HashIndex;
散列表<整数型,字符串指针型单链表>:Hash;
}。
步骤13:声明以整数类型“排序顺序码SortID”(初始值为“0”)为关键字,以复合数据类型“MyStruct”为键值的“散列表HashSource”,把“散列表B”键值数据经过转换后保存至“散列表HashSource”。转换方法如下:
(1)向复合数据类型“MyStruct”变量Index字符型单链表中追加字符“0”数据项;
(2)向复合数据类型“MyStruct”变量HashIndex散列表中插入以字符“0”为关键字,以整数“0”为值的数据项;
(3)向复合数据类型“MyStruct”变量hash散列表中插入以整数“0”为关键,以“散列表B”字符串指针型单链表为键值的数据项。
步骤13:排序算法采用迭代列排序模式。
迭代列排序模式规则如下:按照排序数据顺序读取每个“数据元素”第n(n≥1)列字符,将收集到的所有排序数据“数据元素”第n列字符提取出唯一化字符列表保存到“字符型单链表Index”中,并对“字符型单链表Index”进行快速排序,得到有序的“字符型单链表Index”,按照有序的“字符型单链表Index”对排序数据进行分类处理,以散列表数据结构形式存放,散列表关键字为“排序顺序码SortID”,插入新键值“排序顺序码SortID”自动累加一,散列表键值类型为自定义的复合数据结构“MyStruct”。
步骤14:以实施例说明存放数据的方法,排序实施例如下表:
排序数据元素 | 列1 | 列2 | 列3 | 列4 | 列5 |
M40 | M | 4 | 0 | ||
S9XH6 | S | 0 | X | H | 6 |
F1AR | F | 1 | A | R | |
M40A | M | 4 | 0 | A | |
S70DS | S | 7 | 0 | D | S |
F15S | F | 1 | 5 | S |
表一排序数据实例表
排序实施例转换成散列表,“散列表HashSource”初始内容如下:
HashSource[SortID=0]=
{
Index:{’0’};
HashIndex:{(’0’,0)};
Hash:{(0,{″M40″,″S9XH6″,″F1AR″,″M40A″,″S70DS″,″F15S″})}
}
Index存放排序数据某一列出现的所有字符单链表,数据转换时初始化值为’0’;Hash存放待处理的排序数据的散列表,以整数为关键字,以字符串单链表为键值,排序数据存放在字符串单链表中;HashIndex是以字符为关键字,以整数为键值的散列表,作用是建立Index与Hash之间的对应关系,HashIndex的关键字是Index单链表中的字符,键值为与之对应Hash散列表关键字。
步骤15:对排序数据的第一列进行排序后,“散列表HashSource”中的内容如下:
HashSource[SortID=0]=
{
Index:{’F’,’M’,’S’};
HashIndex:{(’M’,0),(’S’,1),(’F’,2)};
Hash:{(0,{″M40″,″M40A″}),(1,{″S9XH6″,″S70DS″}),(2,{″F1AR″,″F15S″})};
}
以上内容是针对“步骤14”“散列表HashSource”的Hash进行第一列排序处理的中间结果。把第一列字符相同的排序数据放在Hash的一个键值中;提取出第一列出现字符唯一化列表,进行排序后保存到Index单链表中;建立Index单链表值与Hash关键字的对应关系,并保存到HashIndex散列表中。
步骤16:对排序数据的第二列进行排序后,“散列表HashSource”中的内容如下:
HashSource[SortID=0]=
{
Index:{’1’};
HashIndex:{(’1’,0)};
Hash:{(0,{″F1AR″,″F15S″})}
}
HashSource[SortID=1]=
{
Index:{’4’};
HashIndex:{(’4’,0)};
Hash:{(0,{″M40″,″M40A″})}
}
HashSource[SortID=2]=
{
Index:{’7’,“9’};
HashIndex:{(’9’,0),(’7’,1)};
Hash:{(0,{″S9XH6″}),(1,{″S70DS″})}
}
按照“步骤15”HashSource[SortID=0]的Index字符单链表的顺序,分解Hash散列表,并对Hash散列表每个键值进行迭代列排序算法处理。
步骤17:对第三列进行排序后,“散列表HashSource”中的内容如下:
HashSource[SortID=0]=
{
Index:{’5’,’A’};
HashIndex:{(’A’,0),(’5’,1)};
Hash:{(0,{″F1AR″}),(1,{″F15S″})}
}
HashSource[SortID=1]=
{
Index:{’0’};
HashIndex:{(’0’,0)};
Hash:{(0,{″M40″,″M40A″})}
}
HashSource[SortID=2]=
{
Index:{’0’};
HashIndex:{(’0’,0)};
Hash:{(0,{″S70DS″})}
}
HashSource[SortID=3]=
{
Index:{‘0’};
HashIndex:{(’0’,0)};
Hash:{(0,{″S9XH6″})}
}
“步骤16”中“HashSource[SortID=2]”的Hash散列表字符串单链表键值呈现单一值,说明“HashSource[SortID=2]”已完成排序,处理方法是在“散列表HashSource”当前位置分别按照“HashSource[SortID=2]”Index字符顺序插入两个新值。
步骤18:对第四列进行排序后,“散列表HashSource”中的内容如下:
HashSource[SortID=0]=
{
Index:{’0’};
HashIndex:{(’0’,0)};
Hash:{(0,{″F15S″})}
}
HashSource[SortID=1]=
{
Index:{’0’};
HashIndex:{(’0’,0)};
Hash:{(0,{″F1AR″})}
}
HashSource[SortID=2]=
{
Index:{’0’};
HashIndex:{(’0’,0)};
Hash:{(0,{″M40″})}
}
HashSource[SortID=3]=
{
Index:{’0’};
HashIndex:{(’0’,0)};
Hash:{(0,{″M40A″})}
}
HashSource[SortID=4]=
{
Index:{’0’};
HashIndex:{(’0’,0)};
Hash:{(0,{″S70DS″})}
}
HashSource[SortID=5]=
{
Index:{‘0’};
HashIndex:{(’0’,0)};
Hash:{(0,{″S9XH6″})}
}
“步骤17”中“HashSource[SortID=0]”的Hash散列表字符串单链表键值呈现单一值,说明“HashSource[SortID=0]”已完成排序,处理方法是在“散列表HashSource”当前位置分别按照“HashSource[SortID=0]”Index字符顺序插入两个新值。
“步骤17”中“HashSource[SortID=1]”的Hash散列表键值字符串单链表的字符串出现列数不足情况,处理方法是在“散列表HashSource”当前位置插入一个新值。
步骤18:排序完成后,把排序结果以“sort”+“合并数据任务指令表L”对应的“文件排序ID”为文件名保存至磁盘。
步骤19:“主管理节点”按照“合并数据任务指令表L”中“文件排序ID”的顺序读取保存在相应节点上排序数据结果文件,完成全部数据的排序处理任务。
最后应说明的是:以上仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述实例外所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.分布式排序处理系统具有独特的任务处理机制、任务分配方法和“计算节点”负载均衡规则,最大限度地减轻了网络传输压力,具体步骤分为:
步骤A:“主管理节点”向所有“计算节点”发出分割本地待排序数据的指令;
步骤B:“计算节点”按“数据元素”首字符分割排序数据;
步骤C:“计算节点”实时向“主管理节点”发送首字符唯一化列表及相应排序数据量的增量信息;
步骤D:“主管理节点”接收各节点首字符唯一化列表及相应排序数据量增量信息,并且进行汇总,计算“节点负载均衡阀值”,生成“计算节点”任务分配表,向所有“计算节点”发送数据传输指令;
步骤E:各“计算节点”接收“主管理节点”发出的数据传输指令后,根据“计算节点”任务分配表向指定节点传输相应的数据;
步骤F:“计算节点”对本节点需要处理的数据进行完整性检查;
步骤G:“计算节点”分割排序数据完成后,向“主管理节点”发送完成分割数据报告,并进入排序处理阶段;
步骤H:“主管理节点”等待所有“计算节点”完成分割数据任务后,重新汇总分割字符列表,进行快速排序,生成“排序文件顺序码”,发送给所有“计算节点”;
步骤I:“计算节点”针对任务分配表中本节点负责的每个分割后数据块进行排序处理,排序处理完成后,以“sort”加上“排序文件顺序码”的文件命名方式,把完成排序的数据块保存到磁盘上,并向“主管理节点”发送数据块排序处理完成报告;
步骤J:“主管理节点”按照“排序文件顺序码”顺序读取保存在相应节点上排序数据结果文件,完成全部数据的排序处理任务。
2.一种快速排序算法,其特征在于:采用迭代列处理方法进行快速排序,与独特的复合型数据结构相结合,极大地提高了排序处理效率,具体步骤分为:
步骤A:定义复合数据结构类型“MyStruct”;
步骤B:将排序数据转换成以整数类型“排序顺序码SortID”(初始值为“0”)为关键字,以复合数据类型“MyStruct”为键值的“散列表HashSource”;
步骤C:执行迭代列排序模式的排序算法;
步骤D:“散列表HashSource”键值——复合数据类型“MyStruct”中Hash散列表键值——字符串单链表呈现单一值,向“散列表HashSource”插入以“排序顺序码SortID”累加一为值,以Hash散列表键值——字符串单链表为键值的新数据项;
步骤E:“散列表HashSource”键值——复合数据类型“MyStruct”中Hash散列表键值——字符串单链表有字符串列数不足情况,向“散列表HashSource”插入以“排序顺序码SortID”累加一为值,以此字符串单链表为键值的新数据项;
步骤F:“散列表HashSource”键值——复合数据类型“MyStruct”中Hash散列表键值——字符串单链表全部呈现单一值,迭代列排序模式排序算法完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710077531.4A CN108427680A (zh) | 2017-02-14 | 2017-02-14 | 一种基于大数据快速排序算法和分布式排序处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710077531.4A CN108427680A (zh) | 2017-02-14 | 2017-02-14 | 一种基于大数据快速排序算法和分布式排序处理系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108427680A true CN108427680A (zh) | 2018-08-21 |
Family
ID=63155229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710077531.4A Pending CN108427680A (zh) | 2017-02-14 | 2017-02-14 | 一种基于大数据快速排序算法和分布式排序处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108427680A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540985A (zh) * | 2020-12-07 | 2021-03-23 | 江苏赛融科技股份有限公司 | 基于分布式计算框架的全局排序输出系统及其方法 |
-
2017
- 2017-02-14 CN CN201710077531.4A patent/CN108427680A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540985A (zh) * | 2020-12-07 | 2021-03-23 | 江苏赛融科技股份有限公司 | 基于分布式计算框架的全局排序输出系统及其方法 |
CN112540985B (zh) * | 2020-12-07 | 2023-09-26 | 江苏赛融科技股份有限公司 | 基于分布式计算框架的全局排序输出系统及其方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104111936B (zh) | 数据查询方法和系统 | |
US20210042102A1 (en) | Method of distributed graph loading for minimal communication and good balance via lazy materialization and directory indirection using indexed tabular representation | |
JP5598279B2 (ja) | 分散メモリデータベースシステム、フロントデータベースサーバ、データ処理方法およびプログラム | |
US9766808B1 (en) | Expanding variable sub-column widths as needed to store data in memory | |
CN105446979A (zh) | 数据挖掘方法和节点 | |
CN110348771B (zh) | 一种对订单进行组单的方法和装置 | |
CN102314336B (zh) | 一种数据处理方法和系统 | |
CN101739398A (zh) | 分布式数据库多连接查询优化算法 | |
CN107180031B (zh) | 分布式存储方法及装置、数据处理方法及装置 | |
CN116955361A (zh) | 存储器内密钥范围搜索方法和系统 | |
CN107070645A (zh) | 比较数据表的数据的方法和系统 | |
CN107644081A (zh) | 数据去重方法及装置 | |
Al-kahtani et al. | An efficient distributed algorithm for big data processing | |
Elsayed et al. | Ontology based document clustering using Mapreduce | |
CN108427680A (zh) | 一种基于大数据快速排序算法和分布式排序处理系统 | |
EP1524599B1 (en) | A method of reassigning objects to processing units | |
Xu et al. | Efficient similarity join based on Earth mover’s Distance using Mapreduce | |
CN101650732B (zh) | 一种对象管理系统中的对象分组方法及装置 | |
Yue et al. | Parallel k-medoids++ spatial clustering algorithm based on mapreduce | |
CN110221778A (zh) | 酒店数据的处理方法、系统、存储介质以及电子设备 | |
CN108256083A (zh) | 基于深度学习的内容推荐方法 | |
Sofianopoulou | The process allocation problem: a survey of the application of graph-theoretic and integer programming approaches | |
CN108256086A (zh) | 数据特征统计分析方法 | |
CN112527776A (zh) | 数据稽核方法、装置及存储介质 | |
Li et al. | Research on the feature selection techniques used in text classification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
DD01 | Delivery of document by public notice |
Addressee: Zhang Xiangli Document name: Notification of Passing Examination on Formalities |
|
DD01 | Delivery of document by public notice | ||
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180821 |
|
WD01 | Invention patent application deemed withdrawn after publication |