1. 程式人生 > >構建企業級資料湖?Azure Data Lake Storage Gen2實戰體驗(中)

構建企業級資料湖?Azure Data Lake Storage Gen2實戰體驗(中)

引言

相較傳統的重量級OLAP資料倉庫,“資料湖”以其資料體量大、綜合成本低、支援非結構化資料、查詢靈活多變等特點,受到越來越多企業的青睞,逐漸成為了現代資料平臺的核心和架構正規化。

因此資料湖相關服務成為了雲端計算的發展重點之一。Azure平臺早年就曾釋出第一代Data Lake Storage,隨後微軟將它與Azure Storage進行了大力整合,於今年初正式對外發布了其第二代產品:Azure Data Lake Storage Gen2 (下稱ADLS Gen2)。ADLS Gen2的口號是“不妥協的資料湖平臺,它結合了豐富的高階資料湖解決方案功能集以及 Azure Blob 儲存的經濟性、全球規模和企業級安全性”。

全新一代的ADLS Gen2實際體驗如何?在架構及特性上是否堪任大型資料湖應用的主儲存呢?在上篇文章中,我們已對ADLS Gen2的基本操作和許可權體系有了初步的瞭解。接下來讓我們繼續深入探究,尤其是關注ADLS Gen2作為儲存層掛載到大資料集群后的表現。

ADLS Gen2體驗:叢集掛載

資料湖儲存主要適用於大資料處理的場景,所以我們選擇建立一個HDInsight大資料叢集來進行實驗,使用Spark來訪問和操作資料湖中的資料。可以看到HDInsight已經支援ADLS Gen2了:

  接下來是比較關鍵的儲存配置環節,我們指定使用一個新建的ADLS Gen2例項hdiclusterroot來作為整個叢集的儲存,檔案系統名為hdfs-root,如圖所示:

(圖中我們還配置了Additional storage accounts,用於掛載傳統Blob,之後作效能對比時會用到。此處暫不展開。)

很有意思的是上圖的下半部分,它允許我們指定一個Identity,這個Identity可以代表Spark叢集的身份和訪問許可權。這非常關鍵,意味著叢集的身份能夠完美地與ADLS Gen2的許可權體系對應起來,在企業級的場景中能夠很好地落地對於大資料資源訪問的管控。

這裡選擇了專門建立的一個spark-cluster-identity作為叢集的身份。我們事先為它賦予了hdiclusterroot這個儲存賬號的storage blob data owner許可權,以便該identity能夠對資料湖中的資料進行任意操作:

完成其他配置後按下建立按鈕,Azure會一鍵生成Spark叢集,大約十來分鐘後整個叢集就進入可用狀態了:

我們迫不及待地SSH登入進叢集,檢視其預設掛載的檔案系統。嘗試使用hadoop fs -ls列出根目錄下的檔案資訊:

sshuser@hn0-cloudp:~$ hadoop fs -ls /
Found 18 items
drwxr-xr-x   - sshuser sshuser          0 2019-08-26 03:10 /HdiNotebooks
drwxr-xr-x   - sshuser sshuser          0 2019-08-26 03:29 /HdiSamples
drwxr-x---   - sshuser sshuser          0 2019-08-26 02:54 /ams
drwxr-x---   - sshuser sshuser          0 2019-08-26 02:54 /amshbase
drwxrwx-wt   - sshuser sshuser          0 2019-08-26 02:54 /app-logs
drwxr-x---   - sshuser sshuser          0 2019-09-06 07:41 /apps
drwxr-x--x   - sshuser sshuser          0 2019-08-26 02:54 /atshistory
drwxr-xr-x   - sshuser sshuser          0 2019-08-26 03:25 /custom-scriptaction-logs
drwxr-xr-x   - sshuser sshuser          0 2019-08-26 03:19 /example
drwxr-x---   - sshuser sshuser          0 2019-08-26 02:54 /hbase
drwxr-x--x   - sshuser sshuser          0 2019-09-06 07:41 /hdp
drwxr-x---   - sshuser sshuser          0 2019-08-26 02:54 /hive
drwxr-x---   - sshuser sshuser          0 2019-08-26 02:54 /mapred
drwxrwx-wt   - sshuser sshuser          0 2019-08-26 03:19 /mapreducestaging
drwxrwx-wt   - sshuser sshuser          0 2019-08-26 02:54 /mr-history
drwxrwx-wt   - sshuser sshuser          0 2019-08-26 03:19 /tezstaging
drwxr-x---   - sshuser sshuser          0 2019-08-26 02:54 /tmp
drwxrwx-wt   - sshuser sshuser          0 2019-09-09 02:31 /user

將檔案列表和ADLS Gen2比對,可以看到這裡的“根目錄”事實上就完全對應著hdiclusterroot這個資料湖例項下hdfs-root檔案系統中的資料,這說明叢集實現了該資料湖檔案系統的掛載:

那麼,這樣的遠端掛載是如何實現的呢?開啟叢集的core-site.xml 配置檔案,答案在fs.defaultFS配置節中:

<property>
    <name>fs.defaultFS</name>
    <value>abfs://[email protected]</value>
    <final>true</final>
</property>

原來,與通常使用hdfs不同,叢集的fs.defaultFS在建立時就被設定為了以abfs為開頭的特定url,該url正是指向我們的資料湖儲存。這個ABFS驅動(Azure Blob File System)是微軟專門為Data Lake Storage Gen2開發,全面實現了Hadoop的FileSystem介面,為Hadoop體系和ADLS Gen2架起了溝通橋樑。

為證明資料湖檔案系統能夠正常工作,我們來執行一個經典的WordCount程式。筆者使用AzCopy往資料湖中上傳了一本小說《雙城記》 (ATaleOfTwoCities.txt),然後到HDInsight叢集自帶的Jupyter Notebook裡通過Scala指令碼運用Spark來進行詞頻統計:

Great! 我們的Spark on ADLS Gen2實驗完美執行,過程如絲般順滑。

小結

Azure Data Lake Storage Gen2是微軟Azure全新一代的大資料儲存產品,專為企業級資料湖類應用所構建。它繼承了Azure Blob Storage易於使用、成本低廉的特點,同時又加入了目錄層次結構、細粒度許可權控制等企業級特性。

作為ADLS Gen2系列的第二篇,本文主要實踐了大資料叢集掛載ADLS Gen2作為主儲存的場景,在證明ADLS Gen2具備良好Hadoop生態相容性的同時,也體驗了與傳統HDFS不同的儲存計算分離架構。該種架構由於可獨立擴充套件計算和儲存部分,非常適合雲端特點,正受到越來越多的歡迎。後續我們還將探索ADLS Gen2的更多特性,敬請關注。

關聯閱讀:

構建企業級資料湖?Azure Data Lake Storage Gen2實戰體驗(上)

“雲間拾遺”專注於從使用者視角介紹雲端計算產品與技術,堅持以實操體驗為核心輸出內容,同時結合產品邏輯對應用場景進行深度解讀。歡迎掃描下方二維碼關注“雲間拾遺”微信公眾號,或訂閱本部落格。

&n