999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于超算平臺和Hadoop的并行轉碼方案設計

2014-11-20 08:19:14劉炳均戴云松
電視技術 2014年7期

劉炳均,戴云松

(1.中山大學軟件學院,廣東廣州510006;2.廣州耘趣網絡科技有限公司,廣東廣州510000)

在當今時代,電視網、電信網和互聯網的融合要求視頻數據可以同時在電視、手機和網絡進行播放。但是,由于不同平臺的網絡帶寬狀況、終端播放設備、用戶需求千差萬別,視頻的編碼格式、分辨率、幀率也各不相同。因此,需要對視頻進行轉換編碼。但是,當前的視頻轉碼存在兩個問題,一是計算量巨大,視頻數據存在著海量化的趨勢;二是實時性難以保證,用戶不能在可容忍的時間內得到轉碼結果。

當前,對于大規模的視頻轉碼,主流的解決方案有單機服務器轉碼和分布式服務器轉碼。然而,單機服務器轉碼計算能力有限,分布式視頻轉碼實現復雜,都不容易實現。筆者提出利用Hadoop搭建一個分布式轉碼系統,結合超算平臺的強計算能力和多核多線程的特點以及MIC架構的并行處理優勢進行大規模的轉碼任務,有效解決了上述問題。

1 技術基礎

1.1 超算平臺

廣州超級計算中心的業務主機為天河二號,是當前世界最快的超級計算機。超算平臺主要有3個特點:一是計算能力強,天河二號由16 000個節點組成,單個節點有3.431 Tflops運算能力,16 000 個節點總計可達54.9 Pflops性能;二是多核多線程,每個節點有2個CPU處理器和3個MIC協處理器,并支持多線程編程;三是存儲容量大,每個運算節點有64 Gbyte主存,而每個MIC協處理器板載8 Gbyte內存,因此每個節點共有88 Gbyte內存,總計16 000個節點一共有1.404 Pbyte內存,而外部存儲器容量方面更是高達12.4 Pbyte。

天河二號使用的MIC協處理器是Intel公司推出的基于集成眾核(Many Integrated Core,MIC)架構的至強融核系列的一個產品。該產品雙精度性能達到每秒一萬億次以上,并且支持并行編程模型。對于采用傳統CPU平臺很難實現性能進一步提升的部分應用,例如并行視頻轉碼,使用MIC協處理器是一個很好的選擇[1]。

1.2 Hadoop

Hadoop是一個實現了MapReduce模式的開源分布式計算框架。通過Hadoop,程序員可以方便快捷地開發分布式程序,利用計算機群的強處理能力和高存儲空間對海量數據進行分布式處理。Hadoop的核心設計還包括一個分布式文件系統(HDFS)及分布式數據庫(HBase)[2]。圖1是Hadoop的組成示意圖。

MapReduce是Google提出的一種軟件編程模型,其作用是幫助用戶開發處理大規模數據集的應用程序。MapReduce的主要思想是將海量數據處理問題劃分為Map(映射)階段和Reduce(化簡)階段。當發起一個作業時,MapReduce模型會把輸入的大數據集分割成若干個數據塊,在Map階段分發到多個Map任務中并行處理,得到處理后的數據塊,然后進入Reduce階段,Reduce任務將所有結果合并成最終結果,并存儲在文件系統上[2],如圖2所示。

圖1 Hadoop的組成示意圖

圖2 MapReduce模型作業流程圖

HDFS是一個分布式文件系統。HDFS集群采用master-slave結構,由一個NameNode節點和多個DataNode節點組成。NameNode節點是主服務器,負責管理文件命名空間和調節客戶端訪問文件系統。DataNode負責提供實際的存儲服務。當一個文件提交到HDFS中時,HDFS會將該文件分割成一個或者多個塊,并存儲在若干個Data-Node節點中,每個塊都有多個副本,分別存儲在不同的DataNode上。同時,NameNode節點記錄塊與DataNode之間的映射關系。當需要對文件進行讀寫時,客戶端從NameNode獲取文件的元數據(Metadata),得到所有文件塊的存儲位置,再從相應的DataNode直接進行讀寫操作。具體如圖3所示。

HBase建立在HDFS之上,提供高可靠性、高性能、列存儲、可伸縮、實時讀寫的數據庫系統,適合用來存儲非結構化和半結構化的松散數據,例如視頻數據。它可以橫向擴展,通過不斷增加廉價的商用服務器,來增加計算和存儲能力。

