張舜



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