基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析應(yīng)用

   2024-06-03 53580
核心提示:本文將以 OSS 日志處理場(chǎng)景為例,演示使用 EMR Serverless Spark 產(chǎn)品快速搭建日志分析應(yīng)用。
 

背景

隨著互聯(lián)網(wǎng)服務(wù)的廣泛普及與技術(shù)應(yīng)用的深入發(fā)展,日志數(shù)據(jù)作為記錄系統(tǒng)活動(dòng)、用戶行為和業(yè)務(wù)操作的寶貴資源,其價(jià)值愈發(fā)凸顯。然而,當(dāng)前海量日志數(shù)據(jù)的產(chǎn)生速度已經(jīng)遠(yuǎn)遠(yuǎn)超出了傳統(tǒng)數(shù)據(jù)分析工具的處理能力,這不僅要求我們具備高效的數(shù)據(jù)收集和存儲(chǔ)機(jī)制,更呼喚著強(qiáng)大、靈活且易用的數(shù)據(jù)分析平臺(tái)的誕生。在此背景下,Apache Spark,這一專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的計(jì)算引擎,成為了構(gòu)建高性能日志分析應(yīng)用的理想選擇。

阿里云 EMR Serverless Spark 版是一款全托管、一站式的數(shù)據(jù)處理平臺(tái),基于Spark Native Engine構(gòu)建,專為大規(guī)模數(shù)據(jù)處理和分析設(shè)計(jì),提供彈性、高效的服務(wù),讓用戶無需關(guān)注基礎(chǔ)設(shè)施管理,100%兼容Spark,簡(jiǎn)化從開發(fā)到運(yùn)維的全鏈路工作流程。

本文將以 OSS 日志處理場(chǎng)景為例,演示使用 EMR Serverless Spark 產(chǎn)品快速搭建日志分析應(yīng)用。

OSS-HDFS 審計(jì)日志簡(jiǎn)介

阿里云的 OSS-HDFS 服務(wù),是專為大數(shù)據(jù)處理和云原生數(shù)據(jù)湖存儲(chǔ)設(shè)計(jì)的產(chǎn)品。該服務(wù)由阿里云的JindoFS提供技術(shù)支持,旨在無縫橋接阿里云對(duì)象存儲(chǔ)(OSS)與 HDFS 生態(tài)系統(tǒng),為 Apache Hadoop、Hive、Spark、Flink 等大數(shù)據(jù)處理框架提供高性能、高兼容性的存儲(chǔ)解決方案。

在阿里云 OSS 控制臺(tái)創(chuàng)建一個(gè)新的 OSS Bucket 時(shí)可以選擇開通 HDFS 服務(wù),創(chuàng)建完成后新的 OSS Bucket 即可支持 HDFS 接口訪問:

HDFS審計(jì)日志(Audit Log)是Hadoop分布式文件系統(tǒng)(HDFS)的一個(gè)重要組成部分,它詳盡地記錄了所有用戶對(duì) HDFS 執(zhí)行的操作信息。這些日志對(duì)于系統(tǒng)管理員監(jiān)控、安全審計(jì)以及故障排查至關(guān)重要。每當(dāng)用戶通過 HDFS 的 NameNode 執(zhí)行操作(如讀取、寫入、刪除文件或目錄等),NameNode 就會(huì)生成一條審計(jì)日志記錄。類似于開源版 HDFS,OSS-HDFS 默認(rèn)就支持 auditlog 日志,在根目錄下的 /.sysinfo/auditlog 目錄下保存了近一個(gè)月的審計(jì)日志,并且按照日期目錄進(jìn)行切分。

審計(jì)日志條目通常包含一些關(guān)鍵信息,比如操作時(shí)間、操作人、操作成功與否、來源IP、操作命令、操作目標(biāo)文件等。下面三條日志分別記錄了delete、getfileinfo和mkdir操作詳情:

1.jpg

EMR Serverless Spark 工作空間簡(jiǎn)介

使用 EMR Serverless Spark 產(chǎn)品之前,需要了解工作空間相關(guān)的概念,工作空間是 EMR Serverless Spark 為業(yè)務(wù)開發(fā)劃分的基本單元,是任務(wù)、資源和權(quán)限的集合。

接下去就可以參考產(chǎn)品的快速入門文檔來體驗(yàn):

1. 阿里云賬號(hào)角色授權(quán):開通工作空間的前置操作

2. 創(chuàng)建Spark工作空間:需要提前開通 OSS 和 DLF 等阿里云服務(wù)

3. SQL任務(wù)快速入門:接下去的 EMR Serverless Spark 任務(wù)開發(fā)會(huì)使用 SQL 任務(wù)