圖3 HDFS體系架構圖

1.3 FFmpeg

FFmpeg是開源免費跨平臺的視頻和音頻流方案,它的主要功能有視頻采集功能、視頻格式轉換、視頻抓圖、給視頻加水印等。FFmpeg包含了3個重要組件,分別是libavcodec,libavformat和 ffmpeg命令行工具。其中,ffmpeg命令行工具是一個可執行的文件,輸入需要的參數,就能完成相應的媒體處理操作。例如將.mpg轉成.avi:

ffmpeg - i video_origine.mpg video_finale.avi

2 整體架構設計

由于超算平臺由眾多的節點組成,每個節點均可獨立工作,多個節點可協同工作,相當于傳統分布式系統中的集群。本解決方案是以節點為單位搭建基于超算平臺的視頻轉碼系統。

本系統主要由任務控制節點、視頻分割節點、Hadoop節點組構成,其中Hadoop節點組的核心部分是HDFS模塊和MapReduce模塊。任務控制節點負責接收客戶端的任務請求,配置任務信息,監控任務進度,控制其他節點處理任務和返回任務結果。視頻分割節點負責將一個視頻分割成若干個視頻塊。Hadoop節點組的HDFS模塊負責視頻塊的存儲,MapReduce模塊完成視頻轉碼工作和視頻塊合并工作。系統整體架構如圖4所示。

圖4 系統整體架構圖

各流程詳細說明如下:

1)客戶端發起一個轉碼請求,任務控制節點接受用戶上傳的視頻,處理用戶輸入的任務配置信息,分析視頻數據并生成任務對象,開始轉碼作業。

2)任務控制節點將視頻傳輸給視頻分割節點,并通知該節點將視頻分割成若干個視頻塊。

3)視頻分割節點將分割結果存儲在Hadoop節點組的HDFS中。

4)視頻分割節點通知任務控制節點分割作業完成,并返回分割后各個視頻塊的信息,例如大小和存儲位置等。

5)任務控制節點根據任務對象的信息(任務要求時間、視頻大小、轉碼要求等)構建合適的MapReduce作業框架,

6)MapReduce模塊完成對視頻塊的轉碼任務和合并任務,并把目標視頻存儲在HDFS中。

7)MapReduce模塊返回任務完成信息和目標視頻的存儲信息。

8)任務控制節點返回任務完成信息到客戶端,并提供目標視頻的存儲位置。

9)用戶從HDFS模塊下載目標視頻,轉碼請求完成。

2 技術實現

2.1 任務控制節點

當客戶端發起一個轉碼請求時,任務控制節點分析上傳的源視頻和用戶配置的任務需求,對當前轉碼任務進行建模,生成一個n維的任務特征向量T,其中T=[t0,t1,t2,…,tn-1],每一維都描述了轉碼任務的某一屬性,例如任務狀態、視頻名稱、視頻時長、視頻大小、視頻源與目的編碼方式、視頻源與目的比特率、任務限時、目標視頻大小限制、視頻塊與HDFS的映射表等,并將其加入隊列TaskQueue中。

任務控制節點每次取出位于TaskQueue隊頭的向量對象T,并根據T中的信息,生成相應的指令信號I,例如進入下一執行階段或者重做當前階段等,最后將T和I傳輸到下一節點,如此循環,直到TaskQueue為空。

2.2 視頻分割節點

在Hadoop系統中,存儲在HDFS的文件是由一個或者多個數據塊組成,而且由于MapReduce框架的Map任務通常是并發執行,所以需要對視頻數據進行分割。但是,視頻數據是非結構化數據,視頻中幀與幀存在著關聯性,簡單的物理劃分會導致視頻數據信息受損。

所以在該節點中,需要使用專門的媒體處理工具來實現視頻分割的功能,例如FFmpeg,mencoder等。在實現時,可以在視頻分割節點集成多種視頻分割工具。

視頻分割節點接受任務控制節點傳遞過來的任務對象T和指令信號I,從T中提取視頻信息并分析,動態選取最合適的工具,最后生成一個個互相獨立的視頻塊并存儲在HDFS的各個DataNode中等待轉碼處理,同時更新任務對象T,并傳輸回任務控制節點,加入隊列TaskQueue中等待下一步處理。

