基于Elasticsearch的气象数据检索技术研究

2019-11-18 05:23张恩红尹海燕李高洁
计算机技术与发展 2019年11期
关键词:分片分词海量

张恩红,尹海燕,李高洁

(广东省气象探测数据中心,广东 广州 510641)

0 引 言

随着科技的进步和社会需求的发展,人们对气象的需求越来越丰富。为了应对众多需求,气象行业的现代化被提到很高的程度,从中央到地方都有很大的投入,无论是气象观测、数值预报、天气预报等都有很大的发展。从天上的卫星、空中的各种探空设备,地上的雷达、自动站等三维立体全方位的气象数据采集,获取了大量的观测数据;从国外到国内,众多的数值预报模式,提供了大量的数值模式产品数据;为了满足不同类型的用户需求,提供了各种各样的天气预报产品。每天产生了海量(省级气象局每天约1 T数据量,120万以上的数据文件)的气象数据,这对数据管理与应用都提出强大的挑战。

关于海量数据管理的技术有很多,其中Elasticsearch技术在众多的海量数据管理与搜索应用中应用广泛。姜康等[1]基于Elasticsearch建立了水利行业的海量数据的搜索与共享服务平台;郑义成等[2]基于Elasticsearch技术对航海中产生的海量船舶自动识别系统数据的存储方法进行了深入研究;陈亚杰等[3]基于Elasticsearch分布式搜索引擎进行了天文大数据检索中的应用研究。众多研究人员[4-5]在该技术都进行了研究及应用,可见Elasticsearch技术在海量数据的管理与搜索方面具有一定的可靠性。文中基于Elasticsearch技术,采用元数据技术和集群管理方法对海量气象数据的搜索与服务平台建设进行研究。

1 海量数据搜索机制

海量数据搜索是大数据时代的一大难题。面对海量数据,如何建立一个高效、准确地获取所需数据的平台是当前IT行业研究的热门话题。搜索技术也是百花齐放,搜索机制也各不相同[6-7]。Elasticsearch(缩写为ES)是当前的热门技术,文中主要讨论该技术的使用机制。索引构建机制的逻辑图如图1所示。

图1 ES的索引构建机制逻辑

1.1 集 群

ES集群是一个或多个节点的集合,它们共同存储了整个数据集,并提供了联合索引以及可跨所有节点的搜索能力。多节点组成的集群拥有冗余能力,可以在一个或几个节点出现故障时保证服务的整体可用性。集群靠其独有的名称进行标识,默认名称为“Elasticsearch”。节点靠其集群名称来决定加入哪个ES集群,一个节点只能属于一个集群。如果不考虑冗余能力等特性,仅有一个节点的ES集群一样可以实现所有的存储及搜索功能。

1.2 节 点

运行了单个实例的ES主机称为节点,它是集群的一个成员,可以存储数据、参与集群索引及搜索操作。类似于集群,节点靠其名称进行标识,默认为启动时自动生成的随机Marvel字符名称。用户可以按需要自定义任何希望使用的名称,但出于管理的目的,该名称应该尽可能有较好的识别性。节点通过为其配置的ES集群名称确定其所要加入的集群。

1.3 分 片

ES的“分片(shard)”机制可将一个索引内部的数据分布存储于多个节点,通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能,每一个物理的Lucene索引称为一个分片(shard)。每个分片其内部都是一个全功能且独立的索引,因此可由集群中的任何主机存储。

1.4 数据查询

查询执行过程通常要分成两个阶段,即分散阶段及合并阶段。分散阶段是向所查询的索引中的所有shard发起执行查询的过程,合并阶段是将各shard返回的结果合并、排序并响应给客户端的过程。为了完成此类full-text域的搜索,ES必须首先分析文本并将其构建成倒排索引(inverted index)。倒排索引由各文档中出现的单词列表组成,列表中的各单词不能重复且需要指向其所在的各文档。因此,为了创建倒排索引,需要先将各文档中域的值切分为独立的单词(也称为term或token),而后将其创建为一个无重复的有序单词列表。这个过程称之为“分词(tokenization)”。

2 搜索技术的应用设计

针对海量数据存储与服务,各行业的专家都有自己的方法与技术[8-10],气象行业也不例外。气象数据种类繁多,存储结构复杂,很难采用传统结构化的数据库模式存储数据,因此,不能直接对数据进行格式化管理。借鉴其他行业的经验[11-13],文中采用元数据技术对气象数据进行管理,即基于ES的NoSQL的数据存储方式。采用web数据访问方式为用户提供服务得到较多行业的支持[14-16],故文中采用web网页提供给用户使用。

2.1 元数据

