一種流式計算和批處理計算相結合處理系統及方法
【技術領域】
[0001] 本發明屬于流式計算和批處理計算的數據處理技術領域,尤其涉及一種流式計算 和批處理計算相結合處理系統及方法。
【背景技術】
[0002] 隨著科學、技術和工程的迅猛發展,近20年來,許多領域都產生了海量的數據,大 數據越來越引起人們的重視。大數據處理主要處理模式可以分為批處理和實時處理兩種, 批處理時數據首先被存儲,隨后被分析。實時處理則是一種動態的處理方式,在數據流入的 時候就進行計算,流式計算是實時處理的重要衍生模型。
[0003] 目前一部分專注于單一流式計算、單一批處理,采用單一計算模型進行數據處理, 但隨著數據量的大規模增長和用戶需求的日益多樣化,實際需求中人們對數據的處理要求 越來越高,單一的計算模型并不能獨立地承擔服務。另一部分專注流式處理與批處理的結 合,但未能有效地融合,現有的大數據分析系統在流式計算和批處理計算融合方面工作,主 要采用三種方式:
[0004] 第一種方式:在流式計算系統的基礎上,增加對批處理計算的支持。此方法在批處 理層僅需要考慮數據和數據上的查詢函數,批處理層因此很好掌控。在實時層需要使用增 量算法和復雜的NoSQL數據庫,把所有的復雜問題獨立到實時層中,這對系統的魯棒性、可 靠性可以做出重要改進。但是,在實際的實現中,通過建立簡單而統一的數據查詢函數并不 是一件容易的事情,以往基于關系型的數據庫系統是建立在完整的關系模型上的數據處理 系統,所以應對不同種類的結構化和非結構化數據是很難存在這樣的簡單函數模型。
[0005] 第二種方式:從批處理計算的基礎入手,結合流式數據處理,比如通過修改 MapReduce編程模型來進行實時數據流處理。這類基于MapReduce流式處理存在幾個缺點: a)將輸入數據分隔成固定大小的片段,再由MapReduce平臺處理,處理的延遲與數據片段的 長度、初始化處理任務的開銷成正比,片段之間的依賴管理更加復雜,最優的分段大小取決 于具體應用;b)為了支持流式處理,MapReduce被改造成Pipel ine的模式,而不是Reduce直 接輸出。為了提高處理效率,中間結果只保存在內存中。諸如此類改動使得原有的 MapReduce框架的復雜度大大增加,不利于系統的維護和擴展;c)用戶被迫使用MapReduce 的接口來定義流式作業,這使得用戶程序的可伸縮性降低。
[0006] 第三種方式:關聯組合模式。以Twitter Summingbird舉例來說,盡管Summingbird 利用統一的編程接口來整合平臺,通用性好,可擴展性強,但在實際操作中執行效率不夠理 想。
【發明內容】
[0007] 本發明針對現有技術中存在的上述問題,提供一種數據處理效率高并對數據查詢 方法進行了優化的一種流式計算和批處理計算相結合處理系統。
[0008] 本發明的實施例提供一種流式計算和批處理計算相結合處理系統,包括:
[0009]基礎設施層,用于提供系統運行的硬件環境,包括虛擬化、機房、網絡及集群;
[0010]數據存儲管理層,用于存儲分布式數據,保存處理后的實時數據與批處理數據,同 時對元數據進行管理;
[0011] 數據計算層,用于提供流式計算與批處理計算方式;
[0012] 任務調度層,用于對系統任務進行調度,并對系統作業進行判斷,根據判斷結果控 制數據計算層對元數據進行實時處理或者批處理;
[0013] 數據分析層,用于對處理后的數據進行數據分析;
[0014] 數據視圖及查詢優化層,用于提供數據實時處理視圖、數據批處理視圖及查詢優 化;
[0015] 數據展示層,用于提供數據分析結果的可視化信息。
[0016] 優選地,所述數據計算層包括:
[0017] 流計算框架,用于當所述任務調度層判斷系統當前作業為實時處理作業時用于對 流式數據進行處理;
[0018] 批處理計算框架,用于當所述任務調度層判斷系統當前作業為批處理作業時用于 對流式數據進行處理。
[0019] 優選地,所述數據視圖及查詢優化層包括:
[0020] 實時視圖處理模塊,采用增量算法把流計算框架計算產生的結果保存到所述數據 存儲管理層中,并形成不同的實時處理視圖;
[0021] 批處理視圖模塊,將批處理計算框架計算產生的結果保存到所述數據存儲管理層 中,并形成不同的批處理視圖;
[0022] 查詢優化模塊,用于提供用戶利用關鍵字查詢某一段時間或者某一段距離前后的 流式處理和批處理的數據。
[0023]優選地,所述優化查詢模塊包括:
[0024] 語法分析單元,用于接收用戶輸入的字符串,并進行語法分析,輸出抽象語法樹;
[0025] 語意分析單元,用于根據抽象語法樹進行語意分析,生成LogicalPlan及系統可識 別的DAG;
[0026] 優化策略執行單元,用于對LogicalPlan進行優化過濾掉不需要的數據;
[0027]交付執行單元,用于將LogicalPlan轉換為RDD在Spark集群上真正進行數據分析。 [0028]本發明的實施例還提供一種流式計算和批處理計算相結合處理方法,包括以下步 驟:
[0029] 搭建系統運行的硬件環境,包括虛擬化、機房、網絡及集群;
[0030] 獲取工作指令,對系統任務進行調度,并對系統作業進行判斷,根據判斷結果控制 對元數據進行實時處理或者批處理;
[0031] 對處理后的實時數據、批處理數據進行及元數據進行存儲管理;
[0032] 形成不同的數據實時處理視圖及數據批處理視圖并進行顯示,同時提供數據處理 的查詢優化。
[0033] 優選地,獲取工作指令,對系統任務進行調度,并對系統作業進行判斷,根據判斷 結果控制對元數據進行實時處理或者批處理的步驟具體為:
[0034] 獲取工作指令,對系統作業進行調度,同時,對作業進行判斷;
[0035]若為實時處理作業,則采用流式處理技術進行實時數據處理,將流式計算分解成 一系列短小的批處理作業,即把輸入數據按照batch size分成一段一段的數據,每一段數 據都轉換成Spark中的RDD,然后Spark Streaming中對DStream的Transformat ion操作變為 針對Spark中對RDD的Transformat ion操作,將RDD經過操作變成中間結果保存在內存中; [0036]若為批處理作業,則采用批處理技術進行批處理,將分布式數據集抽象成彈性分 布式數據集,實現了應用任務調度、RPC、序列化和壓縮,并為其運行在其上的上層提API,并 將數據在分布式環境下分區,然后將作業轉化為有向無環圖,并分階段進行DAG的調度和任 務的分布式并行處理。
[0037]優選地,所述形成不同的數據實時處理視圖及數據批處理視圖并進行顯示的步驟 具體包括:
[0038]采用增量算法把實時處理計算的結果進行存儲,形成不同的實時處理圖;以及將 所述批處理計算的結果進行存儲,并形成不同的批處理視圖。
[0039] 優選地,所述提供數據處理的查詢優化的方法為,用戶可利用關鍵字查詢某一段 時間或者某一段距離前后的流式處理和批處理的數據。
[0040] 優選地,還包括以下步驟:
[0041 ]語法分析:接收用戶輸入的字符串,并進行語法分析,輸出抽象語法樹;
[0042] 語音分析:根據抽象語法樹進行語意分析,生成LogicalPlan及系統可識別的DAG;
[0043] 優化策略執行:對LogicalPlan進行優化過濾掉不需要的數據;
[0044]交付執行:將LogicalPlan轉換為RDD在Spark集群上真正進行數據分析。
[0045] 優選地,所述語法分析的步驟,具體為:
[0046] 按照定義好的詞法,將輸入的字符集轉換為單詞;
[0047] 在詞法分析的基礎上,來判斷用戶輸入的單詞是否符合語法邏輯;
[0048] 根據分析過程輸出抽象語法樹。
[0049] 以上技術方案中,對系統任務進行調度時,對系統作業進行判斷,根據判斷結果控 制對元數據進行實時處理或者批處理,從系統級層面上實現了不同計算模型之間的互操 作,有效提高了容錯處理效率,同時優化了數據查詢方法,更加方便了歷史數據和實時數據 的聯合分析。
【附圖說明】
[0050] 圖1為