APP下载

基于Cassandra的实时气象数据分布式存储系统

2017-08-02邢丽平杨代才

陕西气象 2017年4期
关键词:存储系统数据表客户端

杨 芳,金 琪,邢丽平,杨代才

(湖北省气象信息与技术保障中心,武汉 430074)

基于Cassandra的实时气象数据分布式存储系统

杨 芳,金 琪,邢丽平,杨代才

(湖北省气象信息与技术保障中心,武汉 430074)

介绍了Cassandra关键技术、实时气象数据存储模型。湖北省运行MICAPS4采用基于Cassandra的分布式数据存储环境。对分布式存储系统高可用性、读取性能的测试结果表明,系统提高了MICAPS客户端对实时气象数据的检索效率,并极大减轻了各级台站的维护压力。

MICAPS4;气象数据;分布式;存储;Cassandra

随着气象观测资料种类的增加、观测频次的增多,在气象数据存储技术领域,基于目录树结构的文件系统难以承受文件数量的急剧增长,在管理大量的结构化与非结构化数据方面,也不能较好地满足业务人员对数据进行按序访问的需求。中国气象局推出的MICAPS(meteorological information comprehensive analysis processing system)4.0版本, 充分发挥了观测资料的作用, 满足了不断发展的预报业务和气象服务需求。湖北作为全国气象部门首家省级试点单位,2016年将MICAPS4.0投入测试运行。其后台数据环境引入非结构数据库Cassandra;采用多维索引数据模型的实时气象数据存储系统,在保证MICAPS客户端快速调用(毫秒级别)实时气象数据的同时,可为全省各级气象部门预报业务系统提供基于气象卫星、天气雷达和数值预报、站点实况等数据支撑,实现数据在省级单点更新,极大减轻台站的维护压力;可灵活地添加节点来实现存储系统扩充,而不给系统带来较大的性能抖动;与Spark结合,利用Spark来实现复杂数据分析与处理功能,如处理集合预报资料等。

1 Cassandra关键技术点

1.1 系统架构

ApacheCassandra是一套开源分布式NoSQL数据库系统,基于一致性哈希算法的P2P环形结构。这种结构各节点功能完全相同,可灵活添加节点来完成系统的扩充或删除节点,且无需大规模转移数据,同时彻底避免系统因单点故障导致的不稳定性;每个节点通过Gossip机制进行消息同步;每个数据项都会被复制到N个节点(N是通过参数配置的副本因子),系统利用数据的复制机将存储在各节点上的数据复制到其他节点上,实现了数据的高度可获得性与安全性[1]。

1.2 数据模型

Cassandra使用宽列存储模型,每行数据记录是以Key-Value形式进行存储,其中Key为唯一标识。每个Key-Value其中的Value也称为Column[2-3],作为一个三元组,包含有Column Name、Column Value与timestamp;每个CF由一个Key 及其对应的若干个Column标识组成。一个keyspace包含若干个CF,类似关系型数据库中一个database可有多个table。图1为一个Column型数据模型。

1.3 CAP理论

NoSQL典型遵循由Eric Brewer 提出的CAP理论[4-5],依据此理论,在一个大规模的分布式数据系统中,有三个需求是彼此循环依赖的,一致性(consistency)、可用性(availability)、分区耐受性(partition tolerance)。一致性为对所有数据库客户端使用同样查询都可得到相同的数据;可用性即所有数据库客户端都可读写数据;分区耐受性是指数据库分散到多个服务器上,即使发生网络故障,仍可提供服务。CAP理论可简单描述为,一个分布式系统不能同时满足以上三个特性,最多只能同时满足两个。Cassandra主要支持可用性和分区耐受性。在Cassandra中,数据具备最终一致性,集群整体的完全可用性。

图1 基于Key-Value的数据模型

1.4 存储机制

