一種日志處理方法及裝置的制造方法
【專利摘要】本發(fā)明公開(kāi)了一種日志處理方法及裝置,對(duì)不同的實(shí)時(shí)性處理需求,采用不同的方式處理相應(yīng)的日志信息,實(shí)現(xiàn)對(duì)日志信息的實(shí)時(shí)快速處理與非實(shí)時(shí)高效處理的目的。所述日志處理方法包括:將節(jié)目播放日志實(shí)時(shí)記錄到Kafka中;根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從所述Kafka中記錄的日志中讀取所述實(shí)時(shí)統(tǒng)計(jì)指令所指信息并對(duì)讀取的信息實(shí)時(shí)處理;并按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中進(jìn)行離線處理;其中,所述預(yù)設(shè)的時(shí)間周期小于所述Kafka中日志刪除的時(shí)間周期。該方法能夠根據(jù)實(shí)際處理需求,讀取相應(yīng)的日志信息,實(shí)現(xiàn)對(duì)日志信息的實(shí)時(shí)與非實(shí)時(shí)的高效處理。
【專利說(shuō)明】
一種日志處理方法及裝置
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及多媒體技術(shù)領(lǐng)域,尤其涉及一種日志處理方法及裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,數(shù)字電視或網(wǎng)絡(luò)電視等得到了普遍應(yīng)用。對(duì)于電視或視頻運(yùn)營(yíng)商而言,統(tǒng)計(jì)分析諸多用戶對(duì)各種節(jié)目的喜好程度或播放習(xí)慣如某個(gè)節(jié)目的觀看頻率、播放時(shí)長(zhǎng)、播放時(shí)間等是非常重要的,因此,電視或視頻運(yùn)營(yíng)商都需要對(duì)節(jié)目播放日志進(jìn)行記錄及統(tǒng)計(jì)。
[0003]目前,對(duì)節(jié)目播放日志進(jìn)行處理的方法主要有采用消息隊(duì)列記錄日志并實(shí)時(shí)統(tǒng)計(jì)以及大數(shù)據(jù)存儲(chǔ)日志并事后離線統(tǒng)計(jì)兩種方法。采用消息隊(duì)列處理日志的方法對(duì)日志的處理速度快,得到的統(tǒng)計(jì)結(jié)果實(shí)時(shí)性好,但是由于消息隊(duì)列不能長(zhǎng)時(shí)間存儲(chǔ)數(shù)據(jù),因此無(wú)法進(jìn)行長(zhǎng)時(shí)段的統(tǒng)計(jì),如周、月、季度統(tǒng)計(jì)等。采用大數(shù)據(jù)如Hadoop文件存儲(chǔ)系統(tǒng)(HadoopDistributed File System,HDFS)對(duì)日志進(jìn)行存儲(chǔ)后離線統(tǒng)計(jì)的方法,具有日志存儲(chǔ)量大,能夠進(jìn)行長(zhǎng)時(shí)段內(nèi)日志統(tǒng)計(jì)的優(yōu)點(diǎn),但是由于需要進(jìn)行日志數(shù)據(jù)的大量存儲(chǔ)及統(tǒng)計(jì),存在處理速度比消息隊(duì)列處理方法慢,實(shí)時(shí)性不夠好的問(wèn)題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種日志處理方法及裝置,通過(guò)根據(jù)實(shí)時(shí)性處理要求,獲取相關(guān)日志信息,采用Storm處理Kafka中記錄的實(shí)時(shí)統(tǒng)計(jì)相關(guān)的日志信息,并采用Hadoop分布式文件系統(tǒng)存儲(chǔ)離線統(tǒng)計(jì)相關(guān)的日志信息后再對(duì)其離線處理,兼具實(shí)時(shí)性日志信息快速處理及非實(shí)時(shí)性日志信息大數(shù)據(jù)存儲(chǔ)后離線處理的優(yōu)點(diǎn)。
[0005]本發(fā)明提供一種日志處理方法,包括:
[0006]將節(jié)目播放日志實(shí)時(shí)記錄到Kafka中;
[0007]根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從所述Kafka中記錄的日志中讀取所述實(shí)時(shí)統(tǒng)計(jì)指令所指信息并對(duì)讀取的信息實(shí)時(shí)處理;并按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中進(jìn)行離線處理;其中,所述預(yù)設(shè)的時(shí)間周期小于所述Kafka中日志刪除的時(shí)間周期。
[0008]本發(fā)明實(shí)施例的一些有益效果可以包括:
[0009]所述日志處理方法根據(jù)實(shí)時(shí)處理需求將相關(guān)的日志信息實(shí)時(shí)統(tǒng)計(jì)分析,并按照預(yù)定時(shí)間周期,根據(jù)離線處理需求從Kafka獲取相關(guān)日志信息存入Hadoop分布式文件系統(tǒng)中以便于以后離線分析處理,兼具需要實(shí)時(shí)處理的日志信息快速處理及需要離線處理的日志信息大數(shù)據(jù)存儲(chǔ)后離線處理的優(yōu)點(diǎn)。
[0010]在一個(gè)實(shí)施例中,所述根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從所述Kafka中記錄的日志中讀取所述實(shí)時(shí)統(tǒng)計(jì)指令所指信息并對(duì)讀取的信息實(shí)時(shí)處理,包括:
[0011]根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從所述Kafka中記錄的日志中讀取所述實(shí)時(shí)統(tǒng)計(jì)指令所指信息;
[0012]使用Storm對(duì)讀取到的信息進(jìn)行分析統(tǒng)計(jì)。
[0013]在該實(shí)施例中,日志數(shù)據(jù)的存儲(chǔ)采用Kafka,在需要實(shí)時(shí)統(tǒng)計(jì)時(shí),根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從Kaf ka中獲得相關(guān)數(shù)據(jù),統(tǒng)計(jì)算法采用storm統(tǒng)計(jì),數(shù)據(jù)的處理速度快。
[0014]在一個(gè)實(shí)施例中,所述按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中進(jìn)行離線處理,包括:
[0015]按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息;
[0016]將本次讀取到的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中;
[0017]根據(jù)用戶輸入的離線統(tǒng)計(jì)指令,在Hadoop平臺(tái)上對(duì)所述Hadoop分布式文件系統(tǒng)中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì)。
[0018]在該實(shí)施例中,根據(jù)預(yù)設(shè)的時(shí)間周期,周期性地將Kafka中需要離線處理的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中,然后根據(jù)離線統(tǒng)計(jì)指令,在Hadoop平臺(tái)上對(duì)這些信息進(jìn)行離線分析,由于Hadoop平臺(tái)能夠大數(shù)據(jù)處理,該方法減少了單一采用Kafka存儲(chǔ)及處理日志的數(shù)據(jù)量,而且能夠?qū)Σ恍枰獙?shí)時(shí)處理的大量數(shù)據(jù)進(jìn)行離線高速運(yùn)算和存儲(chǔ)。
[0019]在一個(gè)實(shí)施例中,所述在Hadoop平臺(tái)上對(duì)所述Hadoop分布式文件系統(tǒng)中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì),包括:
[0020]在Hadoop平臺(tái)上采用數(shù)據(jù)挖掘中的分類、回歸分析、聚類算法中的任一種算法對(duì)所述Hadoop分布式文件系統(tǒng)中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì)。
[0021]在一個(gè)實(shí)施例中,所述將本次讀取到的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中,包括:
[0022]使用Storm對(duì)本次讀取到的信息進(jìn)行處理;
[0023]將使用Storm處理后的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中。
[0024]在一個(gè)實(shí)施例中,所述將使用Storm處理后的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中,包括:
[0025]通過(guò)Storm中的邏輯處理組件bolt直接將使用Storm處理后的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中。
[0026]在一個(gè)實(shí)施例中,所述按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息之前,還包括:
[0027]將Kafka的每個(gè)主題topic的分區(qū)partat1n抽象為Hadoop MapReduce中的一個(gè)文件分片split;
[0028]基于所述文件分片split編寫(xiě)用于將信息從Kafka輸出到Hadoop分布式文件系統(tǒng)的MapReduce程序;所述MapReduce程序中預(yù)先設(shè)置有所述時(shí)間周期;
[0029]所述將本次讀取到的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中,包括:根據(jù)所述MapReduce程序,將本次讀取到的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中。
[0030]該實(shí)施例中,預(yù)先將Kafka的每個(gè)主題topic的分區(qū)partat1n抽象為HadoopMapReduce中的一個(gè)split,編寫(xiě)將信息從Kafka輸出到Hadoop分布式文件系統(tǒng)的MapReduce程序,則在將Kafka中需要離線處理的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中時(shí)可直接根據(jù)該MapReduce程序進(jìn)行數(shù)據(jù)的轉(zhuǎn)移存儲(chǔ),存儲(chǔ)簡(jiǎn)單快捷。
[0031]本發(fā)明提供一種日志處理裝置,包括:
[0032]記錄模塊,用于將節(jié)目播放日志實(shí)時(shí)記錄到Kafka中;
[0033]處理模塊,用于根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從所述記錄模塊的Kafka中記錄的日志中讀取所述實(shí)時(shí)統(tǒng)計(jì)指令所指信息并對(duì)讀取的信息實(shí)時(shí)處理;并按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中進(jìn)行離線處理;其中,所述預(yù)設(shè)的時(shí)間周期小于所述Kafka中日志刪除的時(shí)間周期。
[0034]本發(fā)明實(shí)施例提供的日志處理裝置能夠根據(jù)實(shí)時(shí)處理需求將相關(guān)的日志信息實(shí)時(shí)統(tǒng)計(jì)分析,并按照預(yù)定時(shí)間周期,根據(jù)離線處理需求從Kafka獲取相關(guān)日志信息存入Hadoop分布式文件系統(tǒng)中以便于以后離線分析處理,兼具需要實(shí)時(shí)處理的日志信息快速處理及需要離線處理的日志信息大數(shù)據(jù)存儲(chǔ)后離線處理的優(yōu)點(diǎn)。
[0035]在一個(gè)實(shí)施例中,所述處理模塊包括:
[0036]實(shí)時(shí)處理模塊,用于根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從所述記錄模塊的Kafka中記錄的日志中讀取所述實(shí)時(shí)統(tǒng)計(jì)指令所指信息,并使用Storm對(duì)讀取到的信息進(jìn)行分析統(tǒng)計(jì);
[0037]非實(shí)時(shí)處理模塊,用于按照預(yù)設(shè)的時(shí)間周期,從所述記錄模塊的Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中,并根據(jù)用戶輸入的離線統(tǒng)計(jì)指令,在Hadoop平臺(tái)上對(duì)Hadoop分布式文件系統(tǒng)中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì)。
[0038]在一個(gè)實(shí)施例中,所述非實(shí)時(shí)處理模塊包括:
[0039]讀取模塊,用于按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息,并將本次讀取到的信息發(fā)送給第一處理模塊;
[0040]第一處理模塊,用于使用Storm對(duì)所述讀取模塊發(fā)來(lái)的信息進(jìn)行處理,并將使用Storm處理后的信息發(fā)送給第二處理模塊;
[0041]第二處理模塊,用于通過(guò)Storm中的邏輯處理組件bolt直接將所述第一處理模塊發(fā)來(lái)的使用Storm處理后的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中。
[0042]本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫(xiě)的說(shuō)明書(shū)、權(quán)利要求書(shū)、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
[0043]下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
【附圖說(shuō)明】
[0044]附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與本發(fā)明的實(shí)施例一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:
[0045]圖1為本發(fā)明實(shí)施例提供的一種日志處理方法流程圖;
[0046]圖2為步驟S2中讀取實(shí)時(shí)統(tǒng)計(jì)指令所指信息并對(duì)讀取的信息實(shí)時(shí)處理的方法流程圖;
[0047]圖3為步驟S2中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中進(jìn)行離線處理的方法流程圖;
[0048]圖4為圖3中步驟S302的一種實(shí)施方法流程圖;
[0049]圖5為本發(fā)明實(shí)施例一中一種日志處理方法的流程圖;
[0050]圖6為本發(fā)明實(shí)施例提供的一種日志處理裝置結(jié)構(gòu)框圖;
[0051 ]圖7為本發(fā)明實(shí)施例提供的另一種日志處理裝置的結(jié)構(gòu)框圖;
[0052]圖8為圖7中非實(shí)時(shí)處理模塊的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0053]以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0054]圖1為本發(fā)明實(shí)施例提供的一種日志處理方法流程圖,如圖1中所示,該方法包括以下步驟S1-S2:
[°°55] 步驟S1:將節(jié)目播放日志實(shí)時(shí)記錄到Kafka中;其中,Kafka是由Linkedin開(kāi)發(fā)的一個(gè)分布式的發(fā)布訂閱系統(tǒng),是一種成熟的技術(shù),此處不再贅述。
[0056]步驟S2:根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從Kafka中記錄的日志中讀取實(shí)時(shí)統(tǒng)計(jì)指令所指信息并對(duì)讀取的信息實(shí)時(shí)處理;并按照預(yù)設(shè)的時(shí)間周期,周期性地從Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中進(jìn)行離線處理;其中,預(yù)設(shè)的時(shí)間周期小于Kafka中日志刪除的時(shí)間周期。
[0057]其中,根據(jù)實(shí)時(shí)/離線統(tǒng)計(jì)的需求,需要讀取的信息有所不同,例如:對(duì)于直播回看資源,與實(shí)時(shí)統(tǒng)計(jì)相關(guān)的信息有:某個(gè)頻道,看了多少次,有多少用戶再看,觀看時(shí)長(zhǎng)是多少;與離線(非實(shí)時(shí))統(tǒng)計(jì)相關(guān)的信息有:按日、周、月及季度等對(duì)日志進(jìn)行統(tǒng)計(jì),對(duì)視頻的清晰度、流暢度、視頻大小等進(jìn)行統(tǒng)計(jì)的相關(guān)數(shù)據(jù)。對(duì)于點(diǎn)播資源,與實(shí)時(shí)統(tǒng)計(jì)相關(guān)的信息有:某個(gè)節(jié)目,看了多少次,有多少用戶看過(guò),觀看時(shí)長(zhǎng)是多少;離與離線(非實(shí)時(shí))統(tǒng)計(jì)相關(guān)的信息有:按日、周、月及季度等對(duì)日志進(jìn)行統(tǒng)計(jì),對(duì)視頻的清晰度、流暢度、視頻大小等進(jìn)行統(tǒng)計(jì)的相關(guān)數(shù)據(jù)。由于具體的統(tǒng)計(jì)方法不是本發(fā)明的重點(diǎn),此處不再對(duì)其進(jìn)行贅述,根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令讀取的信息根據(jù)具體的統(tǒng)計(jì)要求來(lái)選擇,離線統(tǒng)計(jì)類似。
[0058]本發(fā)明實(shí)施例提供的日志處理方法根據(jù)實(shí)時(shí)處理需求將相關(guān)的日志信息實(shí)時(shí)統(tǒng)計(jì)分析,并按照預(yù)定時(shí)間周期,根據(jù)離線處理需求從Kafka獲取相關(guān)日志信息存入Hadoop分布式文件系統(tǒng)中以便于以后離線分析處理,兼具需要實(shí)時(shí)處理的日志信息快速處理及需要離線處理的日志信息大數(shù)據(jù)存儲(chǔ)后離線處理的優(yōu)點(diǎn)。相對(duì)于現(xiàn)有的單一隊(duì)列存儲(chǔ)并處理日志的方法而言,數(shù)據(jù)處理量大,離線處理性好;相對(duì)于現(xiàn)有的單一大數(shù)據(jù)處理日志的方法而言,實(shí)時(shí)數(shù)據(jù)處理速度更快。
[0059]在一個(gè)實(shí)施例中,如圖2所示,步驟S2中根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從Kafka中記錄的日志中讀取實(shí)時(shí)統(tǒng)計(jì)指令所指信息并對(duì)讀取的信息實(shí)時(shí)處理,包括以下步驟S201-S202:
[0000]步驟S201:根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從Kafka中記錄的日志中讀取實(shí)時(shí)統(tǒng)計(jì)指令所指信息;
[0061 ]步驟S202:使用分布式實(shí)時(shí)計(jì)算系統(tǒng)Storm對(duì)讀取到的信息進(jìn)行分析統(tǒng)計(jì)。
[0062]在該實(shí)施例中,日志數(shù)據(jù)的存儲(chǔ)采用Kafka,由于需要統(tǒng)計(jì)的日志數(shù)據(jù)間的關(guān)聯(lián)系較大,需要進(jìn)行數(shù)據(jù)的多級(jí)交互處理,因此采用非常有效的實(shí)時(shí)計(jì)算工具Storm統(tǒng)計(jì),在保證高可靠性的前提下還可以讓從日志中讀取的信息的處理進(jìn)行的更加實(shí)時(shí)。
[0063]在一個(gè)實(shí)施例中,如圖3所示,步驟S2中按照預(yù)設(shè)的時(shí)間周期,周期性地從Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中進(jìn)行離線處理,包括步驟S301-S303:
[0064]步驟S301:按照預(yù)設(shè)的時(shí)間周期,周期性地從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息。
[0065]步驟S302:將本次讀取到的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中。
[0066]其中,將從Kafka中讀取到的信息寫(xiě)入HDFS中的方法可以為兩種:(I)將從Kafka中讀取到的信息經(jīng)Storm做簡(jiǎn)單處理后再寫(xiě)入到HDFS中;(2)直接將從Kafka中讀取到的信息寫(xiě)入HDFS中。
[0067]步驟S303:根據(jù)用戶輸入的離線統(tǒng)計(jì)指令,在Hadoop平臺(tái)上對(duì)Hadoop分布式文件系統(tǒng)中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì)。
[0068]優(yōu)選地,步驟S303可以在Hadoop平臺(tái)上采用數(shù)據(jù)挖掘中的分類、回歸分析、聚類算法中的任一種算法對(duì)HDFS中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì)。
[0069]在該實(shí)施例中,根據(jù)預(yù)設(shè)的時(shí)間周期,即每隔固定的時(shí)間間隔(每個(gè)時(shí)間周期的時(shí)長(zhǎng)),周期性地將Kafka中需要離線處理的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中,然后根據(jù)離線統(tǒng)計(jì)指令,在Hadoop平臺(tái)上對(duì)這些信息進(jìn)行離線分析,由于Hadoop平臺(tái)能夠大數(shù)據(jù)處理,該方法減少了單一采用Kafka存儲(chǔ)及處理日志的數(shù)據(jù)量,而且能夠?qū)Σ恍枰獙?shí)時(shí)處理的大量數(shù)據(jù)進(jìn)行離線高速運(yùn)算和存儲(chǔ)。
[0070]若采用上述第(I)中方法將將從Kafka中讀取到的信息寫(xiě)入HDFS中,則如圖4所示,步驟S302包括以下步驟S401-S402:
[0071]步驟S401:使用Storm對(duì)本次讀取到的信息進(jìn)行處理;
[0072]步驟S402:將使用Storm處理后的信息寫(xiě)入HDFS中。
[0073]優(yōu)選地,可以使用Storm中的邏輯處理組件bolt直接將使用Storm處理后的信息寫(xiě)入HDFS中。
[0074]若采用上述第(2)中方法將從Kafka中讀取到的信息寫(xiě)入HDFS中,則在步驟S301之前,還包括步驟:
[0075]將Kafka的每個(gè)主題topic的分區(qū)partat1n抽象為Hadoop MapReduce中的一個(gè)文件分片split;然后再基于所述split編寫(xiě)用于將信息從Kafka輸出到HDFS的MapReduce程序;其中,MapReduce是一種現(xiàn)有的編程模型,用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算,這里編寫(xiě)的將信息從Kaf ka輸出到HDFS的MapReduce程序中預(yù)先設(shè)置有上述時(shí)間周期。
[0076]則步驟S302中,可根據(jù)預(yù)先編寫(xiě)好的用于將信息從Kafka輸出到HDFS的MapReduce程序,將步驟S30 I中從Kaf ka中讀取到的信息寫(xiě)入HDFS中,讀寫(xiě)的時(shí)間周期即為該MapReduce程序中預(yù)先設(shè)置的時(shí)間周期。
[0077]該實(shí)施例中,預(yù)先將Kafka的每個(gè)topic的partat1n抽象為Hadoop MapReduce中的一個(gè)文件分片spl it,編寫(xiě)將信息從Kafka輸出到HDFS的MapReduce程序,則在將Kafka中需要離線處理的信息寫(xiě)入HDFS中時(shí)可直接根據(jù)該程序進(jìn)行數(shù)據(jù)的轉(zhuǎn)移存儲(chǔ),存儲(chǔ)簡(jiǎn)單快捷。
[0078]下面通過(guò)具體實(shí)施例來(lái)說(shuō)明本發(fā)明實(shí)施例提供的日志處理方法。
[0079]實(shí)施例一
[0080]圖5為本發(fā)明實(shí)施例一中一種日志處理方法的流程圖。如圖5所示,該方法包括以下步驟 S501-S507:
[0081 ] 步驟S501:將節(jié)目播放日志實(shí)時(shí)記錄到Kafka中;
[0082]其中,此步驟是一直在不斷執(zhí)行,不受其他步驟的干擾。
[0083]步驟S502:判斷是否到達(dá)預(yù)設(shè)的時(shí)間周期(S卩:判斷和上次存儲(chǔ)離線統(tǒng)計(jì)相關(guān)信息的時(shí)間間隔是否達(dá)到預(yù)設(shè)的時(shí)間周期長(zhǎng))和/或收到實(shí)時(shí)統(tǒng)計(jì)指令?若收到實(shí)時(shí)統(tǒng)計(jì)指令,則執(zhí)行步驟S503;若到達(dá)預(yù)設(shè)的時(shí)間周期,則執(zhí)行步驟S505;否則(即既未到達(dá)預(yù)設(shè)的時(shí)間周期又未收到實(shí)時(shí)統(tǒng)計(jì)指令),返回步驟S502。
[0084]步驟S503:從Kafka中記錄的日志中讀取收到的實(shí)時(shí)統(tǒng)計(jì)指令所指信息,繼續(xù)執(zhí)行步驟S504。
[0085]步驟S504:使用Storm對(duì)讀取到的信息進(jìn)行分析統(tǒng)計(jì),并返回S502。
[0086]步驟S505:從Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息。
[0087]步驟S506:將本次讀取到的信息寫(xiě)入HDFS中;
[0088]其中,可以采用上述實(shí)施例中提供的兩種方法將本次從Kafka中讀取到的信息寫(xiě)入HDFS中。
[0089]步驟S507:根據(jù)用戶輸入的離線統(tǒng)計(jì)指令,在Hadoop平臺(tái)上對(duì)HDFS中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì);
[0090]其中,可以采用前面所述的數(shù)據(jù)挖掘中的分類、回歸分析、聚類算法中的任一種算法對(duì)HDFS中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì)。
[0091 ]本實(shí)施例一提供的日志處理方法能夠?qū)π枰獙?shí)時(shí)處理的日志信息進(jìn)行實(shí)時(shí)快速處理,并將需要離線處理的海量日志信息轉(zhuǎn)存到HDFS中進(jìn)行離線分析處理,數(shù)據(jù)吞吐量大,離線分析方便。
[0092]對(duì)應(yīng)于上述實(shí)施例提供的一種用日志處理方法,本發(fā)明實(shí)施例還提供一種日志處理裝置,如圖6所示,該裝置包括:
[0093]記錄模塊61,用于將節(jié)目播放日志實(shí)時(shí)記錄到Kafka中;
[0094]處理模塊62,用于根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從記錄模塊61的Kafka中記錄的日志中讀取實(shí)時(shí)統(tǒng)計(jì)指令所指信息并對(duì)讀取的信息實(shí)時(shí)處理,并按照預(yù)設(shè)的時(shí)間周期,周期性地從Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中進(jìn)行離線處理;其中,預(yù)設(shè)的時(shí)間周期小于Kafka中日志刪除的時(shí)間周期。
[0095]圖6所示的裝置可以用于執(zhí)行圖1所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0096]在一個(gè)實(shí)施例中,如圖7所示,處理模塊62包括:
[0097]實(shí)時(shí)處理模塊621,用于根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從記錄模塊61的Kafka中記錄的日志中讀取實(shí)時(shí)統(tǒng)計(jì)指令所指信息,并使用Storm對(duì)讀取到的信息進(jìn)行分析統(tǒng)計(jì);
[0098]非實(shí)時(shí)處理模塊622,用于按照預(yù)設(shè)的時(shí)間周期,周期性地從記錄模塊61的Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中,并根據(jù)用戶輸入的離線統(tǒng)計(jì)指令,在Hadoop平臺(tái)上對(duì)Hadoop分布式文件系統(tǒng)中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì)。
[00"]在一個(gè)實(shí)施例中,如圖8所不,非實(shí)時(shí)處理模塊622包括:
[0100]讀取模塊81,用于按照預(yù)設(shè)的時(shí)間周期,周期性地從記錄模塊61的Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息,并將本次讀取到的信息發(fā)送給第一處理模塊82;
[0101]第一處理模塊82,用于使用Storm對(duì)讀取模塊81發(fā)來(lái)的信息進(jìn)行處理,并將使用Storm處理后的信息發(fā)送給第二處理模塊83;
[0102]第二處理模塊83,用于通過(guò)Storm中的邏輯處理組件bolt直接將第一處理模塊82發(fā)來(lái)的使用Storm處理后的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中。
[0103]本發(fā)明實(shí)施例提供的日志處理裝置能夠?qū)⒐?jié)目播放日志記錄到Kafka中,并根據(jù)實(shí)時(shí)處理需求,獲取與實(shí)時(shí)統(tǒng)計(jì)相關(guān)的信息直接處理,或?qū)afka中與離線統(tǒng)計(jì)相關(guān)的信息周期性地轉(zhuǎn)存到HDFS中,隨后離線處理,兼具實(shí)時(shí)性日志信息快速處理及非實(shí)時(shí)性日志信息大數(shù)據(jù)存儲(chǔ)的優(yōu)點(diǎn)。
[0104]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0105]本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0106]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0107]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0108]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【主權(quán)項(xiàng)】
1.一種日志處理方法,其特征在于,包括: 將節(jié)目播放日志實(shí)時(shí)記錄到Kaf ka中; 根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從所述Kafka中記錄的日志中讀取所述實(shí)時(shí)統(tǒng)計(jì)指令所指信息并對(duì)讀取的信息實(shí)時(shí)處理;并按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中進(jìn)行離線處理;其中,所述預(yù)設(shè)的時(shí)間周期小于所述Kafka中日志刪除的時(shí)間周期。2.如權(quán)利要求1所述的一種日志處理方法,其特征在于,所述根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從所述Kafka中記錄的日志中讀取所述實(shí)時(shí)統(tǒng)計(jì)指令所指信息并對(duì)讀取的信息實(shí)時(shí)處理,包括: 根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從所述Kafka中記錄的日志中讀取所述實(shí)時(shí)統(tǒng)計(jì)指令所指信息; 使用Storm對(duì)讀取到的信息進(jìn)行分析統(tǒng)計(jì)。3.如權(quán)利要求1所述的一種日志處理方法,其特征在于,所述按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中進(jìn)行離線處理,包括: 按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息; 將本次讀取到的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中; 根據(jù)用戶輸入的離線統(tǒng)計(jì)指令,在Hadoop平臺(tái)上對(duì)所述Hadoop分布式文件系統(tǒng)中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì)。4.如權(quán)利要求3所述的一種日志處理方法,其特征在于,所述在Hadoop平臺(tái)上對(duì)所述Hadoop分布式文件系統(tǒng)中存儲(chǔ)的信息進(jìn)行尚線分析統(tǒng)計(jì),包括: 在Hadoop平臺(tái)上采用數(shù)據(jù)挖掘中的分類、回歸分析、聚類算法中的任一種算法對(duì)所述Hadoop分布式文件系統(tǒng)中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì)。5.如權(quán)利要求3所述的一種日志處理方法,其特征在于,所述將本次讀取到的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中,包括: 使用Storm對(duì)本次讀取到的信息進(jìn)行處理; 將使用Storm處理后的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中。6.如權(quán)利要求5所述的一種日志處理方法,其特征在于,所述將使用Storm處理后的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中,包括: 通過(guò)Storm中的邏輯處理組件bolt直接將使用Storm處理后的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中。7.如權(quán)利要求3所述的一種日志處理方法,其特征在于,所述按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息之前,還包括: 將Kafka的每個(gè)主題topic的分區(qū)partat1n抽象為Hadoop MapReduce中的一個(gè)文件分片split; 基于所述文件分片sp I it編寫(xiě)用于將信息從Kafka輸出到Hadoop分布式文件系統(tǒng)的MapReduce程序;所述MapReduce程序中預(yù)先設(shè)置有所述時(shí)間周期; 所述將本次讀取到的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中,包括:根據(jù)所述MapReduce程序,將本次讀取到的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中。8.—種日志處理裝置,其特征在于,包括: 記錄模塊,用于將節(jié)目播放日志實(shí)時(shí)記錄到Kaf ka中; 處理模塊,用于根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從所述記錄模塊的Kafka中記錄的日志中讀取所述實(shí)時(shí)統(tǒng)計(jì)指令所指信息并對(duì)讀取的信息實(shí)時(shí)處理;并按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中進(jìn)行離線處理;其中,所述預(yù)設(shè)的時(shí)間周期小于所述Kafka中日志刪除的時(shí)間周期。9.如權(quán)利要求8所述的一種日志處理裝置,其特征在于,所述處理模塊包括: 實(shí)時(shí)處理模塊,用于根據(jù)實(shí)時(shí)統(tǒng)計(jì)指令從所述記錄模塊的Kafka中記錄的日志中讀取所述實(shí)時(shí)統(tǒng)計(jì)指令所指信息,并使用Storm對(duì)讀取到的信息進(jìn)行分析統(tǒng)計(jì); 非實(shí)時(shí)處理模塊,用于按照預(yù)設(shè)的時(shí)間周期,從所述記錄模塊的Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息并將其寫(xiě)入Hadoop分布式文件系統(tǒng)中,并根據(jù)用戶輸入的離線統(tǒng)計(jì)指令,在Hadoop平臺(tái)上對(duì)Hadoop分布式文件系統(tǒng)中存儲(chǔ)的信息進(jìn)行離線分析統(tǒng)計(jì)。10.如權(quán)利要求9所述的一種日志處理裝置,其特征在于,所述非實(shí)時(shí)處理模塊包括: 讀取模塊,用于按照預(yù)設(shè)的時(shí)間周期,從所述Kafka中記錄的日志中讀取離線統(tǒng)計(jì)相關(guān)信息,并將本次讀取到的信息發(fā)送給第一處理模塊; 第一處理模塊,用于使用Storm對(duì)所述讀取模塊發(fā)來(lái)的信息進(jìn)行處理,并將使用Storm處理后的信息發(fā)送給第二處理模塊; 第二處理模塊,用于通過(guò)Storm中的邏輯處理組件bolt直接將所述第一處理模塊發(fā)來(lái)的使用Storm處理后的信息寫(xiě)入Hadoop分布式文件系統(tǒng)中。
【文檔編號(hào)】H04N21/235GK105933736SQ201610244023
【公開(kāi)日】2016年9月7日
【申請(qǐng)日】2016年4月18日
【發(fā)明人】周鳴愛(ài)
【申請(qǐng)人】天脈聚源(北京)傳媒科技有限公司