2.3 MapReduce模塊

MapReduce模塊接受任務控制節點傳遞來的任務對象T和指令信號I,然后根據T中信息,獲取視頻塊的存儲位置,即DataNode編號,開始轉碼作業。

作業分為兩個階段:Map階段和Reduce階段。Map階段負責視頻塊的轉碼,在這個階段,多個Map任務并行執行。每個Map任務都運行在存儲其要處理的視頻塊的DataNode上,這樣避免了節點間的文件傳輸。Map任務結束后,轉碼結果不上傳到HDFS中,而是保留在本地節點。所有的Map任務完成后,開啟Reduce階段,在這個階段,Reduce任務只有一個,它會訪問所有執行Map任務的節點,取得各個視頻塊的轉碼結果,然后按順序合并成目標視頻,最后上傳至HDFS中,同時,更新并傳輸對象T到任務控制節點。

2.3.1 移植FFmpeg到MIC(Map階段)

視頻轉碼工作是發生在MapReduce框架的Map階段。

由于Hadoop是基于Java,在Map任務中使用FFmpeg需要Java提供的Runtime類,運行該類中的 exec(String cmdArray[])方法就可以調用FFmpeg命令行工具這個可執行文件。只需將可執行文件放置在Hadoop框架可以訪問到的位置。

在本方案中,執行轉碼任務的是FFmpeg,FFmpeg是開源的,這意味著可以修改其源代碼,重新編譯出一個適合運行在MIC卡上的FFmpeg可執行文件。MIC并沒有單獨的編程語言,MIC編程是對C/C++/Fortran語言進行擴展,加入編譯指令或指導指令,使用最簡單的方法讓現有的程序在盡量不做改動的情況下,能夠利用MIC的計算資源,其中最基本的關鍵字是offload。其作用是:在offload作用范圍內(即最靠近offload語句下面的第一個代碼段)的程序代碼,是要在MIC卡上運行[3]。一個最簡單的例子如下:

該代碼中的for循環將在MIC卡上運行。

MIC芯片通常有數十個精簡的x86核心,提供高度并行的計算能力。所以,在移植FFmpeg時,可以對其進行并行化,進一步加速其轉碼速度。本方案使用的手段是OpenMP。OpenMP是一種API,用于編寫可移植的多線程應用程序,它能夠為編寫多線程應用程序提供一種簡單的方法,而無需程序員進行復雜的線程創建、同步、負載均衡和銷毀工作。OpenMP采用引語的方式對程序進行并行化,其中最常用的方法是對循環進行并行化[4]。上面例子使用OpenMP并行化后如下:

通過使用MIC編程與OpenMP,將原來運行在CPU上的FFmpeg程序移植到MIC卡,充分發揮MIC架構的浮點運算能力和高度并行能力,從而加速視頻轉碼的效率。

2.3.2 任務并行化(Reduce階段)

視頻合并工作是發生在MapReduce框架的Reduce階段。在這個階段,Reduce任務在所有Map任務完成后啟動,讀取所有轉碼后的視頻塊,并按照其編號的順序,合并視頻。傳統的解決方案一般會以串行的方式完成這個工作,而且由于受運行節點的主存容量限制,合并過程中產生的中間結果需要存放在硬盤上,I/O開銷較大。

針對這種情況,本方案利用超算節點多核多線程的特性,將視頻合并工作以并行的方式進行,同時合并多個視頻塊。而且,利用超算節點高主存的特性,對主存利用率設置一個閾值,低于該閾值時,保留中間結果在主存,當主存不足時,才將中間結果寫入硬盤,最大限度地減少I/O操作的開銷。

2.4 HDFS 模塊

在本系統中,使用HDFS模塊的情況分為兩種:一是上傳本地文件到HDFS,例如保存視頻分割后的視頻塊和轉碼合并后的目標視頻;二是從HDFS下載文件到本地系統,例如Map任務下載視頻塊和客戶端下載目標視頻。

這兩種情況的實現需要使用Hadoop抽象文件系統的 copyToLocalFile()和 copyFromLocalFile()。copyTo-LocalFile()的功能是從分布式文件系統拷貝文件到本地,copyFromLocalFile()的功能是從本地拷貝數據到分布式文件系統。

3 總結與展望