Cassandra依赖本地的文件系统通过内存与磁盘的双重存储机制来保证数据的持久性[5-6]。Cassandra有三个重要的数据结构,记录于内存的Memtable,保存在磁盘中的Commit Log和SSTable。Memtable记录最近的修改,而SSTable记录着数据库所承载的绝大部分数据。通常情况下,一个Cassandra表会对应着一个Memtable和多个SSTable。Cassandra接收到客户端发送来的数据,首先将写操作记录到位于磁盘的CommitLog中;上述操作成功后,更新位于内存中的Memtable数据结构。持续的写入数据,使得Memtable逐渐增长,当其数据量到达某个阈值时,Cassandra的数据迁移被触发,一方面将Memtable刷写到本地磁盘上成为永久的SSTable,另一方面将CommitLog中的写入记录移除。对于读操作,客户端先查询Memtable中的数据,若无法获取所需信息,则检索本地磁盘。Cassandra会定期执行压紧compact操作,将同一条数据不同的版本进行合并,过时数据也会在此过程中被删除;分层数据压缩,有效减少数据体积及磁盘I/O。

2 实时气象数据存储模型

预报员在分析天气形势时,需通过MICAPS4客户端获取实时地面、高空观探测数据以及气象卫星、天气雷达、模式数据等;以这些数据为主所构成的“气象大数据”,都可归属于非结构化数据,具有多维、维度有序或无序等特点。基于Key-Value分布式数据库Cassandra在存储海量小文件、多维数据索引等方面有明显的优势[7-8];故采用Cassandra作为存储实时气象数据的解决方案。

2.1 系统设置

针对实时气象数据存储系统,用户对该系统读取的性能需求远远高于写入数据。通过对副本数进行合理设置,可分散读取压力。对于5节点集群,将副本数设置为3;Row分区模式:采用自动分区方式,使不同的Row Key均匀分布在各节点上,有利于数据读取压力的分散。

2.2 Cassandra表设计

作为典型的非结构化数据,气象数据可以由多维索引来确定一个唯一的数据。业务用户常见的操作包括“最新数据”“左右翻页”“上下翻页”等。

2.2.1 数据表 根据不同数据类型建立相应数据表,用于存储数据内容,包括:ECMWF_HR(高分辨率数值预报产品)、SATELLITE(卫星资料)、UPPER_AIR(高空站点资料)、SINGLERADAR(雷达资料)等。以“T639”为例说明数据表结构(表1)。

建表语句:CREATE TABLE "T639" ( "dataPath" text, column1 text, value blob, PRIMARY KEY ("dataPath", column1) ) ;

2.2.2 层次表 用于存储所有模式或实况的层次信息,表名为level;用户在客户端进行上下翻页操作,从level表中获取当前层次的上一层或下一层信息;利用层次表与数据表,可检索到不同层次的数据(表2)。

建表语句:CREATE TABLE level ("dataPath" text,column1 int,value int,PRIMARY KEY ("dataPath", column1)) ;

2.2.3 最新时刻表 用于存储各类数据的最新时刻信息,表名为latestdatatime。利用最新时刻表,用户能通过客户端快速查找到最新数据文件名。用户根据完整索引(文件路径与最新数据文件名),例:T639/WIND/500/17030108.000,即可在“数据表”中获取到对应数据(表3)。

建表语句:CREATE TABLE latestdatatime ( "dataPath" text,column1 text, value text,PRIMARY KEY ("dataPath", column1)) ;

表1 Cassandra数据表结构

表2 Cassandra层次表结构

表3 Cassandra最新时刻表结构

3 存储系统性能测试

3.1 测试环境

选用5台相同配置的服务器用来搭建分布式存储系统。服务器操作系统为Red Hat Enterprise Linux Server release 7.1,处理器参数为Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10 GHz,主频为2.1 GHz;内存大小为256 GB;6块4 TB SATA硬盘;服务器间通过万兆光纤连接。Cassandra数据库版本为2.2.5。

3.2 高可用性测试

由5个节点所组成分布式存储系统,其结构上具有如下特点。

(1)服务器双网卡绑定,即将两个物理网卡虚拟成一个逻辑网卡;提升服务器之间的传输带宽,实现网卡冗余。

(2)用于集群内部数据交换的两台万兆光纤交换机,采取级联方式,可互为备份。

