CN104731968B - 一种单机的大规模数据集的聚类挖掘方法 - Google Patents
一种单机的大规模数据集的聚类挖掘方法 Download PDFInfo
- Publication number
- CN104731968B CN104731968B CN201510163967.6A CN201510163967A CN104731968B CN 104731968 B CN104731968 B CN 104731968B CN 201510163967 A CN201510163967 A CN 201510163967A CN 104731968 B CN104731968 B CN 104731968B
- Authority
- CN
- China
- Prior art keywords
- result
- memory
- data
- cluster
- unit
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种单机的大规模数据集的聚类挖掘方法,主要包含三个步骤:一是解决读取大规模数据集时容易发生的内存泄露问题;二是充分利用硬件优势以及“分而治之”的算法思想将大数据问题转化为容易解决的小数据问题;三是基于聚类挖掘算法构建适当的挖掘模型,依次完成小数据的聚类挖掘工作,最后将各挖掘结果进行合并得到最终结果。该发明公开的方法通过设计存储方式、扩展虚拟设备等方式有效地解决了大数据挖掘时常见的内存限制和运行效率的问题,实现了在不利用网络集群的情况下,于一台独立正常工作的物理机上完成GB规模数据集的聚类挖掘工作。
Description
技术领域
本发明涉及一种单机的大规模数据集的聚类挖掘方法,属于数据挖掘技术领域。
背景技术
近几年来,随着计算机和信息技术的迅猛发展和普及应用,行业应用系统的规模迅速扩大,行业应用所产生的数据呈爆炸性增长。动辄达到数百GB甚至数十至数百TB规模的行业/企业大数据已远远超出了现有传统的计算技术和信息系统的处理能力。
大数据给传统的计算技术带来了很多新的挑战。大数据使得很多在小数据集上有效的传统的串行化算法在面对大数据处理时难以在可接受的时间内完成计算;同时大数据含有较多噪音、样本稀疏、样本不平衡等特点使得现有的很多机器学习算法有效性降低。大数据在带来巨大技术挑战的同时,也带来巨大的技术创新与商业机遇。因此,寻求有效的大数据处理技术、方法和手段已经成为现实世界的迫切需求。
如今的大数据处理技术,大多基于网络集群来实现分布式数据挖掘,对资源与条件要求较高,且实现起来难度较高。在仅有一台物理机的情况下,若想完成大规模数据集的挖掘工作,需要一套较为成熟的方案。
发明内容
发明目的:针对现有技术中存在的问题,本发明提供一种单机的大规模数据集的聚类挖掘方法。
本发明提供的方法基于虚拟内存、分块处理的机制有效地解决了单台物理机内存严重不足的问题,基于共享内存机制、内存映射文件机制与单机多核并行处理机制成功地提高了大规模数据集的挖掘效率,并且基于R语言构建聚类的挖掘模型,完成子数据集的挖掘工作后将结果进行合并,从而实现单机上的大规模数据集的聚类挖掘工作。
技术方案:一种单机的大规模数据集的聚类挖掘方法,采用多种机制来解决单机大数据聚类挖掘所遇到的内存泄露与运行效率问题,主要包括:
A、解决内存泄漏问题:主要通过改进传统的数据存储和读取方式来完成。采用虚拟内存、分块处理的机制,即将大数据按照固定大小分块,每次读取一到两个数据块并加载至内存中,处理完成后及时释放内存与临时空间,如此分时地利用物理机内存。
B、解决运行效率问题:充分利用单机上的硬件优势与“分而治之”的思想是提高大数据挖掘的运行效率的关键。采用共享内存机制、内存映射文件机制与单机多核并行处理机制,通过共享内存实现多个进程共享一块内存区域,以方便实现并行算法;通过内存映射文件使得处理磁盘上的文件不必执行I/O操作,节省运行时间;单机多核机制则将不同数据块的挖掘任务分配到处理器不同的核上并行处理。
C、聚类挖掘方面:基于R语言构建聚类挖掘模型,首先自行定制模型参数,完成所有子任务的聚类挖掘工作后将子任务的挖掘结果进行合并,即把得到的每簇的中心点重新组织作为挖掘模型的输入,如此迭代下去,直至结果满足预设的聚类簇数。
本发明采用上述技术方案,具有以下有益效果:本发明提供的单机的大规模数据集的聚类挖掘方法,基于共享内存机制、内存映射文件机制与单机多核并行处理机制等有效地解决了单机上大数据聚类挖掘时存在的内存泄露与运行效率问题,充分利用了单台物理机有限的内存空间与处理器资源,在不依赖网络集群或搭建网络集群条件受限的情况下,为大规模数据集的聚类挖掘工作提供了一套可用的单机解决方案。
附图说明
图1为本发明实施例的设计流程图;
图2为本发明实施例的实现步骤示意图;
图3为本发明实施例中虚拟内存、分块处理机制的设计原理图;
图4为本发明实施例中单机多核处理的分解过程;
图5为本发明实施例中单机多核处理的汇总过程。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
本发明所提供的方法将单机上大规模数据集的聚类挖掘大致分为三大步,如图1所示,首先构建聚类挖掘模型,然后分别解决内存泄露问题和运行效率问题;如图2所述,本发明方法的实现步骤分别是:内存泄漏问题的解决,即基于虚拟内存、分块处理机制将大数据分块读入内存;运行效率问题的解决,即基于共享内存机制、内存文件映射机制与单机多核并行处理机制,通过减少进程切换时间、节省文件I/O操作的时间、充分利用处理器的多核进行并行计算等方法大幅提高运行效率;聚类挖掘模型的构建与挖掘结果的合并,即基于R语言构建模型,完成子任务的挖掘工作后合并得到最终结果的过程。
本发明实施例中单机的大规模数据集的聚类挖掘方法包括以下步骤:
步骤1:解决内存泄露问题。首先根据数据集的规模从物理机的硬盘上动态划分出一片存储区域作为虚拟内存,用来以二进制文件的形式来存储大数据的临时数据;然后将大数据按照10~20M的大小进行分块,存储在上述临时文件中,并为每个数据块建立映射索引。在进行处理时,每次从外存中读取一至两个数据块到内存中,然后对数据块进行修正,即用R语言中数据框的形式保存该数据块中的数据,使其可以作为步骤3中挖掘模型的输入数据。处理完成后,及时释放内存空间和虚拟内存空间。虚拟内存、分块处理的机制如图3所示。
步骤2:解决运行效率问题。首先实现共享内存机制,具体就是让多个进程共享一块物理内存,共享该内存中的数据块。如此便使得不同的进程可以通过共享内存通信,而且数据块可被多个进程共享,为后面的单机多核机制实现并行算法提供方便;然后实现内存文件映射机制,保留一个地址空间的区域,同时将物理存储器(已经存在于磁盘上的文件)提交给此区域,而且对该文件与相应内存区域建立映射,如此处理存储在磁盘上的文件时,不必再对文件执行I/O操作;接着在底层利用C语言的数据类型对步骤1中得到的数据块进行处理,将其中的数据用矩阵存储,并将矩阵分配到共享内存或内存映射文件中,然后用一个指针对象指向存储的数据块,实现文件缓存的机制,提高后续工作的效率;最终实现单机多核并行处理机制,首先根据处理器的具体情况,选择一个核作为master,其他的核作为worker。master接受到一个任务之后,会将其分解为n-1个子任务(n为处理器核数),分配给每个worker,分解过程如图4。接着每个worker基于共享内存/内存文件映射机制单独处理自己的小任务(基于步骤3的聚类挖掘模型),处理完毕后每个worker将中间结果返回给master,最终由master将结果汇总后输出,汇总过程如图5所示。
步骤3:挖掘模型的构建与挖掘结果的合并。用Java封装R语言的cluster程序包中的clara()函数,如此便构建起聚类挖掘模型,并部署在处理器的每个核上,设置好相关参数(可自行定制参数,例如聚类的簇数等)后,按照步骤2的单机多核机制完成每个数据块的聚类挖掘。所有worker上的数据块挖掘任务完成以后,将这些数据块的挖掘结果中划分的所有簇中心点重新整合,作为一个新的聚类任务进行挖掘,如此的挖掘结果便覆盖了这些数据块。按照此类方式进行迭代,直至挖掘结果覆盖最初的大规模数据集。
Claims (1)
1.一种单机的大规模数据集的聚类挖掘方法,其特征在于:提供一种可以有效地解决大数据挖掘时存在的内存泄露和运行效率问题的方案,具体包括以下步骤:
步骤1:解决在读取大规模数据集时因运行机器内存容量的限制而经常发生的内存泄露问题;主要通过改进传统的数据存储和读取方式来完成,采用虚拟内存、分块处理的机制,即将大数据分块,每次读取一到两个数据块并加载至内存中,处理完成后及时释放内存与临时空间,如此分时地利用物理机内存;
步骤2:充分利用硬件优势以及“分而治之”的算法思想将大数据问题转化为容易解决的小数据问题,从而提高大规模数据集的运行效率;采用共享内存机制、内存映射文件机制与单机多核并行处理机制,通过共享内存实现多个进程共享一块内存区域,以方便实现并行算法;通过内存映射文件使得处理磁盘上的文件不必执行I/O操作,节省运行时间;单机多核机制则将不同数据块的挖掘任务分配到处理器不同的核上并行处理;
步骤3:基于聚类挖掘算法构建的挖掘模型,依次完成步骤2中产生的数据块的聚类挖掘工作,最后将各挖掘结果进行合并得到最终结果;
在底层利用C语言的数据类型对步骤1中得到的数据块进行处理,将其中的数据用矩阵存储,并将矩阵分配到共享内存或内存映射文件中,然后用一个指针对象指向存储的数据块,实现文件缓存的机制,提高后续工作的效率;
选择一个核作为master,其他的核作为worker;master接受到一个任务之后,会将其分解为n-1个子任务,分配给每个worker,n为处理器核数;接着每个worker基于共享内存/内存文件映射机制单独处理自己的任务,处理完毕后每个worker将中间结果返回给master,最终由master将结果汇总后输出;
用Java封装R语言的cluster程序包中的clara()函数,如此便构建起聚类挖掘模型,并部署在处理器的每个核上,设置好相关参数后,按照步骤2的单机多核机制完成每个数据块的聚类挖掘;所有worker上的数据块挖掘任务完成以后,将这些数据块的挖掘结果中划分的所有簇中心点重新整合,作为一个新的聚类任务进行挖掘,如此的挖掘结果便覆盖了这些数据块;按照此类方式进行迭代,直至挖掘结果覆盖最初的大规模数据集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510163967.6A CN104731968B (zh) | 2015-04-08 | 2015-04-08 | 一种单机的大规模数据集的聚类挖掘方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510163967.6A CN104731968B (zh) | 2015-04-08 | 2015-04-08 | 一种单机的大规模数据集的聚类挖掘方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731968A CN104731968A (zh) | 2015-06-24 |
CN104731968B true CN104731968B (zh) | 2018-06-19 |
Family
ID=53455855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510163967.6A Active CN104731968B (zh) | 2015-04-08 | 2015-04-08 | 一种单机的大规模数据集的聚类挖掘方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104731968B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975574A (zh) * | 2016-05-04 | 2016-09-28 | 北京思特奇信息技术股份有限公司 | 一种基于r语言的大数据量数据筛选方法和系统 |
CN110543940B (zh) * | 2019-08-29 | 2022-09-23 | 中国人民解放军国防科技大学 | 基于层次存储的神经回路体数据处理方法、系统及介质 |
CN111212276A (zh) * | 2020-04-22 | 2020-05-29 | 杭州趣链科技有限公司 | 基于摄像头模组的监控方法及系统、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101359333A (zh) * | 2008-05-23 | 2009-02-04 | 中国科学院软件研究所 | 一种基于隐含狄利克雷分配模型的并行数据处理方法 |
CN102193830A (zh) * | 2010-03-12 | 2011-09-21 | 复旦大学 | 面向众核环境的分治映射/归约并行编程模型 |
CN103020077A (zh) * | 2011-09-24 | 2013-04-03 | 国家电网公司 | 一种电力系统实时数据库内存管理方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070101332A1 (en) * | 2005-10-28 | 2007-05-03 | International Business Machines Corporation | Method and apparatus for resource-based thread allocation in a multiprocessor computer system |
CN102193831B (zh) * | 2010-03-12 | 2014-05-21 | 复旦大学 | 一种建立层次化的映射/归约并行编程模型的方法 |
CN102385588B (zh) * | 2010-08-31 | 2014-08-06 | 国际商业机器公司 | 用于提高数据并行插入的性能的方法和系统 |
CN102231121B (zh) * | 2011-07-25 | 2013-02-27 | 北方工业大学 | 基于内存映射的大数据文件快速并行提取方法 |
-
2015
- 2015-04-08 CN CN201510163967.6A patent/CN104731968B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101359333A (zh) * | 2008-05-23 | 2009-02-04 | 中国科学院软件研究所 | 一种基于隐含狄利克雷分配模型的并行数据处理方法 |
CN102193830A (zh) * | 2010-03-12 | 2011-09-21 | 复旦大学 | 面向众核环境的分治映射/归约并行编程模型 |
CN103020077A (zh) * | 2011-09-24 | 2013-04-03 | 国家电网公司 | 一种电力系统实时数据库内存管理方法 |
Non-Patent Citations (1)
Title |
---|
"Scalable multi-core simulation using parallel dynamic binary translation";Oscar Almer 等;《Embedded Computer Systems (SAMOS), 2011 International Conference on》;20110721;第190-199页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104731968A (zh) | 2015-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3786795A1 (en) | Memory allocation method and apparatus for neural network | |
CN110704360B (zh) | 一种基于异构fpga数据流的图计算优化方法 | |
CN108132838A (zh) | 一种图数据处理的方法、装置及系统 | |
CN106383695A (zh) | 基于fpga的聚类算法的加速系统及其设计方法 | |
CN104731968B (zh) | 一种单机的大规模数据集的聚类挖掘方法 | |
KR101956197B1 (ko) | 그래픽 처리 유닛을 이용한 데이터 처리 방법 및 장치 | |
JP5778343B2 (ja) | グラフィックス処理ユニットでの命令カリング | |
US20130227244A1 (en) | Workload-aware distributed data processing apparatus and method for processing large data based on hardware acceleration | |
CN108021449A (zh) | 一种协程实现方法、终端设备及存储介质 | |
EP2657842B1 (en) | Workload optimization in a multi-processor system executing sparse-matrix vector multiplication | |
CN103593424A (zh) | 一种软硬件压缩可配置的大数据处理系统 | |
CN106462941A (zh) | Gpu中的共享寄存器的加载方案 | |
CN104935523B (zh) | 一种负载均衡的处理方法和设备 | |
EP4272127A1 (en) | Neural network accelerator writable memory reconfigurability | |
JP2014038624A (ja) | 動的データ構成のための方法及び装置 | |
US20240005446A1 (en) | Methods, systems, and non-transitory storage media for graphics memory allocation | |
CN103713953A (zh) | 一种内存数据的搬移装置及方法 | |
CN113257352A (zh) | 一种基因测序数据排序方法、集成电路及排序设备 | |
CN112988621A (zh) | 一种张量数据的数据载入装置及方法 | |
CN106708437A (zh) | VMware虚拟化存储分配方法及系统 | |
CN110502337A (zh) | 针对Hadoop MapReduce中混洗阶段的优化系统及方法 | |
US9378057B2 (en) | Paravirtualized migration counter | |
CN110209631A (zh) | 大数据处理方法及其处理系统 | |
CN105988952A (zh) | 为内存控制器分配硬件加速指令的方法和装置 | |
US20080021938A1 (en) | Technique for allocating objects in a managed run time environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190610 Address after: Room 805, Building B2, Huizhi Science Park, Hengtai Road, Nanjing Economic and Technological Development Zone, Jiangsu Province Patentee after: JIANGSU EVASTELLAR INFORMATION TECHNOLOGY Co.,Ltd. Address before: No. 8, West Road, Buddha city, Jiangning District, Nanjing, Jiangsu Patentee before: HOHAI University |