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