EMR Serverless Spark 任務(wù)開發(fā)

下面我們來演示如何通過EMR Serverless Spark搭建一個(gè)日志分析應(yīng)用。日志分析的一個(gè)很常見的需求是分析前一天訪問 OSS-HDFS Bucket 的來源IP,比如希望找到有來自某些IP的異常突發(fā)流量,或者在事后調(diào)查敏感文件是否被異常IP所訪問。

因?yàn)镾QL是在數(shù)據(jù)分析中最常用的工具,所以使用 Spark SQL 來分析OSS-HDFS的審計(jì)日志。前面我們已經(jīng)通過《SQL任務(wù)快速入門》對(duì) SparkSQL 類的任務(wù)有了簡(jiǎn)單的了解,這部分內(nèi)容會(huì)針對(duì)數(shù)據(jù)倉庫源數(shù)據(jù)層、明細(xì)層、匯總層分別創(chuàng)建一個(gè) SQL 任務(wù)。

源數(shù)據(jù)層

首先是日志文件的來源,我們要建立一個(gè)源數(shù)據(jù)層(ODS)的表,因?yàn)閷徲?jì)日志已經(jīng)被歸檔到OSS-HDFS的系統(tǒng)目錄里,所以我們可以通過Spark SQL建一個(gè)CSV外表:

1. 表路徑指向系統(tǒng)目錄 oss://<BUCKET_NAME>.<REGION_ID>.oss-dls.aliyuncs.com/.sysinfo/auditlog/ (在操作的時(shí)候需要將 BUCKET_NAME 和 REGION_ID 替換為實(shí)際使用的 OSS Bucket 名稱和所在地域)

2. 日志條目中的不同字段用制表符(tab)分隔,所以指定 sep = '\t'

3. ${ds} 是 Serverless Spark開發(fā)和調(diào)度平臺(tái)使用的內(nèi)置變量,代表業(yè)務(wù)日期(T-1)。比如在2024年5月21日運(yùn)行的SQL任務(wù),業(yè)務(wù)時(shí)間是指前一天,${ds}=2024-05-20(在這里無需手動(dòng)替換 ds 值)

把這個(gè)SQL文件(s_oss_hdfs_audit_tmp.sql)保存后,點(diǎn)擊發(fā)布。

數(shù)倉明細(xì)層

其次,我們要基于這個(gè)ODS外表創(chuàng)建一張數(shù)據(jù)倉庫明細(xì)層(DWD)表,以Parquet格式存儲(chǔ),并按天進(jìn)行分區(qū)。我們需要對(duì) ODS 表進(jìn)行簡(jiǎn)單的清晰和轉(zhuǎn)換,比如把a(bǔ)ccess_time從字符串轉(zhuǎn)換timestamp成類型,將字段內(nèi)容 ip=172.16.0.99 轉(zhuǎn)換為 IP 地址 172.16.0.99 等。這個(gè)SQL里同樣使用了 ${ds} 內(nèi)置變量。

把這個(gè)SQL文件(dwd_oss_hdfs_audit_di.sql)保存后,點(diǎn)擊發(fā)布。

數(shù)倉匯總層

最后,我們對(duì)數(shù)倉明細(xì)層數(shù)據(jù)做一個(gè)簡(jiǎn)單的分析,取出前一天請(qǐng)求量最大的20個(gè)IP地址,我們會(huì)創(chuàng)建一張 DWS 匯總表:

把這個(gè)SQL文件(dws_oss_hdfs_ip_ana.sql)保存后,點(diǎn)擊發(fā)布。

EMR Serverless Spark 任務(wù)編排

創(chuàng)建工作流

在前面的章節(jié)中,我們已經(jīng)分別在數(shù)據(jù)倉庫源數(shù)據(jù)層、明細(xì)層、匯總層各創(chuàng)建一個(gè) SQL 任務(wù),這些任務(wù)都處于“已發(fā)布”狀態(tài)。接下去我們需要?jiǎng)?chuàng)建一個(gè)工作流把這三個(gè)SQL任務(wù)進(jìn)行適當(dāng)?shù)木幣牛⑶易尮ぷ髁髂茉诿刻斓墓潭〞r(shí)間進(jìn)行調(diào)度。

在 Serverless Spark 工作空間的導(dǎo)航欄中找到“任務(wù)編排”鏈接,點(diǎn)擊“創(chuàng)建工作流”后進(jìn)入新建工作流 oss_hdfs_auditlog 的配置界面。在這個(gè)界面里需要填寫工作流名稱和資源隊(duì)列,同時(shí)可以選擇調(diào)度類型是“調(diào)度器”,調(diào)度周期是每天的 00:05。

