物聯網是一個很寬泛的概念,是指各種設備、機器都通過互聯網連接起來,車聯網、工業互聯網等都屬于物聯網范疇。根據Gartner報告,聯網的設備在2019年已經超過142億,預計2021年將達到250億,這是一個巨大的數量。毫無疑問,我們需要一個物聯網大數據平臺來處理這些聯網設備產生的海量數據。
一個物聯網大數據平臺需要具備哪些功能?與通用的大數據平臺相比,它需要具備什么樣的特征呢?我們來仔細分析一下。
1. 高效分布式
必須是高效的分布式系統。物聯網產生的數據量巨大,僅中國而言,就有5億多臺智能電表,每臺電表每隔15分鐘采集一次數據,一天全國智能電表就會產生500多億條記錄。這么大的數據量,任何一臺服務器都無能力處理,因此處理系統必須是分布式的,水平擴展的。為降低成本,一個節點的處理性能必須是高效的,需要支持數據的快速寫入和快速查詢。
2. 實時處理
必須是實時處理的系統。互聯網大數據處理,大家所熟悉的場景是用戶畫像、推薦系統、輿情分析等等,這些場景并不需要什么實時性,批處理即可。但是對于物聯網場景,需要基于采集的數據做實時預警、決策,延時要控制在秒級以內。如果計算沒有實時性,物聯網的商業價值就大打折扣。
3. 高可靠性
需要運營商級別的高可靠服務。物聯網系統對接的往往是生產、經營系統,如果數據處理系統宕機,直接導致停產,產生經濟有損失、導致對終端消費者的服務無法正常提供。比如智能電表,如果系統出問題,直接導致的是千家萬戶無法正常用電。因此物聯網大數據系統必須是高可靠的,必須支持數據實時備份,必須支持異地容災,必須支持軟件、硬件在線升級,必須支持在線IDC機房遷移,否則服務一定有被中斷的可能。
4. 高效緩存
需要高效的緩存功能。絕大部分場景,都需要能快速獲取設備當前狀態或其他信息,用以報警、大屏展示或其他。系統需要提供一高效機制,讓用戶可以獲取全部、或符合過濾條件的部分設備的最新狀態。
5. 實時流式計算
需要實時流式計算。各種實時預警或預測已經不是簡單的基于某一個閾值進行,而是需要通過將一個或多個設備產生的數據流進行實時聚合計算,不只是基于一個時間點、而是基于一個時間窗口進行計算。不僅如此,計算的需求也相當復雜,因場景而異,應容許用戶自定義函數進行計算。
6. 數據訂閱
需要支持數據訂閱。與通用大數據平臺比較一致,同一組數據往往有很多應用都需要,因此系統應該提供訂閱功能,只要有新的數據更新,就應該實時提醒應用。而且這個訂閱也應該是個性化的,容許應用設置過濾條件,比如只訂閱某個物理量五分鐘的平均值。
7. 和歷史數據處理合二為一
實時數據和歷史數據的處理要合二為一。實時數據在緩存里,歷史數據在持久化存儲介質里,而且可能依據時長,保留在不同存儲介質里。系統應該隱藏背后的存儲,給用戶和應用呈現的是同一個接口和界面。無論是訪問新采集的數據還是十年前的老數據,除輸入的時間參數不同之外,其余應該是一樣的。
8. 數據持續穩定寫入
需要保證數據能持續穩定寫入。對于物聯網系統,數據流量往往是平穩的,因此數據寫入所需要的資源往往是可以估算的。但是變化的是查詢、分析,特別是即席查詢,有可能耗費很大的系統資源,不可控。因此系統必須保證分配足夠的資源以確保數據能夠寫入系統而不被丟失。準確的說,系統必須是一個寫優先系統。
9. 數據多維度分析
需要對數據支持靈活的多維度分析。對于聯網設備產生的數據,需要進行各種維度的統計分析,比如從設備所處的地域進行分析,從設備的型號、供應商進行分析,從設備所使用的人員進行分析等等。而且這些維度的分析是無法事先想好的,而是在實際運營過程中,根據業務發展的需求定下來的。因此物聯網大數據系統需要一個靈活的機制增加某個維度的分析。
10. 支持數據計算
需要支持數據降頻、插值、特殊函數計算等操作。原始數據的采集可能頻次挺高,但具體分析時,往往不需要對原始收據進行,而是數據降頻之后。系統需要提供高效的數據降頻操作。設備是很難同步的,不同設備采集數據的時間點是很難對齊的,因此分析一個特定時間點的值,往往需要插值才能解決,系統需要提供線性插值、設置固定值等多種插值策略才行。工業互聯網里,除通用的統計操作之外,往往還需要支持一些特殊函數,比如時間加權平均。
11. 即席分析和查詢
需要支持即席分析和查詢。為提高大數據分析師的工作效率,系統應該提供一命令行工具或容許用戶通過其他工具,執行SQL查詢,而不是非要通過編程接口。查詢分析的結果可以很方便的導出,再制作成各種圖標。
12. 靈活數據管理策略
需要提供靈活的數據管理策略。一個大的系統,采集的數據種類繁多,而且除采集的原始數據外,還有大量的衍生數據。這些數據各自有不同的特點,有的采集頻次高,有的要求保留時間長,有的需要多個副本以保證更高的安全性,有的需要能快速訪問。因此物聯網大數據平臺必須提供多種策略,讓用戶可以根據特點進行選擇和配置,而且各種策略并存。
13. 開放的系統
必須是開放的。系統需要支持業界流行的標準SQL,提供各種語言開發接口,包括C/C++,Java,Go,Python,RESTful等等,也需要支持Spark,R,Matlab等等,方便集成各種機器學習、人工智能算法或其他應用,讓大數據處理平臺能夠不斷擴展,而不是成為一個孤島。
14. 支持異構環境
系統必須支持異構環境。大數據平臺的搭建是一個長期的工作,每個批次采購的服務器和存儲設備都會不一樣,系統必須支持各種檔次、各種不同配置的服務器和存儲設備并存。
15. 支持邊云協同
需要支持邊云協同。要有一套靈活的機制將邊緣計算節點的數據上傳到云端,根據具體需要,可以將原始數據,或加工計算后的數據,或僅僅符合過濾條件的數據同步到云端,而且隨時可以取消,更改策略。
16. 單一后臺管理
需要單一的后臺管理系統。便于查看系統運行狀態、管理集群、管理用戶、管理各種系統資源等,而且系統能夠與第三方IT運維監測平臺無縫集成,便于管理。
17. 私有化部署
便于私有化部署。因為很多企業出于安全以及各種因素的考慮,希望采用私有化部署。而傳統的企業往往沒有很強的IT運維團隊,因此在安裝、部署上需要做到簡單、快捷,可維護性強。
以上總結了物聯網大數據平臺的主要功能和特點。雖然物聯網大數據平臺本身也在演變之中,但總的目標不會改變,那就是高效、可伸縮、實時、可靠、靈活、開放、簡單、易維護。