基于storm的物聯網數據處理系統及方法
【技術領域】
[0001]本發明涉及物聯網數據處理技術領域,特別是基于storm的物聯網數據處理系統及方法。
【背景技術】
[0002]物聯網是通過新一代的IT技術(如RFID射頻識別技術、云計算技術等)將傳感器裝備或者嵌入到全球各行各業的物體中,通過相互之間的鏈接形成“物聯網”,然后通過云計算技術和超級計算機對收集到的海量數據進行處理和分析,達到對物體智能化管理和控制的目的。
[0003]隨著云計算大數據的發展,數據的處理趨于分布式處理,海量數據通過分布到不同的節點運算來提高數據的處理能力。而目前分布式平臺中,storm平臺具有開發靈活性高,處理能力強,對于物聯網的實時流數據處理的適配性好,高可靠性和可擴展性好等優點,本系統采用storm平臺作為基礎計算平臺。
[0004]但基于storm框架的軟件重用性和數據處理系統的可擴展性有一定的局限,軟件的開發周期長,成本高。
【發明內容】
[0005]為了解決上述現有技術中的不足,本發明提供一種基于storm的物聯網數據處理系統,用戶可以靈活地選擇不同功能的組合,方便開發人員的二次開發,降低系統二次開發的成本。
[0006]基于storm的物聯網數據處理系統,包括數據預處理插件,用于接收物聯網數據,以及
[0007]數據格式的預處理,將多結構的數據轉換為統一數據格式;
[0008]語句解析插件,用于提供給用戶交互的功能,接收用戶需要對數據源進行操作的語句,
[0009]將用戶執行語句進行詞法語法解析,形成解析樹發送給邏輯處理插件;
[0010]邏輯處理插件,通過解析樹提取語義并進行功能選擇,將功能號和該功能執行所需要的參數以json格式封裝在數據包中發送給功能執行插件;
[0011]功能執行插件,通過所述邏輯處理插件的數據包選擇具體的功能模塊,并提取對應的參數傳入該模塊,最后執行該功能。
[0012]所述數據預處理插件包括數據接收模塊、數據預處理模塊和數據發送模塊。
[0013]所述數據接收模塊和數據預處理模塊支持來自RFID裝置、傳感器或二維碼的數據格式。
[0014]所述語句解析插件包括語句接收模塊和語句解析模塊。
[0015]所述邏輯處理插件包括系統配置模塊和邏輯處理模塊。
[0016]所述功能執行插件包括持續查詢模塊、刪除查詢模塊、算子監聽模塊和創建流模塊。
[0017]本發明還提供一種基于storm的物聯網數據處理方法,步驟如下:
[0018]S1、數據預處理插件中的數據接收模塊接收來自數據發送器的數據,數據預處理模塊將數據由原始格式轉換為系統可識別的格式,數據發送模塊將數據發送到語句解析插件;
[0019]S2、語句解析插件接收用戶對于系統操作的csql語句,并對語句的詞法和語法進行解析,查看固定關鍵字是否缺失,生成解析樹傳到邏輯處理插件;
[0020]S3、邏輯處理插件對提取解析樹的關鍵字,判斷該解析樹是否為create語句的解析樹,如果是則將create語句中數據格式定義語句進行語義提取,配置數據接入格式,將配置的數據格式封裝在固定數據包中,傳入功能執行插件;如果解析樹是查詢語句的解析樹,則提取關鍵字和參數,發送給功能執行插件構建拓撲進行查詢計算;如果是create語句和查詢語句以外的解析樹,則提取對應的功能和該功能的參數,傳遞給功能執行插件進行具體執行;
[0021 ] S4、功能執行插件接收到數據包后,根據語句命令選擇相應的功能執行。
[0022]所述邏輯處理插件輸出數據包括功能號和功能執行的參數信息。
[0023 ] 本發明通過s torm平臺處理物聯網流數據,則充分利用s torm平臺對于流數據的支持和分布式運算能力,將無限、實時的數據分發到不同的計算節點進行計算,然后統一返回給用戶;由于物聯網數據多樣化,存在無結構化,半結構化和結構化數據,本發明通過數據預處理插件對物理網數據采集的數據接受并通過數據預處理將數據處理成為結構化數據,并提供create語句來定義數據格式,可以靈活地處理物聯網多樣化的數據;采用插件化設計,每一個插件可以獨立開發,各個插件之間不相互依賴,通過插件管理器,用戶可以自由替換,增加,刪除插件,減小了系統之間的耦合性,增加了系統的可擴展性和可維護性;每個插件之間都采用模塊化設計,并通過代工的設計模式,通過插件管理器可以替換每個插件中部分不滿足用戶需求的模塊功能,使系統具有更好的適配性;通過java的反射機制來加載算子和通過最優邏輯樹的關鍵字與算子之間的匹配關系來選擇算子,并允許用戶自定義算子和修改算子和關鍵字的匹配關系,使用戶靈活地選擇不同能的組合。
【附圖說明】
[0024]圖1為基于storm的物聯網數據處理系統實施例的框圖;
[0025]圖2為圖1中實施例的模塊結構圖;
[0026]圖3為圖1中實施例的應用場景圖。
【具體實施方式】
[0027]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
[0028]如圖1所示,基于storm的物聯網數據處理系統分為5個部分:插件管理器,數據預處理插件,語句解析插件,邏輯處理插件和功能執行插件。
[0029]插件管理器:負責加載、運行和管理插件。
[0030]數據預處理插件:數據預處理插件負責接收傳感器節點產生的物聯網數據,以及數據格式的預處理,將多結構的數據轉換為結構化數據格式。
[0031]語句解析插件:語句解析插件負責將用戶執行語句進行詞法語法解析,形成解析樹。
[0032]邏輯處理插件:邏輯處理插件通過解析樹提取語義并進行功能選擇,并將功能號和該功能執行需要的參數信息以json格式封裝在數據包中,發送給功能執行插件執行。例如,如果是查詢功能,則進行邏輯調優,形成最優邏輯樹,并且將功能號和最優邏輯樹的json格式封裝在數據包中發送。如果是創建流功能,則通過解析樹配置數據源的數據格式,并且將創建流功能號和數據格式的json格式封裝在數據包中發送。
[0033]功能執行插件:功能執行插件負責執行具體的功能,例如,如果是查詢則建立Topology提交storm集群運行。
[0034]插件管理器為本系統的管理模塊,不允許用戶做修改和定義,但提供了用戶修改和替換插件的接口。另外,插件管理器利用java中的代工設計模式提供了替換插件中部分功能模塊的功能,用戶可以根據需求,對于插件中的模塊功能進行替換,實現了不僅替換插件,并且替換插件內部模塊的功能。每個插件的模塊定義如圖2所示。其中每一個模塊都是獨立的功能抽象,用戶只要根據接口規范實現功能類并通過插件管理器,便可以修改插件內部申旲塊的功能。
[0035]數據預處理插件默認提供各類傳感器、RFID、二維碼和視屏流數據的接收,并對數據進行數據清理和結構化調整,可使用本系統自定義的csql語言中的create語句能夠描述的數據格式,create語句的巴科斯范式定義為〈” create” streamname “{”> {attribut1ntype”由于是插件化設計,用戶可以自定義數據預處理插件,將數據的數據格式預處理為系統能夠識別的數據格式,并通過create語句對系統進行定義,系統可以對數據進行處理。
[0036]語句解析插件默認使用antlr開發的詞法和語法解析器,解析的語言為自定義的csql語言,該語言的create語句由上一給出,而查詢語句語法與cql語言語法相同,其中詞法解析器主要分析用戶輸入的單詞是否正確,而語法解析器則通過每一個單詞的比對進行語法的校驗,csql語言主要提供的創建流語句、監聽流語句,刪除流語句和查詢語句的詞法和語法分析,并通過詞法和語法分析生成解析樹。如果用戶需要對于詞法和語法解析進行重新定義,則利用插件管理器移除語句解析插件并加載自定義插件,插件需要能夠接收數據采集插件采集的數據并能夠正確解析用戶傳入的語句。如果是部分解析功能需要調整,則通過實現解析接口,并利用插件管理器中的功能替換接口來傳入該解析實例,系統則會在該語句解析時調用用戶自定義解析,并輸