本文主要分兩部分,第一部分(前三章)介紹了當(dāng)前國內(nèi)外在海量數(shù)據(jù)處理方面的成果及相關(guān)技術(shù),第二部分(后三章)是基于hadoop的大規(guī)模日志處理系統(tǒng)架構(gòu)設(shè)計及具體實現(xiàn)。
1.1. 課題背景
近年來,隨著近年來互聯(lián)網(wǎng)技術(shù)的日趨成熟,用戶數(shù)量規(guī)模正在急劇增加,據(jù)不完全統(tǒng)計,截止今日,中國的互聯(lián)網(wǎng)用戶數(shù)已經(jīng)達(dá)到了3.5億人,如此眾多的互聯(lián)網(wǎng)用戶必將產(chǎn)生海量日志,從這些數(shù)據(jù)中可以挖掘有用信息進(jìn)而基于此做大數(shù)據(jù)預(yù)測及個性化推薦。
目前大多數(shù)互聯(lián)網(wǎng)公司都在想盡一切辦法盡可能合理地分析這些日志,隨著日志數(shù)量的急劇增長,傳統(tǒng)的linux管道加bash,perl腳本等傳統(tǒng)的解決方案已經(jīng)不再適用,尋求海量日志的分布式存儲系統(tǒng)和計算框架成為當(dāng)務(wù)之急。
幸好開源社區(qū)已經(jīng)有了haoop這樣成熟的解決方案。hadoop作為一個分布式的基礎(chǔ)架構(gòu),同時滿足了海量數(shù)據(jù)存儲和計算兩大難題,成為當(dāng)今互聯(lián)網(wǎng)企業(yè)中應(yīng)用最廣泛的分布式大數(shù)據(jù)處理框架。
解決了存儲和計算層面的問題,另一些hadoop層之上的問題又暴露了出來,比如多用戶使用時如何合理地設(shè)置權(quán)限及優(yōu)先級?若某些統(tǒng)計作業(yè)有上下游依賴關(guān)系,怎樣才能保證上游數(shù)據(jù)就位后下游作業(yè)的調(diào)度沒有延遲?有什么辦法可以讓不懂mapreduce的用戶也能使用hadoop的編程框架? 除此之外還有作業(yè)結(jié)束后報表的生成、完整的作業(yè)監(jiān)控等核心模塊需要兼顧。
本課題的主要任務(wù)就是設(shè)計一套大規(guī)模日志處理系統(tǒng),可以同時解決(但不限于)以上問題。
1.2. 課題概要
本文擬設(shè)計一個綜合的日志分析管理系統(tǒng),它主要集合了統(tǒng)計管理,任務(wù)調(diào)度,數(shù)據(jù)管理和報表生成等主要功能。
本系統(tǒng)以產(chǎn)品線的概念來區(qū)分不同用戶,不同數(shù)據(jù)源,不同集群的統(tǒng)計任務(wù)和日志,可以為各個產(chǎn)品線提供高效可靠的分析服務(wù)。由于具有足夠的人性化和高可用性,不同產(chǎn)品線的用戶只要在系統(tǒng)的前端ui界面上完成一些簡單的操作就可以建立高效地統(tǒng)計任務(wù)實現(xiàn)對海量數(shù)據(jù)的分析處理,并且可以根據(jù)用戶的個性化設(shè)置以報表或者文件的形式獲取分析結(jié)果。
本系統(tǒng)的核心優(yōu)勢在于:
- 存儲、計算能力強(qiáng)
系統(tǒng)底層基于hadoop基礎(chǔ)架構(gòu),采用hdfs來進(jìn)行分布式數(shù)據(jù)存儲,可以在不改變現(xiàn)有架構(gòu)的情況下簡單的通過增加機(jī)器(datanode)來擴(kuò)容,實現(xiàn)對海量數(shù)據(jù)的存儲;采用mapreduce框架來進(jìn)行分布式計算,可以高效的實現(xiàn)對大規(guī)模數(shù)據(jù)的并行處理。 - 資源高度封裝
系統(tǒng)對底層的計算資源進(jìn)行了高度封裝,根據(jù)業(yè)務(wù)的不同,在普通服務(wù)器和hadoop集群兩種不同的環(huán)境下執(zhí)行。同樣由于在計算資源之上封裝了一層,對各產(chǎn)品線用戶來說,兩種計算資源的使用并沒有太大的差異,節(jié)省了用戶寫代碼的成本。 - 統(tǒng)計編寫簡單,配置靈活
系統(tǒng)為用戶提供了pquery和streaming兩種不同的統(tǒng)計創(chuàng)建模式。pquery模式允許用戶采用類似linux管道的方式編寫復(fù)雜統(tǒng)計,支持多種sql算子,如join,group,sort, semisort,antisort等;streaming模式允許用戶采用熟悉的腳本語言編寫mapreduce程序創(chuàng)建統(tǒng)計任務(wù)。 - 分級調(diào)度,智能調(diào)整
系統(tǒng)采取了多種方式來對用戶作業(yè)進(jìn)行了合理限制,如底層hadoop采用計算能力調(diào)度器,嚴(yán)格限制各產(chǎn)品線所在隊列的計算槽數(shù)和可提交任務(wù)數(shù),系統(tǒng)層通過完善的權(quán)限角色管理,對不同角色的缺陷進(jìn)行了明確區(qū)分,不允許具有低等級角色權(quán)限的用戶給作業(yè)賦予高優(yōu)先級。在以上基礎(chǔ)上,系統(tǒng)按照統(tǒng)計的重要性進(jìn)行分級,并實現(xiàn)分級調(diào)度,保證高優(yōu)先級統(tǒng)計有限分配計算資源。同時系統(tǒng)可以實現(xiàn)對統(tǒng)計任務(wù)的智能監(jiān)控,對無人關(guān)注的統(tǒng)計進(jìn)行及時的降級處理,防止計算資源被無謂的任務(wù)耗費。 - 自身監(jiān)控完善
系統(tǒng)對任務(wù)的資源占用情況,任務(wù)的運行有完善的監(jiān)控,對于任務(wù)運行時間過長,高優(yōu)先級任務(wù)運行失敗都會根據(jù)優(yōu)先級采取郵件、短信等方式及時告知用戶。
1.3. 論文組織結(jié)構(gòu)
論文第一章簡要介紹了本課題的背景及所設(shè)計的日志處理系統(tǒng)(以下簡稱系統(tǒng))特性的簡要介紹。
論文第二章對系統(tǒng)底層所用到的分布式基礎(chǔ)架構(gòu)hadoop做了針對性介紹,包含其分布式文件系統(tǒng)hdfs(Hadoop Distributed Filesystem)和分布式計算框架mapreduce。
論文第三、四、五章分別介紹了系統(tǒng)的業(yè)務(wù)背景,架構(gòu)設(shè)計和具體實現(xiàn),以及系統(tǒng)的整體展示。
最后一章指出了該系統(tǒng)有待改進(jìn)的地方。