申海杰 田新志 陳曉范



摘要:為提供具有前沿性的計算機課程實驗,針對新一代大數據技術,設計并實現了基于Apache Beam的大數據實驗教學方案。該方案在可以使學生們清楚地了解 Beam 的運用原理。
關鍵詞:大數據;Apache Beam;實驗教學
中圖分類號:G424? ? ? ? 文獻標識碼:A? ? ? ? 文章編號:1009-3044(2019)01-0158-02
1 引言
隨著大數據 2.0 時代悄然到來,大數據從簡單的批處理擴展到了實時處理、流處理、交互式查詢和機器學習應用。早期的處理模型 (Map/Reduce) 早已經力不從心,而且也很難應用到處理流程長且復雜的數據流水線上。面對這種情況,Google 在 2017 年 5 月2發布了其開源大數據流水線產品Apache Beam的第一個穩定版本 2.0.0[1]。
Apache Beam是一個開源的統一的編程模型,我們可以使用它來創建數據處理管道。Beam對于尷尬并行數據處理任務特別有用,其中問題可以被分解為可以獨立和并行處理的許多較小的數據束[2]。
2 實驗方案
為了讓學生有效地了解和掌握Beam的運行原理,我們精心設計了實驗方案,精簡地說明如下。
本實驗方案通過在選定一個的 runner 上運行一個由 Beam 的 Java SDK 編寫的 WordCount 示例,演示Beam 的運用原理。
第一步是搭建一個管道(Pipeline)。
第二步是讓管道有一個處理框架,也就是Runtimes 。
第三步也是 Beam 最后一個重要的地方,就是模型 (Model),通俗點講就是我們的數據來源。
最后一步是處理結果,實驗者可以根據自己的需求處理。
2.1 配置開發環境
第一步 ,從網上下載并安裝 Java Development Kit (JDK) 1.7 或更高版本。并配置 JAVA_HOME 環境變量,確認已經設置并指向 JDK 安裝目錄。如圖1所示。
第二步,按照 Maven 的 安裝指南 下載并安裝適合JDK所在的操作系統的 Apache Maven 。這個步驟,安裝的界面較多,這里就不贅述了。
2.2 實驗代碼
獲得一份 WordCount 管線代碼拷貝最簡單的方法,就是使用下列指令來生成一個簡單的、包含基于 Beam 最新版的 WordCount 示例和構建的 Maven 項目,操作指令如圖2所示。
2.3 運行實例
一個單 Beam 管線可以運行于多種 Beam runner 上,包括 ApexRunner、FlinkRunner、SparkRunner 或 DataflowRunner 等[3]。
用 --runner=<runner> 選項指定選定的 runner (缺省為 DirectRunner)
運行WordCount 管線。
2.4 實驗結果
管線完成運行的結果會發現生成多個以 count 打頭的輸出文件。具體會有幾個這樣的文件是由 runner 決定的。這樣能方便 runner 進行高效的分布式執行。當查看文件內容的時候,會看到里面包含每個單詞的出現數量。文件中的元素順序可能會和這里看到的不同。因為 Beam 模型通常并不保障順序,以便于 runner 優化效率[4]。
3 結束語
通過以上實驗可以看到,利用 Beam 的模型,不需要編寫復雜的邏輯,就可以靈活地/優雅地處理流處理計算過程中出現的一些棘手場景。Apache Beam 是集成了很多數據模型的一個統一化平臺,它為大數據開發人員頻繁換數據源或多數據源、多計算框架提供了集成統一框架平臺。
參考文獻:
[1]? Apache Beam Team. Apache Beam Quickstart.[EB/OL].(2017-3-21). https://beam.apache.org/get-started/quickstart-java/
[2]? Apache Beam實戰指南之基礎入門[EB/OL].(2017-10-9). https://juejin.im/entry/59db31806fb9a00a53279ca6
[3]? Google 大數據引擎 Apache Beam Java SDK 快速入門[EB/OL].(2017-1-23). https://www.jianshu.com/p/283a8c8edef7
[4] Beam從零開始.[EB/OL].(2017-1-19). https://blog.csdn.net/qq_23660243/article/details/54614167