當前視頻數據存在著海量化、多平臺化、多編碼標準化的趨勢,傳統的視頻轉碼方案已經滿足不了日益增長的用戶需求。所以,本文提出一種基于超算平臺和Hadoop的視頻并行轉碼方案。總的來說,方案有兩個重點:一是基于Hadoop框架優秀的并行任務處理能力,高擴展性和高容錯性,使用MapReduce思想搭建一個并行轉碼系統,完成對視頻的分割、轉碼和合并。二是結合超算平臺的優勢,采用特殊的技術實現方法來提高系統并行轉碼的能力,例如移植FFmpeg到MIC卡。

當然,本方案還有許多需要改進之處。例如,需要進一步研究,提出更多可行的方法來提高轉碼系統的性能。FFmpeg能夠處理大多數視頻格式,但不是所有,需要添加對特定格式的支持。在MIC卡上并行處理視頻數據時要考慮視頻數據的關聯性,HDFS中視頻塊大小設置對并行度的影響等。

總之,本文希望通過提出一種基于超算平臺的海量視頻轉碼解決方案來滿足目前的轉碼需求。同時,通過本文在方案中對超算平臺的分析和應用,為其他大規模數據處理應用提供新的思路、新的選擇。

[1]英特爾至強融核協處理器開發人員快速入門指南[EB/OL].[2013-12-22].http://software.intel.com/zh-cn/articles/intel-xeon- phicoprocessor-developers-quick-start-guide#admin.

[2]楊帆,沈奇威.分布式系統Hadoop平臺的視頻轉碼[J].計算機系統應用,2011,20(11):80-85.

[3] DEAN J,GHEMAWAT S.MapReduce:simplified data processing on large clusters[J].Communications of the ACM-50th anniversary issue,2008,51(1):107-113.

[4]王恩東,張清,沈鉑,等.MIC高性能計算編程指南[M].北京:中國水利水電出版社,2012.

主站蜘蛛池模板: 夜色爽爽影院18禁妓女影院| 67194亚洲无码| 午夜视频免费一区二区在线看| 精品综合久久久久久97超人| 亚洲无线国产观看| 久久久久人妻一区精品| 久久精品国产精品青草app| 久无码久无码av无码| 国产在线八区| 91人人妻人人做人人爽男同| 日韩福利视频导航| 国产后式a一视频| 精品国产污污免费网站| 亚洲男人在线天堂| 亚洲中文字幕久久无码精品A| 一级看片免费视频| 国产精品伦视频观看免费| 免费一级α片在线观看| 欧美成人手机在线视频| 国产国产人成免费视频77777| 呦视频在线一区二区三区| 男女精品视频| 欧美成人免费一区在线播放| 亚洲无码高清免费视频亚洲| 亚洲中文字幕无码mv| 97综合久久| 成人毛片在线播放| 欧美a级完整在线观看| 2024av在线无码中文最新| 99精品高清在线播放| 国产99免费视频| 国产精品成| 2020国产精品视频| 波多野结衣一区二区三区四区| 在线99视频| 国产激情在线视频| 青青草一区| 一级不卡毛片| 无码专区在线观看| 99久久亚洲精品影院| 囯产av无码片毛片一级| 国产偷国产偷在线高清| 天天色天天综合| 欧美日韩国产在线观看一区二区三区 | 国产尤物在线播放| 亚洲国产精品不卡在线| 日本免费a视频| 黄色网站在线观看无码| 亚洲一级毛片免费观看| 国产精品三区四区| 日本三级欧美三级| 亚洲色偷偷偷鲁综合| 日韩欧美亚洲国产成人综合| 国产91线观看| 精品伊人久久大香线蕉网站| 精品人妻无码中字系列| 欧美性久久久久| 日本久久网站| 99热这里只有精品免费| 中文国产成人精品久久一| 久久久成年黄色视频| 国产主播喷水| 99视频在线免费| 色综合成人| 亚洲自拍另类| 国产精品综合久久久| 国产精品va免费视频| 日本成人在线不卡视频| 波多野结衣视频一区二区| 69av免费视频| 真人免费一级毛片一区二区| а∨天堂一区中文字幕| 午夜综合网| 国产成人AV综合久久| 亚洲欧美日韩久久精品| 精品视频第一页| 免费在线播放毛片| 成年A级毛片| 亚洲欧美天堂网| 亚洲精品第一在线观看视频| 日韩免费中文字幕| 婷婷伊人五月|