(3)6块SATA硬盘,其中2块做RAID1,安装操作系统及软件;另外4块4 TB用作两个RAID0,用于存储数据。

(4)服务器集群为环形结构,没有master节点,各节点功能完全一样。

按照表4中内容,对系统的基础设施层(包括网络设备、存储设备等)、软件层(数据库)进行测试,来验证系统的高可用性;从表中结论可知,系统中用于内部数据交换的光纤或网卡、交换机及任一Cassandra服务器故障,均不影响MICAPS4客户端调取数据。

表4 Cassandra集群系统高可用性测试

3.3 读取性能测试

通过读取数据的脚本文件(可获取数据字节数信息,表5中ECMWF_HR/TMP/100目录下数据字节数为132 642字节,SATELLITE/FY2E/L1/IR3/EQUAL下数据字节数为554 944字节,T639/WIND/100下数据字节数为1 449 052字节),模拟单用户及50用户、100用户客户端对同一类型数据进行读取,共分3组,即对三种不同类型的数据进行测试,测试性能见表5,注意测试结果包含网络传输时间。

表5 三种不同类型的数据在不同压力下传输时间测试 ms

从数据读取的测试结果可以看出:(1)50用户并发和100用户并发客户端同时对同一类型数据进行读取的时间与单用户读取时间相当。以T639/WIND/100为例,50用户并发和100用户并发与单用户读取相关数据所花费的平均时间均在20 ms左右。(2)在100用户并发情况下,从数据库中调取数据所消耗的时间均以ms量级为单位(包含网络传输时间),时间远远小于在samba服务器上读取数据的时间。(3)数据读取时间和单个数据的字节数近似成正比,即单个数据文件字节数越大,读取数据所花费的时间则越长。

4 结语

利用Cassandra分布式数据库搭建的存储环境,提高了实时气象数据存储效率与检索速度,通过统一的数据平台,实现了市县两级运维人员对该系统“零”维护。通过在实际业务环境中进行测试,验证了该分布式数据环境的高可用性;以毫秒级为单位的数据读取时间,能很好地满足业务对数据时效性的需求。

[1] 王意洁,孙伟东,周松,等.云计算环境下的分布存储关键技术[J].软件学报,2012,23(4):971-975.

[2] 申德荣,于戈,王习特,等.支持大数据管理的NoSQL系统研究综述[J].软件学报,2013,24(8):1789-1792.

[3] 秦苻珂.Cassandra应用研究[J].电脑知识与技术,2016,12(9):14-16.

[4] 孟小峰,慈祥.大数据管理:概念、技术与挑战[J].计算机研究与发展,2013,50(1):154-157.

[5] Eben Hewitt.Cassandra:The Definitive Guide[M].北京:人民邮电出版社,2011.

[6] 覃雄派,王会举,李芙蓉,等.数据管理技术的新格局[J].软件学报,2013,24(2):179-185.

[7] 王若曈,黄向东,张博等.海量气象数据实时解析与存储系统的设计与实现[J].计算机工程与科学,2015,37(11):2045-2054.

[8] 钟雨,黄向东,刘丹,等.大规模装备检测数据的NoSQL存储方案[J].计算机集成制造系统,2013(12):3008-3016.

1006-4354(2017)04-0026-05

2016-11-29

杨芳(1982—),女,湖北洪湖人,学士,高工,从事气象信息通信研究。

湖北省气象局科技发展基金重点项目(2015Z02)

P409

B

杨芳,金琪,邢丽平,等.基于Cassandra的实时气象数据分布式存储系统[J].陕西气象,2017(4):26-30.

猜你喜欢

存储系统数据表客户端
分布式存储系统在企业档案管理中的应用
湖北省新冠肺炎疫情数据表
如何看待传统媒体新闻客户端的“断舍离”?
天河超算存储系统在美创佳绩
基于列控工程数据表建立线路拓扑关系的研究
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
华为震撼发布新一代OceanStor 18000 V3系列高端存储系统
一种基于STM32的具有断电保护机制的采集存储系统设计
图表