摘要:MRS IoTDB,它是華為FusionInsight MRS大資料套件中的時序資料庫產品,在深度參與Apache IoTDB社區開源版的基礎上推出的高性能企業級時序資料庫產品,
本文分享自華為云社區《工業資料分析為什么要用FusionInsight MRS IoTDB?》,作者:高深廣 ,
隨著工業互聯網逐步興起,在加速工業自動化、智能化的同時,也進一步加速工業生產時間序列資料的產生速度,但對于工業生產中的資料分析,仍然存在重復樣本多,資料膨脹率大,缺乏專業易用的平臺,這些問題成為阻礙工業資料分析的最大障礙,
工業是現代文明的基礎,提起工業,我們就能想到滾動向前的火車,轟鳴的飛機,為現代工業生產、出行提供便利,同時,衡量一個國家的綜合實力時,也離不開工業,工業數字化浪潮隨著資訊基礎設施的建設,通過人工智能、大資料技術與行業的不斷深入行業場景,使得資料在企業單位內得以正確使用,享受資料價值紅利,
近年來,全球多個國家將資料列為戰略資源,并頒布數項資料政策,旨在進一步通過資料提升經濟實力,讓人能享受資料帶來的巨大進化紅利,而在工業生產程序中,早期以流水線、自動化為主,對比其他產業,中國各行業的數字化整體規模仍存在差距第二產業數字化發展之后,但近年來增速較快,以能源業為代表的陜煤、山能、三峽集團等大中型企業,以“上云用數賦智”為牽引,不斷提升生產效率,實作精細化運營,當前,中國是當前世界上最大的制造業國家,規模等于美日德綜合,在數字化轉型道路上道艱且長,
隨著云計算、大資料、物聯網、5G等場景對于時序資料需求的持續增長,專門用于存盤和處理時間序列資料的時序資料庫應運而生,時序資料庫面臨著采集頻率密、采集精度高、采集跨度大、存盤周期長、實時要求高等有別于傳統資料庫的挑戰,
1 什么是時序資料及工業時序資料的特點
工業數字化滾滾而來,在資訊基礎設施之上,工業生產環境產出了大量的以物聯網IoT(Internet Of Things)資料,并隨著時間的演進連續不斷地產生大量傳感器數值或事件資料,時間序列資料(time series data)就是以資料(事件)發生的時刻(時間戳)為時間軸形成的連續不斷的數值序列,
例如,下表為某物聯網設備不同時刻的的溫度資料構成的一個時間序列資料樣本:
無論是機器產生的傳感器資料,還是工業生產活動的資料,都有一些共同的特征:
(1)實時性要求高:處理上無論是傳感器資料還是事件資料,都需要毫秒級、秒級的實時處理能力,以確保對實時回應和處理能力;采集最少支持毫秒級采集,有些需要支持微秒級、納秒級采集;
(2)采集頻率高:每秒采集幾十次、上百次、十萬次乃至百萬次;
(3)存盤分析周期長:需要支持時序資料的持久存盤,甚至對有些資料需要進行長達上百年的永久存盤(例如地震資料);分析需7*24小時持續不斷地連續采集幾年、乃至數十年資料;查詢視窗長:需要支持從毫秒、秒、分鐘、小時到日、月、年等不同粒度的時間視窗查詢;也需要支持萬、十萬、百萬、千萬等不同粒度的數量視窗查詢;
(4)資料清洗難:時間序列資料存在亂序、缺失、例外等復雜情況,需要專用演算法進行高效實時處理;
(5)演算法專業強:時間序列資料在工業、金融、電力、交通等不同領域,都有很多垂直領域的專業時序分析需求,需要利用時序趨勢預測、相似子序列分析、周期性預測、時間移動平均、指數平滑、時間自回歸分析以及基于LSTM的時序神經網路等演算法進行專業分析,
從時序資料的共同特征可以看出,時間序列特殊的場景需求給傳統的關系資料庫存盤和大資料存盤都帶來了挑戰,無論是采用關系資料庫進行結構化存盤,還是采用NoSQL資料庫進行存盤,都無法滿足海量時序資料高并發實時寫入和查詢的需求,因此,迫切需要一種專門用于存盤時間序列資料的專用資料庫,時序資料庫的概念和產品就這樣誕生了,
2 時序資料庫和其他資料庫的區別
需要注意的是,時序資料庫不同于時態資料庫和實時資料庫,時態資料庫(Temporal Database)是一種能夠記錄物件變化歷史,即能夠維護資料的變化經歷的資料庫,比如TimeDB,時態資料庫是對傳統關系資料庫中時間記錄的時間狀態進行細粒度維護的系統,而時序資料庫完全不同于關系資料庫,只存盤不同時間戳對應的測點值,
時序資料庫也不同于實時資料庫,實時資料庫誕生于傳統工業,主要是因為現代工業制造流程及大規模工業自動化的發展,傳統關系資料庫難以滿足工業資料的存盤和查詢需求,因此,在80年代中期,誕生了適用于工業監控領域的實時資料庫,由于實時資料庫誕生早,在擴展性、大資料生態對接、分布式架構、資料型別等方面存在局限,但是也有產品配套齊全、工業協議對接完整的優勢,時序資料庫誕生于物聯網時代,在大資料生態對接、云原生支持等方面更有優勢,
時序資料庫與時態資料庫、實時資料庫的基本對比資訊如下:
2.1 當前主流時序資料庫的基本情況
為了高效存盤、處理、查詢和分析海量時序資料,市面上先后出現了幾十種時序資料庫,
時序資料庫是時間序列資料庫的簡稱,指的是專門對帶時間標簽(按照時間的順序變化,即時間序列化)的資料進行存盤、查詢、分析等處理操作的專用資料庫系統,通俗來說,時序資料庫就是專門用來記錄例如物聯網設備的溫度、濕度、速度、壓力、電壓、電流以及證券買入賣出價等隨著時間演進不斷變化的各類數值(測點、事件)的資料庫,
這些時序資料庫架構形態和性能特性各異,但是基本上可以概括為以下幾種:
2.1.1 基于傳統關系庫擴展的時序資料庫
在傳統關系資料庫的基礎上,利用關系資料庫的內核引擎,把時間序列作為一個插件擴展實作,例如,TimescaleDB是基于PostgreSQL資料庫打造的一款時序資料庫,PostgreSQL是一個功能非常強大的、源代碼開放的客戶/服務器關系型資料庫管理系統,PostgreSQL擁有強勁的功能集,其中包括多版本并發控制(MVCC)、時點恢復、細粒度訪問控制、表空間、異步復制、嵌套事務、聯機/熱備份、完善的查詢規劃器/優化器以及預寫式日志,
由于TimescaleDB基于PostgreSQL,因此同時具備了傳統關系資料庫的優點和缺點,優點在于PostgreSQL完備地實作了關系資料庫標準,因此具有強大的生態兼容能力和強一致性的保障,Timescale作為PostgreSQL的一個插件,為快速獲取和復雜查詢進行了優化,它執行的是完整的SQL,相應地很容易像傳統的關系資料庫那樣使用,然而,TimescaleDB也繼承了傳統關系資料庫的不足:單邊列數有上限、單表行數不宜過多(少于一千萬行)、需要手動進行分庫分表,缺乏自動伸縮能力,時間序列資料隨著匯入時間的增加,匯入速度不斷下降,海量(GB或千萬條以上)時序資料遍歷速度緩慢等,
2.1.2 基于KV資料庫的時序資料庫
隨著大資料技術的興起,以KV資料庫為代表的NoSQL資料庫大量涌現,打破了關系資料庫ACID的嚴格限制,以CAP作為約束,底層以大資料分布式檔案系統為存盤引擎,突破了傳統關系資料庫面對海量資料存盤的局限,其中,HBase是NoSQL資料庫的典型代表,具備海量數量的靈活擴展存盤能力,時序資料庫OpenTSDB基于HBase的這種能力,專門針對時序資料的海量存盤和查詢做了擴展,OpenTSDB的整體架構如下所示,由運行在HBase之上的一個或者多個時間序列守護程式TSD (Time Series Daemon) 組成,每個TSDB都是無狀態的獨立節點,因此可以根據系統負載情況進行任意節點的橫向擴展:
OpenTSDB的資料模型是基于tag的單值模型,即寫入的每行記錄(資料點)中只有一個指標值,如下所示:
由于基于HBase,OpenTSDB具備了HBase的優勢:可以輕松管理海量時間序列資料,支持時序磁區和并行查詢,具備分布式集群部署和擴展能力,但是,同樣也具備基于HBase帶來的不足:由于HBase是弱型別列式資料庫,使用Java語言操作,使得OpenTSDB也存在查詢受限問題,對于多序列時間對齊查詢等復雜查詢支持能力受限,但客戶和技術人員通常僅具備標準SQL語言技術知識儲備,使用門檻高,同時由于采用的是HBase通用存盤格式,沒有針對時間序列資料的特性進行針對性壓縮,因此導致壓縮比低,讀寫速度較慢,通常1份資料要膨脹3倍,使用和運維成本居高不下,OpenTSDB的存盤模型,其主要設計特點是采用了UID編碼,大大節省了存盤空間,并且利用UID編碼的固定位元組數的特性,利用HBase的Filter做了很多查詢的優化,但是采用UID編碼后也帶來了很多的缺陷,一是需要維護metric/tagKey/tagValue到UID的映射表,所有data point的寫入和讀取都需要經過映射表的轉換,映射表通常會快取在TSD或者client,增加了額外的記憶體消耗;二是由于采用了UID編碼,導致metric/tagKey/tagValue的基數是有上限的,取決于UID使用的位元組數,并且在UID的分配上會有沖突,會影響寫入,
另外一款基于Cassandra的時序資料庫KairosDB也是類似OpenTSDB,Cassandra是一個高度可擴展的高性能分布式NoSQL資料庫,用于處理大量商用服務器上的大量資料,提供高可用性,無單點故障,它是一個通用NoSQL,面向列的資料庫, 分布設計基于Amazon的Dynamo及其在Google的Bigtable上的資料模型,并不依賴于Hadoop生態體系,對于現網存在大資料平臺的客戶,將會造成進一步的資料孤島、資料冗余和更多的資料搬遷作業,Cassandra實作了一個沒有單點故障的Dynamo風格的復制模型,但增加了一個更強大的“列族”資料模型,Cassandra適應所有可能的資料格式,包括:結構化,半結構化和非結構化,可以根據需要動態地適應變化的資料結構,KairosDB采取的存盤模型,是利用了Cassandra寬表的特性,Cassandra的底層檔案存盤格式與HBase不同,它一行資料不會為每一列都重復的存盤Rowkey,所以它不需要使用UID編碼,雖然Cassandra針對OpenTSDB的不足做了改進,本質都是依靠大資料領域已有的通用NoSQL分布式資料庫引擎作為底層存盤,因此從根本上受制于底層存盤的限制,無法針對時間序列資料的特點進行針對性優化,
2.1.3 基于專有時序資料引擎的時序資料庫
吸收了基于關系資料庫和KV資料庫在時序資料存盤方面的經驗教訓,逐步出現了基于專有時序資料引擎的專業時序資料庫,其中最有代表性的就是InfluxDB,InfluxDB是由InfluxData公司開發的時間序列資料庫(TSDB),InfluxDB使用Go語言撰寫,適用于各類時間序列資料的高效存盤與檢索,InfluxDB專為時間序列資料撰寫的定制高性能資料存盤,TSM引擎可實作高提取速度和資料壓縮,InfluxDB采用了專屬檔案結構和專屬優化,具有高壓縮比、高并發、海量存盤等顯著優勢,但是其在易用性和生態對接方面仍需提供更多支持投入,
2.1.4 華為云MRS IoTDB “專快易穩省”的專業時序資料庫
專業時序資料庫的另一個代表就是MRS IoTDB,它是華為FusionInsight MRS大資料套件中的時序資料庫產品,在深度參與Apache IoTDB社區開源版的基礎上推出的高性能企業級時序資料庫產品,IoTDB顧名思義,是針對IoT物聯網領域推出的專用時序資料庫軟體,是由清華大學發起的國產Apache開源軟體,自IoTDB誕生之初,華為就深度參與IoTDB的架構設計和核心代碼貢獻,對IoTDB集群版的穩定性、高可用和性能優化投入了大量人力并提出了大量的改進建議和貢獻了大量的代碼,
IoTDB在設計之初,全面分析了市面上的時序資料庫相關產品,包括基于傳統關系資料庫的Timescale、基于HBase的OpenTSDB、基于Cassandra的KariosDB、基于時序專屬結構的InfluxDB等主流時序資料庫,借鑒了不同時序資料在實作機制方面的優勢,形成了自己獨特的技術優勢:
(1)支持高速資料寫入
獨有的基于兩階段LSM合并的tLSM演算法有效保障了IoTDB即使在亂序資料存在的情況下也能輕松實作單機每秒千萬測點資料的并發寫入能力,
(2)支持高速查詢
支持TB級資料毫秒級查詢
(3)功能完備
支持CRUD等完整的資料操作(更新通過對同一設備同一時間戳的測點資料覆寫寫入來實作,洗掉通過設定TTL過期時間來實作),支持頻域查詢,具備豐富的聚合函式,支持相似性匹配、頻域分析等專業時序處理,
(4)介面豐富,簡單易用
支持JDBC介面、Thrift API介面和SDK等多種介面,采用類SQL陳述句,在標準SQL的陳述句上增加了對于時間滑動視窗的統計等時序處理常用的功能,提供了系統使用效率,Thrift API介面支持Java、C\C++、Python、C#等多語言介面呼叫,
(5)低存盤成本
IoTDB獨立研發的TsFile時序檔案存盤格式,專門針對時序處理處理做了優化,基于列式存盤,支持顯式的資料型別宣告,不同資料型別自動匹配SNAPPY、LZ4、GZIP、SDT等不同的壓縮演算法,可實作1:150甚至更高的壓縮比(資料精度進一步降低的情況下),極大地降低了用戶的存盤成本,例如某用戶原來用9臺KariosDB服務器存盤的時序資料,IoTDB用1臺同等配置的服務器即可輕松實作,
(6)云邊端多形態部署
IoTDB獨有的輕量級架構設計保障了IoTDB可以輕松實作“一套引擎打通云邊端,一份資料兼容全場景”,在云服務中心,IoTDB可以采用集群部署,充分發揮云的集群處理優勢;在邊緣計算位置,IoTDB可以在邊緣服務器上部署單機IoTDB,也可以部署少量節點的集群版,具體視邊緣服務器配置而定;在設備終端,IoTDB可以TsFile檔案的形態直接嵌入到終端設備的本地存盤中,并直接被設備終端的直接讀寫TsFile檔案,不需要IoTDB資料庫服務器的啟動運行,極大地減少了對終端設備處理能力的要求,由于TsFile檔案格式開放,終端任意語言和開發平臺可以直接讀寫TsFile的二進制位元組流,也可以利用TsFile自帶的SDK進行讀寫,對外甚至可以通過FTP將TsFile檔案發送到邊緣或云服務中心,
(7)查詢分析一體化
IoTDB一份資料同時支持實時讀寫與分布式計算引擎分析,TsFile與IoTDB引擎的松耦合設計保障了一方面IoTDB可以利用專有的時序資料處理引擎對時序資料進行高效寫入和查詢,同時TsFile也可以被Flink、Kafka、Hive、Pulsar、RabbitMQ、RocketMQ、Hadoop、Matlab、Grafana、Zeepelin等大資料相關組件進行讀寫分析,極大地提升了IoTDB的查詢分析一體化能力和生態擴展能力,
?MRS IoTDB對Apache IoTDB內核架構尤其是分布式集群架構做了大量的重構優化,在穩定性、可靠性、可用性和性能方面做了大量的系統級增強,
(1)介面兼容性:
進一步完善北向介面和南向介面,支持JDBC、Cli、API、SDK、MQTT、CoAP、Https等多種訪問介面,進一步完善類SQL陳述句,兼容大部分Influx SQL,支持批量匯入匯出,
(2)分布式對等架構:
MRS IoTDB在基于Raft協議的基礎上,采用了改進的Multi-Raft協議,并對Muti-Raft協議的底層實作進行了優化,采用了Cache Leader等優化策略在保障無單節故障的基礎上,進一步提升MRS IoTDB資料查詢路由的性能;同時,對強一致性、中等一致性和弱一致性策略進行了細粒度優化;對一致性哈希演算法加入虛擬節點策略避免資料傾斜,同時融合了查表與哈希磁區的演算法策略,在提升集群高可用的基礎上進一步保障集群調度的性能,
(3)雙層粒度元資料管理:
由于采用了對等架構,元資料資訊自然分布在集群所有節點上進行存盤,但是由于元資料的存盤量較大會帶來記憶體的較大消耗,為了平衡記憶體消耗與性能,MRS IoTDB采用了雙層粒度元資料管理架構,首先在所有節點間進行時間序列組元資料的同步,其次在磁區節點間進行時間序列元資料的同步,這樣在查詢元資料的時候,首先會基于時間序列組進行過濾樹剪枝,大大減少搜尋空間,然后在進一步在過濾后的磁區節點進行時間序列元資料的查詢,
(4)本地磁盤高性能訪問:
MRS IoTDB采用專用的TsFile檔案格式進行時間序列優化存盤,采用列存格式進行自適應編碼與壓縮,支持流水線優化訪問和亂序資料高速插入
(5)HDFS生態集成:
MRS IoTDB支持HDFS檔案讀寫,并對HDFS進行了本地快取、短路讀、HDFS I/O執行緒池等多種優化手段,全面提升MRS IoTDB對HDFS的讀寫性能,同時,MRS IoTDB支持華為OBS物件存盤并進行了更加高性能的深度優化,在HDFS集成的基礎上,MRS IoTDB支持Spark、Flink、Hive等MRS組件對TsFile的高效讀寫,
(6)多級權限管控:
- 支持存盤組、設備、傳感器等多級權限管控
- 支持創建、洗掉、查詢等多級操作
- 支持Kerberos認證
- 支持Ranger權限架構
(7)云邊端部署:
支持云邊端靈活部署,邊緣部分可以基于華為的IEF產品進行對接,也可以直接部署在華為的IES中,
MRS IoTDB集群版支持動態擴縮容,可以為云邊端提供更加靈活的部署支持,
總之,MRS IoTDB在Apache IoTDB已有架構的基礎上,融合FusionInsight MRS Manager強大的日志管理、運維監控、滾動升級、安全加固、高可用保障、災備恢復、細粒度權限管控、大資料生態集成、資源池優化調度等企業級核心能力,針對工業級時間序列資料實時性高,采集頻率高,存盤周期長,演算法專業強等特點,提供海量時序資料高并發實時寫入和查詢的能力,有力支撐新一代資訊技術與工業深度融合發展,將進一步加速工業乃至產業數字化,
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/541026.html
標籤:其他
