• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于超算平臺(tái)和Hadoop的并行轉(zhuǎn)碼方案設(shè)計(jì)

      2014-11-20 08:19:14劉炳均戴云松
      電視技術(shù) 2014年7期
      關(guān)鍵詞:轉(zhuǎn)碼階段節(jié)點(diǎn)

      劉炳均,戴云松

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

      在當(dāng)今時(shí)代,電視網(wǎng)、電信網(wǎng)和互聯(lián)網(wǎng)的融合要求視頻數(shù)據(jù)可以同時(shí)在電視、手機(jī)和網(wǎng)絡(luò)進(jìn)行播放。但是,由于不同平臺(tái)的網(wǎng)絡(luò)帶寬狀況、終端播放設(shè)備、用戶需求千差萬(wàn)別,視頻的編碼格式、分辨率、幀率也各不相同。因此,需要對(duì)視頻進(jìn)行轉(zhuǎn)換編碼。但是,當(dāng)前的視頻轉(zhuǎn)碼存在兩個(gè)問題,一是計(jì)算量巨大,視頻數(shù)據(jù)存在著海量化的趨勢(shì);二是實(shí)時(shí)性難以保證,用戶不能在可容忍的時(shí)間內(nèi)得到轉(zhuǎn)碼結(jié)果。

      當(dāng)前,對(duì)于大規(guī)模的視頻轉(zhuǎn)碼,主流的解決方案有單機(jī)服務(wù)器轉(zhuǎn)碼和分布式服務(wù)器轉(zhuǎn)碼。然而,單機(jī)服務(wù)器轉(zhuǎn)碼計(jì)算能力有限,分布式視頻轉(zhuǎn)碼實(shí)現(xiàn)復(fù)雜,都不容易實(shí)現(xiàn)。筆者提出利用Hadoop搭建一個(gè)分布式轉(zhuǎn)碼系統(tǒng),結(jié)合超算平臺(tái)的強(qiáng)計(jì)算能力和多核多線程的特點(diǎn)以及MIC架構(gòu)的并行處理優(yōu)勢(shì)進(jìn)行大規(guī)模的轉(zhuǎn)碼任務(wù),有效解決了上述問題。

      1 技術(shù)基礎(chǔ)

      1.1 超算平臺(tái)

      廣州超級(jí)計(jì)算中心的業(yè)務(wù)主機(jī)為天河二號(hào),是當(dāng)前世界最快的超級(jí)計(jì)算機(jī)。超算平臺(tái)主要有3個(gè)特點(diǎn):一是計(jì)算能力強(qiáng),天河二號(hào)由16 000個(gè)節(jié)點(diǎn)組成,單個(gè)節(jié)點(diǎn)有3.431 Tflops運(yùn)算能力,16 000 個(gè)節(jié)點(diǎn)總計(jì)可達(dá)54.9 Pflops性能;二是多核多線程,每個(gè)節(jié)點(diǎn)有2個(gè)CPU處理器和3個(gè)MIC協(xié)處理器,并支持多線程編程;三是存儲(chǔ)容量大,每個(gè)運(yùn)算節(jié)點(diǎn)有64 Gbyte主存,而每個(gè)MIC協(xié)處理器板載8 Gbyte內(nèi)存,因此每個(gè)節(jié)點(diǎn)共有88 Gbyte內(nèi)存,總計(jì)16 000個(gè)節(jié)點(diǎn)一共有1.404 Pbyte內(nèi)存,而外部存儲(chǔ)器容量方面更是高達(dá)12.4 Pbyte。

      天河二號(hào)使用的MIC協(xié)處理器是Intel公司推出的基于集成眾核(Many Integrated Core,MIC)架構(gòu)的至強(qiáng)融核系列的一個(gè)產(chǎn)品。該產(chǎn)品雙精度性能達(dá)到每秒一萬(wàn)億次以上,并且支持并行編程模型。對(duì)于采用傳統(tǒng)CPU平臺(tái)很難實(shí)現(xiàn)性能進(jìn)一步提升的部分應(yīng)用,例如并行視頻轉(zhuǎn)碼,使用MIC協(xié)處理器是一個(gè)很好的選擇[1]。

      1.2 Hadoop

      Hadoop是一個(gè)實(shí)現(xiàn)了MapReduce模式的開源分布式計(jì)算框架。通過(guò)Hadoop,程序員可以方便快捷地開發(fā)分布式程序,利用計(jì)算機(jī)群的強(qiáng)處理能力和高存儲(chǔ)空間對(duì)海量數(shù)據(jù)進(jìn)行分布式處理。Hadoop的核心設(shè)計(jì)還包括一個(gè)分布式文件系統(tǒng)(HDFS)及分布式數(shù)據(jù)庫(kù)(HBase)[2]。圖1是Hadoop的組成示意圖。

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

      圖1 Hadoop的組成示意圖

      圖2 MapReduce模型作業(yè)流程圖

      HDFS是一個(gè)分布式文件系統(tǒng)。HDFS集群采用master-slave結(jié)構(gòu),由一個(gè)NameNode節(jié)點(diǎn)和多個(gè)DataNode節(jié)點(diǎn)組成。NameNode節(jié)點(diǎn)是主服務(wù)器,負(fù)責(zé)管理文件命名空間和調(diào)節(jié)客戶端訪問文件系統(tǒng)。DataNode負(fù)責(zé)提供實(shí)際的存儲(chǔ)服務(wù)。當(dāng)一個(gè)文件提交到HDFS中時(shí),HDFS會(huì)將該文件分割成一個(gè)或者多個(gè)塊,并存儲(chǔ)在若干個(gè)Data-Node節(jié)點(diǎn)中,每個(gè)塊都有多個(gè)副本,分別存儲(chǔ)在不同的DataNode上。同時(shí),NameNode節(jié)點(diǎn)記錄塊與DataNode之間的映射關(guān)系。當(dāng)需要對(duì)文件進(jìn)行讀寫時(shí),客戶端從NameNode獲取文件的元數(shù)據(jù)(Metadata),得到所有文件塊的存儲(chǔ)位置,再?gòu)南鄳?yīng)的DataNode直接進(jìn)行讀寫操作。具體如圖3所示。

      HBase建立在HDFS之上,提供高可靠性、高性能、列存儲(chǔ)、可伸縮、實(shí)時(shí)讀寫的數(shù)據(jù)庫(kù)系統(tǒng),適合用來(lái)存儲(chǔ)非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù),例如視頻數(shù)據(jù)。它可以橫向擴(kuò)展,通過(guò)不斷增加廉價(jià)的商用服務(wù)器,來(lái)增加計(jì)算和存儲(chǔ)能力。

      圖3 HDFS體系架構(gòu)圖

      1.3 FFmpeg

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

      ffmpeg - i video_origine.mpg video_finale.avi

      2 整體架構(gòu)設(shè)計(jì)

      由于超算平臺(tái)由眾多的節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)均可獨(dú)立工作,多個(gè)節(jié)點(diǎn)可協(xié)同工作,相當(dāng)于傳統(tǒng)分布式系統(tǒng)中的集群。本解決方案是以節(jié)點(diǎn)為單位搭建基于超算平臺(tái)的視頻轉(zhuǎn)碼系統(tǒng)。

      本系統(tǒng)主要由任務(wù)控制節(jié)點(diǎn)、視頻分割節(jié)點(diǎn)、Hadoop節(jié)點(diǎn)組構(gòu)成,其中Hadoop節(jié)點(diǎn)組的核心部分是HDFS模塊和MapReduce模塊。任務(wù)控制節(jié)點(diǎn)負(fù)責(zé)接收客戶端的任務(wù)請(qǐng)求,配置任務(wù)信息,監(jiān)控任務(wù)進(jìn)度,控制其他節(jié)點(diǎn)處理任務(wù)和返回任務(wù)結(jié)果。視頻分割節(jié)點(diǎn)負(fù)責(zé)將一個(gè)視頻分割成若干個(gè)視頻塊。Hadoop節(jié)點(diǎn)組的HDFS模塊負(fù)責(zé)視頻塊的存儲(chǔ),MapReduce模塊完成視頻轉(zhuǎn)碼工作和視頻塊合并工作。系統(tǒng)整體架構(gòu)如圖4所示。

      圖4 系統(tǒng)整體架構(gòu)圖

      各流程詳細(xì)說(shuō)明如下:

      1)客戶端發(fā)起一個(gè)轉(zhuǎn)碼請(qǐng)求,任務(wù)控制節(jié)點(diǎn)接受用戶上傳的視頻,處理用戶輸入的任務(wù)配置信息,分析視頻數(shù)據(jù)并生成任務(wù)對(duì)象,開始轉(zhuǎn)碼作業(yè)。

      2)任務(wù)控制節(jié)點(diǎn)將視頻傳輸給視頻分割節(jié)點(diǎn),并通知該節(jié)點(diǎn)將視頻分割成若干個(gè)視頻塊。

      3)視頻分割節(jié)點(diǎn)將分割結(jié)果存儲(chǔ)在Hadoop節(jié)點(diǎn)組的HDFS中。

      4)視頻分割節(jié)點(diǎn)通知任務(wù)控制節(jié)點(diǎn)分割作業(yè)完成,并返回分割后各個(gè)視頻塊的信息,例如大小和存儲(chǔ)位置等。

      5)任務(wù)控制節(jié)點(diǎn)根據(jù)任務(wù)對(duì)象的信息(任務(wù)要求時(shí)間、視頻大小、轉(zhuǎn)碼要求等)構(gòu)建合適的MapReduce作業(yè)框架,

      6)MapReduce模塊完成對(duì)視頻塊的轉(zhuǎn)碼任務(wù)和合并任務(wù),并把目標(biāo)視頻存儲(chǔ)在HDFS中。

      7)MapReduce模塊返回任務(wù)完成信息和目標(biāo)視頻的存儲(chǔ)信息。

      8)任務(wù)控制節(jié)點(diǎn)返回任務(wù)完成信息到客戶端,并提供目標(biāo)視頻的存儲(chǔ)位置。

      9)用戶從HDFS模塊下載目標(biāo)視頻,轉(zhuǎn)碼請(qǐng)求完成。

      2 技術(shù)實(shí)現(xiàn)

      2.1 任務(wù)控制節(jié)點(diǎn)

      當(dāng)客戶端發(fā)起一個(gè)轉(zhuǎn)碼請(qǐng)求時(shí),任務(wù)控制節(jié)點(diǎn)分析上傳的源視頻和用戶配置的任務(wù)需求,對(duì)當(dāng)前轉(zhuǎn)碼任務(wù)進(jìn)行建模,生成一個(gè)n維的任務(wù)特征向量T,其中T=[t0,t1,t2,…,tn-1],每一維都描述了轉(zhuǎn)碼任務(wù)的某一屬性,例如任務(wù)狀態(tài)、視頻名稱、視頻時(shí)長(zhǎng)、視頻大小、視頻源與目的編碼方式、視頻源與目的比特率、任務(wù)限時(shí)、目標(biāo)視頻大小限制、視頻塊與HDFS的映射表等,并將其加入隊(duì)列TaskQueue中。

      任務(wù)控制節(jié)點(diǎn)每次取出位于TaskQueue隊(duì)頭的向量對(duì)象T,并根據(jù)T中的信息,生成相應(yīng)的指令信號(hào)I,例如進(jìn)入下一執(zhí)行階段或者重做當(dāng)前階段等,最后將T和I傳輸?shù)较乱还?jié)點(diǎn),如此循環(huán),直到TaskQueue為空。

      2.2 視頻分割節(jié)點(diǎn)

      在Hadoop系統(tǒng)中,存儲(chǔ)在HDFS的文件是由一個(gè)或者多個(gè)數(shù)據(jù)塊組成,而且由于MapReduce框架的Map任務(wù)通常是并發(fā)執(zhí)行,所以需要對(duì)視頻數(shù)據(jù)進(jìn)行分割。但是,視頻數(shù)據(jù)是非結(jié)構(gòu)化數(shù)據(jù),視頻中幀與幀存在著關(guān)聯(lián)性,簡(jiǎn)單的物理劃分會(huì)導(dǎo)致視頻數(shù)據(jù)信息受損。

      所以在該節(jié)點(diǎn)中,需要使用專門的媒體處理工具來(lái)實(shí)現(xiàn)視頻分割的功能,例如FFmpeg,mencoder等。在實(shí)現(xiàn)時(shí),可以在視頻分割節(jié)點(diǎn)集成多種視頻分割工具。

      視頻分割節(jié)點(diǎn)接受任務(wù)控制節(jié)點(diǎn)傳遞過(guò)來(lái)的任務(wù)對(duì)象T和指令信號(hào)I,從T中提取視頻信息并分析,動(dòng)態(tài)選取最合適的工具,最后生成一個(gè)個(gè)互相獨(dú)立的視頻塊并存儲(chǔ)在HDFS的各個(gè)DataNode中等待轉(zhuǎn)碼處理,同時(shí)更新任務(wù)對(duì)象T,并傳輸回任務(wù)控制節(jié)點(diǎn),加入隊(duì)列TaskQueue中等待下一步處理。

      2.3 MapReduce模塊

      MapReduce模塊接受任務(wù)控制節(jié)點(diǎn)傳遞來(lái)的任務(wù)對(duì)象T和指令信號(hào)I,然后根據(jù)T中信息,獲取視頻塊的存儲(chǔ)位置,即DataNode編號(hào),開始轉(zhuǎn)碼作業(yè)。

      作業(yè)分為兩個(gè)階段:Map階段和Reduce階段。Map階段負(fù)責(zé)視頻塊的轉(zhuǎn)碼,在這個(gè)階段,多個(gè)Map任務(wù)并行執(zhí)行。每個(gè)Map任務(wù)都運(yùn)行在存儲(chǔ)其要處理的視頻塊的DataNode上,這樣避免了節(jié)點(diǎn)間的文件傳輸。Map任務(wù)結(jié)束后,轉(zhuǎn)碼結(jié)果不上傳到HDFS中,而是保留在本地節(jié)點(diǎn)。所有的Map任務(wù)完成后,開啟Reduce階段,在這個(gè)階段,Reduce任務(wù)只有一個(gè),它會(huì)訪問所有執(zhí)行Map任務(wù)的節(jié)點(diǎn),取得各個(gè)視頻塊的轉(zhuǎn)碼結(jié)果,然后按順序合并成目標(biāo)視頻,最后上傳至HDFS中,同時(shí),更新并傳輸對(duì)象T到任務(wù)控制節(jié)點(diǎn)。

      2.3.1 移植FFmpeg到MIC(Map階段)

      視頻轉(zhuǎn)碼工作是發(fā)生在MapReduce框架的Map階段。

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

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

      該代碼中的for循環(huán)將在MIC卡上運(yùn)行。

      MIC芯片通常有數(shù)十個(gè)精簡(jiǎn)的x86核心,提供高度并行的計(jì)算能力。所以,在移植FFmpeg時(shí),可以對(duì)其進(jìn)行并行化,進(jìn)一步加速其轉(zhuǎn)碼速度。本方案使用的手段是OpenMP。OpenMP是一種API,用于編寫可移植的多線程應(yīng)用程序,它能夠?yàn)榫帉懚嗑€程應(yīng)用程序提供一種簡(jiǎn)單的方法,而無(wú)需程序員進(jìn)行復(fù)雜的線程創(chuàng)建、同步、負(fù)載均衡和銷毀工作。OpenMP采用引語(yǔ)的方式對(duì)程序進(jìn)行并行化,其中最常用的方法是對(duì)循環(huán)進(jìn)行并行化[4]。上面例子使用OpenMP并行化后如下:

      通過(guò)使用MIC編程與OpenMP,將原來(lái)運(yùn)行在CPU上的FFmpeg程序移植到MIC卡,充分發(fā)揮MIC架構(gòu)的浮點(diǎn)運(yùn)算能力和高度并行能力,從而加速視頻轉(zhuǎn)碼的效率。

      2.3.2 任務(wù)并行化(Reduce階段)

      視頻合并工作是發(fā)生在MapReduce框架的Reduce階段。在這個(gè)階段,Reduce任務(wù)在所有Map任務(wù)完成后啟動(dòng),讀取所有轉(zhuǎn)碼后的視頻塊,并按照其編號(hào)的順序,合并視頻。傳統(tǒng)的解決方案一般會(huì)以串行的方式完成這個(gè)工作,而且由于受運(yùn)行節(jié)點(diǎn)的主存容量限制,合并過(guò)程中產(chǎn)生的中間結(jié)果需要存放在硬盤上,I/O開銷較大。

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

      2.4 HDFS 模塊

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

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

      3 總結(jié)與展望

      當(dāng)前視頻數(shù)據(jù)存在著海量化、多平臺(tái)化、多編碼標(biāo)準(zhǔn)化的趨勢(shì),傳統(tǒng)的視頻轉(zhuǎn)碼方案已經(jīng)滿足不了日益增長(zhǎng)的用戶需求。所以,本文提出一種基于超算平臺(tái)和Hadoop的視頻并行轉(zhuǎn)碼方案??偟膩?lái)說(shuō),方案有兩個(gè)重點(diǎn):一是基于Hadoop框架優(yōu)秀的并行任務(wù)處理能力,高擴(kuò)展性和高容錯(cuò)性,使用MapReduce思想搭建一個(gè)并行轉(zhuǎn)碼系統(tǒng),完成對(duì)視頻的分割、轉(zhuǎn)碼和合并。二是結(jié)合超算平臺(tái)的優(yōu)勢(shì),采用特殊的技術(shù)實(shí)現(xiàn)方法來(lái)提高系統(tǒng)并行轉(zhuǎn)碼的能力,例如移植FFmpeg到MIC卡。

      當(dāng)然,本方案還有許多需要改進(jìn)之處。例如,需要進(jìn)一步研究,提出更多可行的方法來(lái)提高轉(zhuǎn)碼系統(tǒng)的性能。FFmpeg能夠處理大多數(shù)視頻格式,但不是所有,需要添加對(duì)特定格式的支持。在MIC卡上并行處理視頻數(shù)據(jù)時(shí)要考慮視頻數(shù)據(jù)的關(guān)聯(lián)性,HDFS中視頻塊大小設(shè)置對(duì)并行度的影響等。

      總之,本文希望通過(guò)提出一種基于超算平臺(tái)的海量視頻轉(zhuǎn)碼解決方案來(lái)滿足目前的轉(zhuǎn)碼需求。同時(shí),通過(guò)本文在方案中對(duì)超算平臺(tái)的分析和應(yīng)用,為其他大規(guī)模數(shù)據(jù)處理應(yīng)用提供新的思路、新的選擇。

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

      [2]楊帆,沈奇威.分布式系統(tǒng)Hadoop平臺(tái)的視頻轉(zhuǎn)碼[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,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高性能計(jì)算編程指南[M].北京:中國(guó)水利水電出版社,2012.

      猜你喜歡
      轉(zhuǎn)碼階段節(jié)點(diǎn)
      移動(dòng)云盤在線轉(zhuǎn)碼功能技術(shù)研究
      CM節(jié)點(diǎn)控制在船舶上的應(yīng)用
      關(guān)于基礎(chǔ)教育階段實(shí)驗(yàn)教學(xué)的幾點(diǎn)看法
      Analysis of the characteristics of electronic equipment usage distance for common users
      基于AutoCAD的門窗節(jié)點(diǎn)圖快速構(gòu)建
      視頻轉(zhuǎn)碼技術(shù)在廣播電視中的應(yīng)用研究
      締客世界(2020年1期)2020-12-12 18:18:28
      在學(xué)前教育階段,提前搶跑,只能跑得快一時(shí),卻跑不快一生。
      莫愁(2019年36期)2019-11-13 20:26:16
      基于IPTV點(diǎn)播業(yè)務(wù)的視頻分段式轉(zhuǎn)碼方案的研究與應(yīng)用
      傳播力研究(2018年7期)2018-05-10 09:42:47
      基于Hadoop 的分布式視頻轉(zhuǎn)碼方案
      抓住人才培養(yǎng)的關(guān)鍵節(jié)點(diǎn)
      南平市| 江北区| 漯河市| 邛崃市| 仪征市| 禄丰县| 三河市| 吉安县| 民勤县| 渑池县| 蒲江县| 丰都县| 亳州市| 务川| 定安县| 当阳市| 顺义区| 永定县| 康马县| 泸西县| 南充市| 苍梧县| 清水河县| 乐亭县| 祁门县| 襄垣县| 丹凤县| 大同市| 会泽县| 溆浦县| 黄浦区| 民丰县| 若尔盖县| 丹阳市| 临沭县| 忻城县| 平原县| 汶川县| 永胜县| 行唐县| 鲜城|