張舜
【摘 要】目前的分布式轉(zhuǎn)碼系統(tǒng)忽略了計算節(jié)點的處理能力,分配的轉(zhuǎn)碼任務量過大,容易對轉(zhuǎn)碼造成影響,降低轉(zhuǎn)碼效率。文章針對這一問題,提出一種新的算法,即任務調(diào)度算法,建立在Hadoop平臺上進行視頻轉(zhuǎn)碼,將視頻分成不同段,根據(jù)復雜程度進行轉(zhuǎn)碼映射,提高轉(zhuǎn)碼處理能力,讓節(jié)點獲得更多視頻塊,使所有的計算階段能夠達到平衡。經(jīng)過實驗證明,基于Hadoop視頻轉(zhuǎn)碼的任務調(diào)度算法能夠顯著提升轉(zhuǎn)碼效率,改善轉(zhuǎn)碼系統(tǒng)的性能。
【關(guān)鍵詞】Hadoop;視頻轉(zhuǎn)碼;任務調(diào)度算法
【中圖分類號】TP338.8 【文獻標識碼】A 【文章編號】1674-0688(2018)12-0067-02
如今,網(wǎng)絡(luò)視頻快速發(fā)展,如何為移動終端提供可靠的服務是目前互聯(lián)網(wǎng)視頻轉(zhuǎn)碼面臨的一項嚴峻挑戰(zhàn)。視頻數(shù)量不斷增加,導致傳統(tǒng)視頻轉(zhuǎn)碼技術(shù)的存儲能力及處理能力無法滿足人們的需求,因此研究人員提出了一種Hadoop視頻轉(zhuǎn)碼系統(tǒng)以提高視頻轉(zhuǎn)碼效率。現(xiàn)有的視頻轉(zhuǎn)碼系統(tǒng)沒有將機器處理轉(zhuǎn)碼任務量考慮其中,一種關(guān)于任務調(diào)度的算法將輸入的視頻進行分段處理,然后根據(jù)視頻的復雜程度進行映射,減少轉(zhuǎn)碼時間,提高轉(zhuǎn)碼效率。
1 Hadoop
Hadoop是一個轉(zhuǎn)碼框架,用于處理海量數(shù)據(jù),具有可用性、健壯性及可擴展性特點。Hadoop平臺由HDFS和MapReduce兩部分共同組成Hadoop系統(tǒng)。MapReduce計算框架搭建在HDFS分布式文件系統(tǒng)之上,用戶只需要編寫map()函數(shù)與reduce()函數(shù)即可完成分布式程度的設(shè)計。HDFS最基本的內(nèi)容是數(shù)據(jù)塊,數(shù)據(jù)塊可以保存比較大的文件、簡化存儲系統(tǒng)、便于數(shù)據(jù)復制等。Hadoop集群中的NameNode用來管理整個系統(tǒng),主要職責是對文件系統(tǒng)進行管理。MapReduce采用M/S架構(gòu),當工作人員在Hadoop中編寫一個MapReduce程序后,通過Client將程序編號發(fā)給JobTracker,編程人員用“作業(yè)”表示MapReduce,而每一個編寫好的“作業(yè)”會被分解成若干個“任務”,每一個“任務”只有獲取資源后才能夠執(zhí)行。
2 云轉(zhuǎn)碼
視頻通過Avidemux視頻編輯器進行去雜質(zhì)處理,通過map()函數(shù)對ffmpeg進行封裝。ffmpeg是一種不收費的軟件,能夠?qū)σ曨l進行轉(zhuǎn)碼處理。當海量的視頻轉(zhuǎn)碼任務都聚集在Hadoop集群中時,系統(tǒng)需要對任務進行分解,將一個個小任務分配到階段中,通過Hadoop的計算功能實現(xiàn)多視頻同時轉(zhuǎn)碼。系統(tǒng)對用戶的視頻要求進行處理時,具體步驟如下:用戶先發(fā)出視頻請求,然后服務器根據(jù)用戶提供的設(shè)備參數(shù)向Streaming Server發(fā)出請求,隨后檢查與用戶請求相符合的數(shù)據(jù);如果符合,將視頻數(shù)據(jù)取出返回給用戶;如果不符合,需要向NameNode發(fā)出轉(zhuǎn)碼命令,隨后進行分布式轉(zhuǎn)碼,轉(zhuǎn)碼完成后將視頻文件返回,然后將視頻返回給用戶。
3 任務調(diào)度算法
3.1 參數(shù)評估
3.1.1 節(jié)點轉(zhuǎn)碼
影響機器轉(zhuǎn)碼的原因很多,比如處理器性能不好、內(nèi)存不足或者網(wǎng)絡(luò)信號不好等,根據(jù)PageRank算法評估機器的轉(zhuǎn)碼,設(shè)定配置方式,不同的網(wǎng)絡(luò)情況需要有不同的配置方案,然后根據(jù)程序測試不同模塊的數(shù)據(jù)進行算法分析??梢詫⑵浞譃?個步驟:①運行程序,生成數(shù)據(jù)矩陣,測試輸出值;②對原始數(shù)據(jù)進行分析,將其看成列向量,每一列表示輸出數(shù)據(jù)的序列;③計算矩陣A,A=correlation(d1,d2),d1=1,2,3,4,d2=1,2,3,…,7;④使用PageRank計算出得分,得分最高的一項表示該項的變化特征最多,得分最低的一項表示具有與其他測試項不同的特征。根據(jù)參考機器計算出其他機器的轉(zhuǎn)碼能力。
3.1.2 虛擬背包
將n個視頻塊根據(jù)不同的復雜度進行排序,按照降序的方式從高到低進行排列,在m臺機器上,根據(jù)機器的處理能力,從強到弱進行排列。處理能力較強的機器掌握主動權(quán),能夠選擇要處理的視頻塊,vi*+cj
3.2 Min-MM算法
Min-MM算法是將背包問題與Max-Min算法進行結(jié)合,將平均轉(zhuǎn)碼時間作為轉(zhuǎn)碼時間的節(jié)點,然后計算每一臺機器接收信息的復雜程度,根據(jù)復雜程度將視頻塊分布到各個機器中進行轉(zhuǎn)碼處理。首先要設(shè)定轉(zhuǎn)碼時間,視頻塊集合為:
sum(c)=■ci(1)
機器的處理能力為:
sum(p)=■pj(2)
在理想狀態(tài)下,需要將視頻塊分配到不同的機器中,得到的平均轉(zhuǎn)碼時間為:
faveragesum(c)/sum(p) (3)
機器在faverage時間內(nèi)要完成視頻復雜度,公式為:
Vj=pj×faverage(4)
3.3 建立問題模型
建立問題模型需要考慮如何將復雜的任務放在多個不同處理能力的節(jié)點中,在調(diào)度算法中,執(zhí)行效率最高的是Min-Min,它與Max-Min相比,具有較好的負載能力。而Max-Min算法能夠?qū)⑺泄?jié)點的時間進行平均,這樣能夠達到提高轉(zhuǎn)碼效率的目的。建立數(shù)學模型的方法:比如有n段視頻,復雜程度不同,m個處理節(jié)點,轉(zhuǎn)碼時間要與視頻復雜度與機器處理能力進行對比,將視頻塊發(fā)到機器上的轉(zhuǎn)碼時間為:
tij=■(5)
當視頻塊完成分配后,機器會獲得視頻集合,完成時間為:
fsj=■tij=■■(6)
如果設(shè)A={a1,a2,...,an},R(i):J>A,則表示將所有的視頻塊都放在機器中進行處理,目的是為了找到最佳的調(diào)度算法以完成處理時間。先找到能夠完成視頻塊處理最長的機器,然后將其最小化,這樣能夠提高整個轉(zhuǎn)碼效率。如:
■ ■ fsj(7)
A={a1,a2,...,an},
■sj=J,(8)
■si,sj∈A,si■sj=■
4 實驗分析
在Hadoop集群中建立多臺型號不同的服務器,將其中一臺服務器作為NameNode,安裝Avidemux,剩余機器為DateNodes,安裝ffmpeg。使用云轉(zhuǎn)碼系統(tǒng)驗證視頻格式,使用Min-MM算法進行對比。視頻格式有MP4、mkv、ts等,記錄測試時間;改變視頻大小,視頻內(nèi)存有5 G、8 G、16 G。如果Hadoop集群中有多個節(jié)點,需要使用Min-MM算法進行轉(zhuǎn)碼時間前后對比。
分析實驗環(huán)境,Hadoop轉(zhuǎn)碼系統(tǒng)支持多種格式的互相轉(zhuǎn)換,其中MP4格式轉(zhuǎn)碼時間較長,ts轉(zhuǎn)碼時間較短;當使用Min-MM算法后,轉(zhuǎn)碼時間明顯加快,如圖1所示。
5 結(jié)語
Hadoop視頻轉(zhuǎn)碼框架用于處理大量的視頻信息效果良好,在此基礎(chǔ)上增加任務調(diào)度算法Min-MM,使處理時間更快,在兼容多種格式的同時依然能夠達到較快的轉(zhuǎn)碼速度。通過Hadoop平臺與任務調(diào)度算法相結(jié)合,大大提高了轉(zhuǎn)碼效率,提升了轉(zhuǎn)碼系統(tǒng)的性能。
參 考 文 獻
[1]畢莎莎,陳清華,高煜紅.基于Hadoop視頻轉(zhuǎn)碼的任務調(diào)度算法[J].無線電通信技術(shù),2014,40(2):63-66,85.
[2]李曌.基于Hadoop的調(diào)度算法研究與實現(xiàn)[D].成都:西南交通大學,2014.
[3]彭志偉,谷建華.一種基于動態(tài)資源采集的Hadoop作業(yè)調(diào)度算法[J].微電子學與計算機,2014,31(4):64-67.
[4]姜淼.Hadoop云平臺下調(diào)度算法的研究[D].長春:吉林大學,2012.
[5]萬兵,黃夢醒,段茜.一種基于資源預取的Hadoop作業(yè)調(diào)度算法[J].計算機應用研究,2014,31(6):1639-1643.