用于海量数据管理的数据处理方法和系统 技术领域 本发明针对海量数据管理过程中加载与检索效率低下的问题, 提出并发加载和多 层次并发检索的方法和线性扩容的系统, 尤其涉及一种线性扩容的分布式并发加载、 检索 方法和系统。
背景技术
据市场调查公司 IDC 统计, 到 2011 年全球数据量预计达到 35.2ZB(1ZB = 1021B)。 典型的应用包括 : 海量日志的分析、 挖掘 ; 网络报文的实时存储与分析 ; Web2.0 下的在线游 戏、 SNS 网络等。传统关系型数据库由于一致性的约束, 在数据量达到 TB 量级时, 加载效 率和检索效率会明显下降 ; 典型的分布式 No-SQL 数据库, 如 Yahoo !的 PNUTS, Amazon 的 Dynamo, Facebook 的 Cassandra 以及 Hbase, Hypertable 等由于没有为数据源建立索引的 机制, 仅支持字符串数据类型, 导致系统仅提供基于关键字或者时间戳的数据管理, 无法执 行复杂的统计、 分析操作。 目前海量数据管理中大部分的应用可以通过二维表结构数据管理模型实现数据 的管理与分析操作 ; 同时对于数据加载过程中多条记录之间的一致性需求较弱。基于上述 分析, 本发明设计并实现具有海量数据管理功能的数据处理方法和系统, 通过分布式的数 据处理方法和系统为用户提供二维表空间的数据管理模型 ( 行为记录, 列为属性 ), 每条记 录内部支持多种属性数据检索, 多条记录之间可以联合执行复杂的统计、 分析操作。 通过元 数据管理装置, 集中管理海量数据的元数据和分布存储的数据块与数据存储装置的映射关 系, 支持数据的并发加载与数据管理装置的线性扩容。
发明内容 为解决上述技术问题, 本发明提出一种用于海量数据管理的数据处理方法和系 统, 提高了海量数据的处理效率, 降低了针对海量数据处理的复杂性, 从而实现提高海量数 据检索与挖掘的效率。
本发明公开了一种用于海量数据管理的数据处理方法, 其特征在于, 包括 :
A, 设置多个数据加载装置的步骤, 通过二维表结构管理不同类型的字段创建不同 类型的索引, 并以并发方式向通过网络连接的至少一个数据存储服务器加载索引数据源, 实现数据加载与维护操作 ;
B, 设置元数据管理装置的步骤, 用于记录由所述数据加载装置生成的索引分片的 分布信息, 记录并更新所述数据存储服务器的状态信息, 以及记录所述索引分片与所述数 据存储服务器的对应关系 ;
C, 在所述数据存储服务器上设置数据管理服务装置的步骤, 用于存储、 管理所述 索引分片, 并根据检索命令并发检索索引分片, 并向所述元数据管理装置报告工作状态。
还包括 : 设置多个数据检索装置的步骤, 用于实现多机协同、 多层次、 不同粒度的 数据并发检索。
还包括 : 所述索引分片由所述数据加载装置独立生成, 构成进行调度、 负载均衡和 并发检索的基本单元。
还包括 : 所述索引分片之间根据时间顺序排序 ; 所述索引分片内部根据字典序排 序。
所述数据检索装置至少设置二层次数据过滤机制, 和 / 或二个层次数据汇总机 制。
所述二个层次数据过滤机制, 包括 : 第一级过滤机制是根据检索命令, 通过所述元 数据管理装置过滤特定的数据存储服务器列表, 并发地向过滤后的检索服务器发送检索命 令; 第二级过滤机制是所述数据存储服务器根据检索命令, 过滤本地索引分片, 符合条件的 索引分片并发的执行检索操作。
所述二个层次数据汇总机制, 包括 : 所述数据存储服务器汇总多个索引分片的并 发检索后结果 ; 所述数据检索装置汇总多个所述数据存储服务器返回的初次汇总结果。
本发明还公开了一种用于海量数据管理的数据处理系统, 包括 : 多个数据加载装 置通过二维表结构, 为不同类型的字段创建不同类型的索引, 并通过网络连接的至少一个 数据存储服务器加载索引数据源, 实现数据加载与维护操作 ; 元数据管理装置, 用于记录由 所述数据加载装置生成的索引分片的分布信息, 记录并更新所述数据存储服务器的状态信 息, 以及记录所述索引分片与所述数据存储服务器的对应关系 ; 数据存储服务器, 还包括数 据管理服务装置, 用于存储、 管理所述索引分片, 并根据检索命令并发检索索引分片, 并向 所述元数据管理装置报告工作状态。
还包括 : 多个数据检索装置, 用于实现多机协同、 多层次、 不同粒度的数据并发检 索。当有新的数据存储服务器加入时, 所述数据管理服务装置向所述元数据管理装置报告 状态变更信息, 所述元数据管理装置把新的数据存储服务器加入到可用服务器列表中, 并 开始接下来的存储调度和定期心跳机制检查中。
本发明的技术特征, 首先, 基于表结构 (schema) 的并发索引创建、 加载机制。数据 加载装置利用表结构 (schema) 为不同类型的字段, 创建不同类型的索引。多个数据加载装 置可以并发的向存储系统加载索引数据源 ; 该技术在以记录为原子操作的应用场合, 可以 在线的为数据源创建索引, 在系统计算资源允许的条件下, 系统的加载效率可以随数据加 载装置的数目呈线性关系增长。其次, 索引分片的分割策略和分布存储技术。一定数量的 索引构成一个索引分片。 每个索引分片是由数据加载装置独立生成的, 是调度、 负载均衡和 并发检索的基本单位。索引分片根据一定的规则进行有序存储, 默认索引分片之间根据时 间顺序排序 ; 索引分片内部根据字典序排序。通过元数据管理装置记录分片的分布信息。 该技术可以有效管理大规模存储中索引并发加载、 检索乃至负载均衡的粒度, 并且根据检 索条件, 采用具体的优化策略, 提高索引整体检索效率。 最后, 多层次、 不同粒度的索引并发 检索、 过滤以及汇总机制。 检索过程主要包括两个层次的过滤机制, 两个层次的数据汇总机 制。第一级过滤机制是根据检索命令, 通过元数据管理装置过滤特定的数据存储服务器列 表, 并发的向过滤后的检索服务器发送检索命令 ; 第二级过滤机制是数据存储服务器根据 检索命令, 过滤本地索引分片, 符合条件的索引分片并发的执行检索操作。 两级汇总机制包 括: 数据存储服务器汇总多个索引分片的并发检索后结果 ; 数据检索装置汇总多个数据存 储服务器返回的初次汇总结果。 该技术的效果是利用多机协同, 实现多层次, 不同粒度的数据并发检索框架, 提高大规模存储条件下索引的检索效率。
本发明的基本出发点是通过降低关系模型中多记录之间的强一致性的约束, 实现 以单条记录为原子操作, 面向用户提供二维表数据模型。同时本发明利用 SQL-Like 语言描 述数据检索规则。系统通过增加数据加载装置可以达到近线性的提高系统加载效率 ; 通过 增加存储管理服务器的数量, 可以近线性的提高检索效率。本发明提出的方法和系统适用 于海量日志存储分析与挖掘、 网络报文落地存储与统计等要求较高的加载效率和复杂的统 计检索功能的场合。 附图说明
图 1 为数据并发检索存储系统示意图 ; 图 2 为数据加载装置工作流程图 ; 图 3 为数据检索装置工作流程图 ; 图 4 为元数据管理装置功能描述 ; 图 5 为数据管理装置工作流程图。具体实施方式 下面结合附图, 详细说明本发明的具体实施方式。图 1 给出整体的数据部署结 构图, 本发明揭示了一种用于海量数据管理的数据处理方法以及采用该方法的系统。该 系统包括 : 多个数据加载装置 10, 多个数据检索装置 20, 元数据管理装置 30, 多个数据存 储服务器 40, 该数据存储服务器 40 又包括数据管理装置 41 以及存储介质装置 42。数据 加载装置 10, 数据检索装置 20, 元数据管理装置 30, 以及数据存储服务器 40 之间通过 Gb Ethernet(Gb 以太网 ) 连接。
该数据加载装置 10 接收加载数据源, 并构建二维表结构。二维表结构支持的数据 类型包括 : INDEX( 创建全文索引 ), INTEGER( 整数 ), TIMESTAMP( 时间戳 ), IPFIELD(IP 类 型 ), STORE( 不创建索引, 直接存储数据源 )。 该数据加载装置 10 为不同类型的字段建立索 引。 多个数据加载装置 10 可以同时加载数据源, 提高数据加载效率。 数据通过 Gb Ethernet 传输到具体的数据存储服务器 40, 并保存到存储介质装置 42。该数据的检索装置 20, 接收 用户检索命令, 通过该元数据管理装置 30 获得满足检索条件的数据存储服务器 40, 并向该 数据存储服务器 40 发出检索命令。该数据存储服务器 40 通过数据管理装置 41 检索本地 的索引分片并返回检索结果, 该数据检索装置 42 接收返回的检索结果并返回给用户。
本发明的数据源加载流程如图 2 所示。该数据加载装置 10 主要的功能是接收操 作命令, 实现表空间管理, 数据加载操作, 数据删除操作等。该数据加载装置 10 以记录为单 位进行原子操作, 多个数据加载装置 10 之间可以并行向系统加载数据。数据加载装置 10 进一步的工作步骤 :
步骤 S101 : 初始化数据加载装置, 开辟内存空间, 数据加载装置通常以进程为单 位进行并发加载 ;
步骤 S102 : 开辟缓存空间, 接收加载数据命令和对应的数据源 ;
步骤 S103 : 通过分词, 解析加载数据的命令信息, 提取输入信息的关键字, 并进行 SQL 语法分析, 进行语法检查, 如果语法正确执行步骤 S1041 ;
步骤 S104 : 解析操作命令 ;
步骤 S1041 : 如果是创建表空间命令, 类型如下 : CREATE TABLE tablename( 字段 名字段类型, … ), 根据输入的表名, 字段名, 字段类型等信息, 创建二维表结构, 并记录表空 间的结构 (schema) 文件 ;
步骤 S1042 : 把表结构文件写入到元数据管理装置 ; 如果执行成功, 返回步骤 S102 ;
步骤 S1051 : 如果是数据加载命令 ( 图中表述为插入数据, 请修改。), 类型如下 : INSERT INTO tablename VALUES( 字段值类表 ), 从元数据管理装置读取对应的 schema, 并 根据 schema 文件对输入的字段值进行检查, 检查通过后根据每个字段类型进行数据转换, 针对文本数据需要进行分词工作 ;
步骤 S1052 : 根据每个字段的类型建立对应的索引。目前系统分为五类数据类型 : STORE 类型字段不建立索引直接存储数据 ; INDEX 类型字段保存文本信息 ; INTEGER 保存整 数类型, TIMESTAMP 保存统计信息, IPFIELD 字段类型主要存储 IP 数据 ;
步骤 S1053 : 根据不同字段类型创建索引首先在本地进行缓存 ;
步骤 S1054 : 判断本地缓存索引是否达到阈值, 缓存阈值是 5 分钟或者是 100 万记 录; 如果达到阈值转到步骤 S1055, 否则执行步骤 S102 ; 步骤 S1055 : 判断是否为新的索引分片, 索引分片阈值通过配置文件进行说明, 默 认把缓存阈值作为索引分片阈值。对于新生成的索引分片进行负载均衡 ; 如果是新生成的 索引分片执行步骤 S1056, 否则执行步骤 S1057 ;
步骤 S1056 : 连接元数据管理装置, 根据调度规则, 获得当前可用的数据存储服务 器地址, 并在本地缓存 ;
步骤 S1057 : 向数据存储服务器传输由索引分片构成的数据 ;
步骤 S1058 : 更新元数据管理装置, 如果执行成功返回步骤 S102 ;
步骤 S1061 : 系统提供基于时间戳区间的旧数据删除机制 ; 如果是删除数据的命 令, 获取删除命令中删除数据的时间戳区间 ;
步骤 S1062 : 连接元数据管理装置, 检索索引分片对应数据存储服务器列表 ;
步骤 S1063 : 从元数据管理装置获得存储索引分片对应的数据存储服务器列表 ;
步骤 S1064 : 向保存时间戳区间内的索引分片数据存储服务器发送索引删除数据 命令 ; 如果执行成功返回步骤 S102 ;
步骤 S1071 : 如果是删除表空间的命令, 型如 : DROP tablename, 向元数据管理装 置发起连接, 检索索引分片对应的数据存储服务器列表 ;
步骤 S1072 : 根据存储索引的数据存储服务器列表, 发送删除表空间命令 ; 如果执 行成功返回步骤 S102 ;
步骤 S1081 : 如果是退出数据加载装置的命令, 则关闭表空间, 清空资源 ;
步骤 S1082 : 结束流程。
该数据检索装置 20, 主要面向用户执行具体的数据检索操作。数据的检索操作使 用 SQL-Like 语言描述检索规则。本发明根据海量流数据、 日志数据主要的检索特点, 设计 并实现了一种支持精确、 模糊检索、 多属性检索, 具备统计分析功能的聚和函数 (SUM, AVG, COUNT, MAX, MIN), 分组排序 (ORDER BY, GROUP BY) 等描述数据操作的数据检索方法, 具体
的检索流程如图 3 所示。
步骤 S201 : 接收 SQL-Like 语言描述的数据检索命令 ;
步骤 S202 : 通过分词, 语法分析等操作, 解析输入的 SQL-Like 检索命令, 并生成检 索语法树 ;
步骤 S203 : 连接元数据管理装置, 根据检索的语法树过滤数据存储服务器, 获得 索引分片所在的数据存储服务器地址列表 ;
步骤 S204 : 根据数据存储服务器地址列表, 并发的向目标数据存储服务器发送检 索命令 ;
步骤 S205 : 开辟缓存, 接收数据存储服务器发回的检索结果 ;
步骤 S206 : 对步骤 S205 发回的检索结果, 根据检索命令进行汇总, 二次排序等操 作, 如果检索命令中有 ORDER BY, GROUP BY 等关键字时, 需要对不同数据存储服务器发回的 结果集进行二次排序或分组处理 ; 有 TOP 或 LIMIT 关键字时, 需要进行结果的截断处理 ;
步骤 S207 : 根据检索结果的大小以及检索命令的类型进行判断, 如果结果过大, 返回结果的前 100 万条记录, 并提示用户结果不完全, 是否继续检索 ; 如果继续检索则转到 步骤 S204, 如果结束本次操作则执行步骤 S208 ; 步骤 S208 : 判断是否退出检索操作, 如果退出则释放资源, 否则执行步骤 S201。
该元数据管理装置 30 主要的功能是 : 记录索引分片和数据存储服务器的对应关 系, 记录数据存储服务器的状态信息, 定期检测本地数据存储服务器状态。 在有新数据写入 时 S301, 根据当前的服务器状态进行负载均衡, 并记录或更新表空间的 schema 文件以及对 应表空间元数据信息 ; 当数据检索装置进行数据检索时 S302, 元数据管理装置提供索引分 片和数据存储服务器的对应关系, 并把目标数据存储服务器列表发送给数据检索装置 ; 元 数据管理装置定期利用心跳机制监测集群内部的数据存储服务器是否可以连接, 并根据心 跳机制返回信息更新服务器状态 S303。
该元数据管理装置具有的其他功能包括进行组员管理, 副本管理。当有新的数据 存储服务器加入时, 向元数据管理装置报告本地的状态信息, 元数据管理装置把新的数据 存储服务器加入到可用数据存储服务器列表中, 并开始接下来的存储调度和定期心跳机制 检查中。根据索引分片和数据存储服务器的对应关系, 元数据管理装置可以把同一份索引 分片导向两个不同的数据存储服务器, 起到副本容错的功能。该元数据管理装置的基本工 作流程如图 4 所示。
数据管理装置 41 通常部署在数据存储服务器 40 上, 主要提供三种功能 : 存储、 管 理索引分片 ; 根据检索命令并发检索索引分片 ; 定期向元数据管理装置报告系统的状态。 具体工作流程如图 5 所示。
步骤 S401 : 数据管理装置启动监听服务, 接收并判断操作命令 ;
步骤 S4021 : 如果是元数据管理装置的心跳机制信息, 则收集本地的状态信息, 主 要是本地的磁盘剩余空间等参数 ;
步骤 S4022 : 向元数据管理装置发送心跳机制状态信息 ;
步骤 S4031 : 如果是数据写入操作, 在本地开辟缓存, 接收数据加载装置传来的索 引或数据 ;
步骤 S4032 : 在存储本地索引分片, 并根据具体规则组织本地的索引分片 ;
步骤 S4033 : 判断索引分片是否大于、 等于本地索引分片的阈值, 如果大于执行步 骤 S4034, 否则执行步骤 S4035 ;
步骤 S4034 : 生成不同的索引分片 ;
步骤 S4035 : 更新本地索引分片对应的元数据信息 ;
步骤 S4036 : 如果本地索引分片写入成功, 向元数据管理装置发送更新的索引分 片元数据信息 ;
步骤 S4041 : 如果是接收数据检索命令, 首先根据数据检索命令判断是否是新建 立的检索会话, 如果是则执行步骤 S4043, 否则执行 S4042 ;
步骤 S4042 : 当检索的结果过大时, 只返回部分的结果 ( 前 100 万记录 ), 本次需要 继续上次的检索操作, 首先从内存的获得上次检索后剩余的缓存的结果 ;
步骤 S4043 : 根据检索条件过滤本地的索引分片, 选择符合检索条件的索引分片 ;
步骤 S4044 : 根据检索条件, 并发检索目标索引分片, 并对结果集进行汇总 ;
步骤 S4045 : 判断结果集是否大于结果集的阈值, 系统默认是 100 万记录 ; 如果大 于阈值, 执行步骤 S4046, 否则执行步骤 S4047 ;
步骤 S4046 : 缓存本次检索大于阈值的结果集部分和本次检索的会话 ID 信息, 支 持后续的查找操作 ;
步骤 S4047 : 向数据检索装置发送检索结果 ;
步骤 S4051 : 如果是退出命令, 清空缓存数据, 释放资源 ;
步骤 S4052 : 退出流程。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下, 还 可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明, 而是由 权利要求书的范围来确定的。