編輯節(jié)點(diǎn)

在編輯工作流的頁面,鼠標(biāo)左鍵雙擊節(jié)點(diǎn),或者單擊下方的添加節(jié)點(diǎn),進(jìn)入節(jié)點(diǎn)編輯頁面。我們需要按順序選擇s_oss_hdfs_audit_tmp、dwd_oss_hdfs_audit_di、dws_oss_hdfs_ip_ana節(jié)點(diǎn),加入到工作流中。

同時(shí)也需要配置節(jié)點(diǎn)依賴關(guān)系,比如 dwd_oss_hdfs_audit_di 節(jié)點(diǎn)的上游節(jié)點(diǎn)是 s_oss_hdfs_audit_tmp,dws_oss_hdfs_ip_ana 節(jié)點(diǎn)的上游節(jié)點(diǎn)是 dwd_oss_hdfs_audit_di。

三個(gè)節(jié)點(diǎn)編輯完成之后,自動(dòng)生成如下 DAG,完成工作流的編輯。 

發(fā)布工作流

在工作流編輯頁面右上角,點(diǎn)擊“發(fā)布工作流”,在輸入發(fā)布信息后點(diǎn)擊“確認(rèn)”,完成工作流的發(fā)布。

發(fā)布工作流之后自動(dòng)跳轉(zhuǎn)回到工作流列表,我們可以看到新創(chuàng)建的工作流。打開“調(diào)度狀態(tài)”開關(guān),之后工作流會(huì)根據(jù)調(diào)度器的設(shè)置進(jìn)行按天調(diào)度。

點(diǎn)擊工作流名稱,進(jìn)入工作流調(diào)度實(shí)例列表,在這里可以看到每次調(diào)度運(yùn)行的成功或失敗的任務(wù)節(jié)點(diǎn),也可以點(diǎn)擊右上角的“手動(dòng)運(yùn)行”按鈕進(jìn)行一次手動(dòng)調(diào)度。

在每天凌晨的定時(shí)調(diào)度完成之后或者一次手動(dòng)調(diào)度成功之后,我們可以回到 SQL 任務(wù)開發(fā)界面,在編輯器中輸入如下 SQL 查詢語句,可以快速獲取到前一天請(qǐng)求 OSS-HDFS 數(shù)量最多的前 20 個(gè) IP 地址:

6.jpg

總結(jié)

本文演示了使用 Serverless Spark 產(chǎn)品搭建一個(gè)日志分析應(yīng)用的全流程,包括數(shù)據(jù)開發(fā)和生產(chǎn)調(diào)度以及交互式查詢等場(chǎng)景。

EMR Serverless Spark 在 2024年5月正式開啟公測(cè),在公測(cè)期間可以免費(fèi)使用最高 100 CU 計(jì)算資源,歡迎試用。如果您在使用 EMR Serverless Spark 版的過程中遇到任何疑問,可釘釘掃描以下二維碼加入釘釘群(群號(hào):58570004119)咨詢。

快速跳轉(zhuǎn)

1. EMR Serverless Spark 版官網(wǎng):https://www.aliyun.com/product/bigdata/serverlessspark

2. 產(chǎn)品控制臺(tái):https://emr-next.console.aliyun.com/

3. 產(chǎn)品文檔:https://help.aliyun.com/zh/emr/emr-serverless-spark/

4. SQL 任務(wù)快速入門:https://help.aliyun.com/zh/emr/emr-serverless-spark/getting-started/get-started-with-sql-task-development

 

 

 
 
更多>同類資訊
免責(zé)申明
推薦資訊
點(diǎn)擊排行
最新資訊更多>
最新供應(yīng)更多>
網(wǎng)站首頁  |  聯(lián)系方式  |  關(guān)于我們  |  問題解析  |  版權(quán)隱私  |  使用協(xié)議  |  網(wǎng)站地圖  |  排名推廣  |  廣告服務(wù)  |  積分換禮  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報(bào)  |  粵ICP備1207862號(hào)

中國(guó)智能化網(wǎng)(zgznh®)--引領(lǐng)工業(yè)智能化產(chǎn)業(yè)發(fā)展 共享智能化+優(yōu)質(zhì)平臺(tái)

版權(quán)所有:深圳市智控網(wǎng)絡(luò)有限公司 學(xué)術(shù)指導(dǎo):深圳市智能化學(xué)會(huì)

粵ICP備12078626號(hào)

深公網(wǎng)安備案證字第 4403101901094 號(hào) | 粵公網(wǎng)安備 44030702001206號(hào)