對于Flink,Spark在Yarn上提交的LongTime Job(比如一個批處理作業(yè)要運行幾個小時或者本身就是實時作業(yè)),其作業(yè)的運行日志我們不能等到作業(yè)結(jié)束后,通過Yarn日志聚合后查看,我們希望作業(yè)提交后就能夠馬上看到運行日志(這里注意,你的作業(yè)被調(diào)度到集群的各個計算節(jié)點中,比如你的集群有100個節(jié)點,你的作業(yè)可能被調(diào)度到幾十個個節(jié)點中),如何能夠?qū)崟r方面的查看所有節(jié)點產(chǎn)生的日志呢?
# 總體思路,無論是spark,flink 都使用log4j記錄日志,只不過默認輸出是Console和文件,我們通過定義 log4j 文件,將日志實時發(fā)送到一個位置,集中管理。
* 方案1: 定義log4j KafkaAppender,將日志異步發(fā)送到Kafka,之后可以將數(shù)據(jù)發(fā)送到ES,通過Kibana查看即可
* 方案2: 定義log4j SyslogAppender,將日志發(fā)送到rsyslog服務器(基于UDP傳輸,更高效),所有節(jié)點日志可以落到本地文件,這樣可以在這里通過文件查看日志,當然也可以接上ELK這一套。
# 方案1比方案2要重一些,因為你需要Kafka集群,而rsyslog非常輕量,并且數(shù)據(jù)通過UDP協(xié)議傳輸更為高效。
更多關(guān)于大數(shù)據(jù)培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。