元数据(metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。为了便于管理,采用了统一的元数据模板,针对不同类型的数据,通过不同的关键字进行区别。元数据模板是一个开放式管理机制,可以根据业务的扩展,动态增加元数据类型。文中将气象数据按大类和小类进行分类,每个子类设计为一个元数据,将现有的数据分为13大类,260多个元数据类型,基本可以覆盖所有的气象数据。

元数据管理如图2所示。

图2 元数据管理

2.2 气象分词库

ES构建数据索引时有个分词的过程,默认情况每个独立的字就是一个分词。为了提高搜索的命中率和效率,构建气象行业自有的分词库可以有效地解决这个问题。当前,增加了这些与系统相关的分词,AGME(农业气象)、OTHE(其他观测)、SURF(地面观测)、CAWN(大气成分)、HPXY(历史科考)、OCEN(海洋)、NAFP(数值预报)、DISA(气象灾害)、RADA(天气雷达)、RADI(大气辐射)、SATE(气象卫星)、SEVP(精细化预报)、UPAR(高空探测),这个词库是根据业务网需求随时增加补充的,可以大大提高搜索效率。

2.3 数据扫描入ES库

为了有效管理大量的数据,首先要按照元数据的定义结构将所有的数据扫描入ES库,并完善元数据的相关内容。数据扫描入库流程如图3所示。

图3 数据入ES数据池的流程

在扫描入库的过程中,自动将每个文件按元数据模板中约定好的文件正则表达进行匹配,自动将所扫描到的文件进行分类,同时把该文件的存储路径、文件大小、创建时间等属性信息也一并写入ES库。在提供数据服务时,不用再次从磁盘中查找文件所在的物理地址,而是从ES库中准确、快速地获取到相应的文件地址,大大提高了数据服务效率。

3 应用效果分析

文中共采用3个节点构建集群,按不同数据类型独立建立索引,总共有13个索引,每一类的索引都分布在3个节点中。ES的数据组织结构如图4所示。可以看出,每一类数据都分为六个分片,每个分片有一主一备,既避免了单个索引特别多而导致搜索效率降低,又确保了数据安全,即便有节点出现故障,也不影响数据的搜索服务。

图4 当前系统ES的索引

图5 按一级大类搜索过滤

3.1 扫描入库分析

该系统在部署实施时,首要任务是把数据挂载到管理服务器,启动系统自动扫描功能,把所有待处理的数据按照系统设计的元数据规则录入到ES数据池中。由于数据量庞大,导入数据时,需要消耗较长的时间。该系统中主要包括两大类型的文件,其一,每个文件为几十兆以上,其二,每个文件为几百k以下,形成了鲜明的对比。因此,扫描占用相同磁盘空间的两个不同盘所消耗的时间相差很大,例如把30 T的卫星数据扫描并入库到ES集群需要20多个小时,而要处理30 T的地面观测数据,则需要超过3天的时间。目前,已经完成了2015年以来绝大部分的数据,包括观测数据和二次加工的数据产品。在ES数据池中已经有接入了800多T的数据,超过5亿个数据文件。

3.2 智能搜索设计与分析

文中支持全局的模糊搜索、大类模糊搜索、小类模糊搜索和精确搜索。这样可以满足多种不同用户类型的需求,既能搜索所需要的数据,又不用等待过长的时间,同时还支持按文件时间和扫描时间的方式进行的多维条件搜索。

在当前规模的查询中,按大类搜索基本在秒级之内可以完成。如图5所示,文件数据最多的雷达产品,约2.4亿个文件,在0.4秒之内就能完成检索。

图6是按雷达基数据查询,2 000多万条记录在1.4秒钟左右完成查询。

图6 雷达基数的元数据信息的查询结果

从上述结果可以看出,当前ES集群及分片、分词等设计是合理的,可以满足当前业务的需求。

4 结束语

数据池搜索平台可以统一管理数据,满足为用户高效、快速提供数据的需求。该系统采用3个节点作为ES集群,可以满足当前5亿个数据文件的管理并提供数据服务,该集群支持动态扩容,可以充分满足将来更多数据量的需求;行业化的分词也大大提高了数据搜索的效率,该分词库也支持扩容,扩容之后重启服务即可,操作较为简单。系统中采用元数据管理的技术,按业务和数据文件的特征,把全数据的数据分成了260多个元数据,统一元数据模板,软件设计与实现起来较为简单,系统部署与实施也较为简单。

猜你喜欢
分片分词海量
上下分片與詞的時空佈局
一种傅里叶域海量数据高速谱聚类方法
利用状态归约处理跨分片交易的多轮验证方案①
物联网区块链中基于演化博弈的分片算法
海量GNSS数据产品的一站式快速获取方法
分词在英语教学中的妙用
海量快递垃圾正在“围城”——“绿色快递”势在必行
结巴分词在词云中的应用
结巴分词在词云中的应用
基于模糊二分查找的帧分片算法设计与实现