版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 中文題目:基于測量的在線視頻流媒體質(zhì)量因素分析 </p><p> 英文題目:Using Spark to analyze factors for </p><p> the quality of video streaming</p><
2、;p> 2014 年 6 月 4 日</p><p> 題 目: 基于測量的在線視頻流媒體質(zhì)量因素分析 </p><p> 學(xué)院:電信學(xué)院專業(yè):自動化(鐵道信號)</p><p> 學(xué)生姓名: 學(xué)號: &l
3、t;/p><p> 指導(dǎo)教師建議成績: </p><p> 評閱教師建議成績: </p><p> 答辯小組建議成績: </p><p><b> 答辯委員會意見:</b></p><
4、p><b> 最終成績:</b></p><p> 主管教學(xué)副院長或答辯委員會主席簽字:</p><p> 年 月 日</p><p> 題 目: 基于測量的在線視頻流媒體質(zhì)量因素分析 </p><p>
5、; 適合專業(yè): 自動化 自動化(鐵道信號) </p><p> 指導(dǎo)教師(簽名): 郭宇春 提交日期: 2014 年 3 月 2 日</p><p> 學(xué)院:電信 專業(yè):自動化(鐵道信號) </p><p> 學(xué)生姓名: 學(xué)號: </p><p>
6、題 目: 基于測量的在線視頻流媒體質(zhì)量因素分析 </p><p> 學(xué)院:電子信息工程學(xué)院 專業(yè):自動化(鐵道信號) </p><p> 學(xué)生姓名: 學(xué)號: </p><p> 指導(dǎo)教師簽名: 審核日期:
7、 年 月 日</p><p> 題 目: 基于測量的在線視頻流媒體質(zhì)量因素分析 </p><p> 學(xué)院:電子信息工程學(xué)院 專業(yè):自動化(鐵道信號) </p><p> 學(xué)生姓名: 學(xué)號: </p><p> 總成績:_______指導(dǎo)教師 (簽名)
8、:_________日期:______年 月 日</p><p> 題 目: 基于測量的在線視頻流媒體質(zhì)量因素分析 </p><p> 學(xué)院:電子信息工程學(xué)院 專業(yè):自動化(鐵道信號) </p><p> 學(xué)生姓名: 學(xué)號: </p><p> 評定成績:
9、 評閱人: 日期: 年 月 日</p><p> 題 目: 基于測量的在線視頻流媒體質(zhì)量因素分析 </p><p> 學(xué)院:電子信息工程學(xué)院 專業(yè):自動化(鐵道信號) </p><p> 學(xué)生姓名: 學(xué)號: </p>&l
10、t;p> 評定成績: 答辯組長: 日期: 年 月 日</p><p><b> 中文摘要</b></p><p> Spark是一個針對超大數(shù)據(jù)集合的低延遲的集群分布式計(jì)算系統(tǒng),Spark兼容于Hadoop 數(shù)據(jù)源,但是比MapReducer快100倍左右,特別適合于機(jī)器學(xué)習(xí)處理。Spark還在萌芽
11、階段,尚未高速發(fā)展,隨著Spark1.0.0 版本的發(fā)布,標(biāo)志著apache的頂級開源項(xiàng)目Spark作為大數(shù)據(jù)的新貴,越來越多的受到IT業(yè)界的極大關(guān)注,將被廣泛應(yīng)用。</p><p> 搭載實(shí)現(xiàn)Spark平臺并應(yīng)用Spark來研究處理分析在線視頻流媒體質(zhì)量因素。</p><p> 論文介紹了課題的相關(guān)研究背景知識,并且對Spark的組成及原理進(jìn)行了詳細(xì)地介紹和研究。根據(jù)實(shí)驗(yàn)的需要,完成
12、了平臺的總體配置,對其性能進(jìn)行了驗(yàn)證,研究其機(jī)器學(xué)習(xí)庫。首先介紹在業(yè)界獲得普遍認(rèn)同的分布式文件系統(tǒng)的用戶需求和架構(gòu)模型.然后針對RDD的體系架構(gòu)進(jìn)行介紹,最后通過KMeans機(jī)器學(xué)習(xí)算法分析了用戶在流媒體視頻觀看時間與緩沖次數(shù)的關(guān)系,總結(jié)了流媒體相關(guān)因素的關(guān)系。</p><p> 實(shí)驗(yàn)采用的平臺是Linux的Ubuntu12.04LTS版本,應(yīng)用的是Apache Spark平臺。系統(tǒng)所有的編寫、調(diào)試與測試都在此
13、實(shí)驗(yàn)平臺下進(jìn)行。</p><p> 關(guān)鍵詞:Spark;機(jī)器學(xué)習(xí);KMeans;數(shù)據(jù)挖掘;視頻流媒體</p><p><b> Abstract</b></p><p> Apache Spark is a fast and general engine for large-scale data processing.Which run
14、programs up to 100x faster than Hadoop MapReduce in memory,or 10x faster on disk.Spark is easy to use,writing applications quickly in Java, Scala or Python.More and more IT engineers pay attention to it,and it is being w
15、idely used in famous companies such as Alibaba Taobao,Amazon,Baidu,Netease,Sohu,Tencent,Yahoo!.</p><p> Using machine learning for data mining analyzing the relationship between buffer and time of user view
16、ing by Spark.</p><p> Introducing the related background knowledge of Spark and principle of Spark.According to the needs of the experiment,building the platform of Spark.Secondly,introducing the architect
17、ure model of RDD.Then using the Kmeans algorithm for analyzing the relationship between buffer and time of user viewing through machine learning.In the end,summarizing the relationships between the related factors of str
18、eaming video. </p><p> The experimental platform used is the Linux version of Ubuntu12.04 LTS and Apache Spark platform.All the writing,debugging and testing is in this platform.</p><p> Key w
19、ords:spark; machine learning; K-means; data mining; streaming video</p><p><b> 目錄</b></p><p><b> 目錄1</b></p><p><b> 第一章 前言3</b></p>
20、<p> 1.1 課題研究背景和意義3</p><p> 1.2 課題研究內(nèi)容和本文的主要工作方法5</p><p> 1.3 論文組織結(jié)構(gòu)5</p><p> 第二章 Spark開發(fā)平臺概述6</p><p> 2.1 Spark的背景6</p><p> 2.1.1 Sp
21、ark的介紹6</p><p> 2.1.2 Spark的適用場景8</p><p> 2.1.3 在業(yè)界的使用8</p><p> 2.1.4 Spark與Hadoop對比8</p><p> 2.2 RDD框架概述9</p><p> 2.2.1 RDD介紹9</p>
22、<p> 2.2.2 RDD的主要創(chuàng)建方式9</p><p> 2.2.3 RDD的特點(diǎn)10</p><p> 2.2.4 RDD的好處10</p><p> 2.2.5 RDD的存儲與分區(qū)10</p><p> 2.2.6 容錯性10</p><p> 2.2.7可用性。1
23、0</p><p> 2.2.8 RDD的內(nèi)部表示11</p><p> 2.3 Local模式和Mesos模式11</p><p> 2.4 作用于RDD的各種操作11</p><p> 2.5 Spark的編程模型12</p><p> 第三章 Spark平臺搭建13</p>
24、;<p> 3.1 安裝Ubuntu Linux操作系統(tǒng)13</p><p> 3.2 配置安裝Java JDK13</p><p> 3.2.1 下載jdk13</p><p> 3.2.2 安裝jdk14</p><p> 3.2.3 配置環(huán)境變量14</p><p>
25、 3.2.4 檢查是否安裝成功14</p><p> 3.3 搭建Hadoop環(huán)境15</p><p> 3.3.1 下載安裝Hadoop15</p><p> 3.3.2 配置hadoop15</p><p> 3.3.3 安裝rsync和ssh16</p><p> 3.3.4 配置
26、ssh免登錄16</p><p> 3.3.5 啟動hadoop17</p><p> 3.4 安裝Scala18</p><p> 3.5 部署Spark20</p><p> 3.5.1 下載spark-1.0.0源碼20</p><p> 3.5.2 解壓編譯20</p>
27、;<p> 3.5.3 設(shè)置SPARK_HOME環(huán)境變量20</p><p> 3.5.4 驗(yàn)證spark環(huán)境21</p><p> 第四章 機(jī)器學(xué)習(xí)算法模型22</p><p> 4.1 聚類分析23</p><p> 4.2 K-means algorithm23</p><
28、p> 4.2.1 算法描述24</p><p> 4.2.2 算法的性能分析24</p><p> 第五章 實(shí)驗(yàn)處理與實(shí)驗(yàn)分析25</p><p> 5.1 預(yù)處理待測量的數(shù)據(jù)集26</p><p> 5.2 待測量數(shù)據(jù)集的條數(shù)26</p><p> 5.3 運(yùn)用KMeans算法
29、27</p><p> 5.3.1 下載NumPy27</p><p> 5.3.2 Kmeans算法的python代碼28</p><p> 5.3.3 在Spark中運(yùn)行29</p><p> 5.4 聚類效果及分析30</p><p> 5.4.1 Kmeans中k值的選取30&l
30、t;/p><p> 5.4.2 本次實(shí)驗(yàn)結(jié)果分析32</p><p> 5.5 結(jié)論33</p><p> 第六章 結(jié)束語34</p><p><b> 參考文獻(xiàn)34</b></p><p><b> 附錄36</b></p><p
31、><b> 第一章 前言</b></p><p> 1.1 課題研究背景和意義</p><p> 流媒體(Video Streaming)是指在Internet中使用流式傳輸技術(shù)的連續(xù)時基媒體,視頻流媒體(Media Streaming)業(yè)務(wù)是指支持多媒體數(shù)據(jù)流通過網(wǎng)絡(luò)從服務(wù)器向客戶機(jī)傳送,接收方邊接收邊播放的技術(shù)。與傳統(tǒng)的先下載后播放的做法相比,流媒
32、體技術(shù)有很大的優(yōu)勢,如實(shí)時性強(qiáng),有利于保護(hù)版權(quán)等。隨著計(jì)算機(jī)網(wǎng)絡(luò)和多媒體技術(shù)的不斷發(fā)展,流媒體直播技術(shù)的應(yīng)用越來越廣泛,傳統(tǒng)的Flash早已被視頻流媒體所取代。近年來,無線網(wǎng)絡(luò)的飛速發(fā)展和帶寬的迅速提高,為流媒體技術(shù)在無線網(wǎng)絡(luò)中的應(yīng)用奠定了堅(jiān)實(shí)的基礎(chǔ)。</p><p> 在流媒體的背后進(jìn)行著的是對大數(shù)據(jù)的挖掘,數(shù)據(jù)挖掘一般是指從大量的數(shù)據(jù)中通過算法搜索隱藏于其中信息的過程。數(shù)據(jù)挖掘通常與計(jì)算機(jī)科學(xué)有關(guān),并通過統(tǒng)
33、計(jì)、在線分析處理、情報檢索、機(jī)器學(xué)習(xí)、專家系統(tǒng)和模式識別等諸多方法來實(shí)現(xiàn)上述目標(biāo)。</p><p> 大數(shù)據(jù),一個似乎已經(jīng)被媒體傳播的過于泛濫的詞匯,的的確確又在逐漸影響和改變著我們的生活。也許有人認(rèn)為大數(shù)據(jù)在中國仍然只是噱頭,但在當(dāng)前中國互聯(lián)網(wǎng)領(lǐng)域,大數(shù)據(jù)以及大數(shù)據(jù)所催生出來的生產(chǎn)力正在潛移默化地推動業(yè)務(wù)發(fā)展,并為廣大中國網(wǎng)民提供更加優(yōu)秀的服務(wù)。</p><p> 提到大數(shù)據(jù),自然不
34、能不提Hadoop[1]。HDFS已然成為大數(shù)據(jù)公認(rèn)的存儲,而MapReduce作為其搭配的數(shù)據(jù)處理框架在大數(shù)據(jù)發(fā)展的早期表現(xiàn)出了重大的價值。可由于其設(shè)計(jì)上的約束MapReduce只適合處理離線計(jì)算,其在實(shí)時性上仍有較大的不足,隨著業(yè)務(wù)的發(fā)展,業(yè)界對實(shí)時性和準(zhǔn)確性有更多的需求,很明顯單純依靠MapReduce框架已經(jīng)不能滿足業(yè)務(wù)的需求了。Hadoop中的數(shù)據(jù)傳送與共享,串行方式、復(fù)制以及磁盤IO等因素使得Hadoop集群在低延遲、實(shí)時計(jì)
35、算方面表現(xiàn)有待改進(jìn)。</p><p> 優(yōu)酷土豆作為國內(nèi)最大的視頻網(wǎng)站,和國內(nèi)其他互聯(lián)網(wǎng)巨頭一樣,率先看到大數(shù)據(jù)對公司業(yè)務(wù)的價值,早在2009年就開始使用Hadoop集群,隨著這些年業(yè)務(wù)迅猛發(fā)展,優(yōu)酷土豆又率先嘗試了仍處于大數(shù)據(jù)前沿領(lǐng)域的Spark內(nèi)存計(jì)算框架,很好地解決了機(jī)器學(xué)習(xí)和圖計(jì)算多次迭代的瓶頸問題,使得公司大數(shù)據(jù)分析更加完善。在今天,數(shù)據(jù)處理要求非常快,作為Hadoop的替代者,Spark性能比Map
36、Reduce提升很多,使其成為一大熱門開源項(xiàng)目。</p><p> Apache Spark是新推出的一個高效的分布式計(jì)算系統(tǒng),是一個通用的并行計(jì)算框架,發(fā)源于美國加州大學(xué)伯克利分校AMPLab[2]的集群計(jì)算平臺。Databricks,Cloudera都已決定支持Spark,Spark被認(rèn)為是大數(shù)據(jù)領(lǐng)域的大事情,且很有可能成為大數(shù)據(jù)領(lǐng)域的下一個大家伙。</p><p> Spark內(nèi)
37、存計(jì)算框架適合各種迭代算法和交互式數(shù)據(jù)分析,能夠提升大數(shù)據(jù)處理的實(shí)時性和準(zhǔn)確性。而MapReduce處理框架則擅長復(fù)雜的批處理操作、登陸過濾、ETL(數(shù)據(jù)抽取、轉(zhuǎn)換、加載)、網(wǎng)頁索引等應(yīng)用,MapReduce在低延遲業(yè)務(wù)上一直被人所詬病。</p><p> 作為一個基于內(nèi)存in-memory數(shù)據(jù)處理平臺,兼容于Hadoop 數(shù)據(jù)源但是比Hadoop MapReduce運(yùn)行得快得多。Spark迭代計(jì)算的主要實(shí)現(xiàn)思
38、想就是RDD,把所有計(jì)算的數(shù)據(jù)保存在分布式的內(nèi)存中。RDD 是分布在一組節(jié)點(diǎn)中的只讀對象集合。這些集合是彈性的,如果數(shù)據(jù)集一部分丟失,則可以對它們進(jìn)行重建。迭代計(jì)算通常情況下都是對同一個數(shù)據(jù)集做反復(fù)的迭代計(jì)算,數(shù)據(jù)在內(nèi)存中將大大提升IO操作。這也是Spark涉及的核心:內(nèi)存計(jì)算。Spark是基于內(nèi)存的迭代計(jì)算框架,適用于需要多次操作特定數(shù)據(jù)集的應(yīng)用場合。需要反復(fù)操作的次數(shù)越多,所需讀取的數(shù)據(jù)量越大,受益越大,數(shù)據(jù)量小但是計(jì)算密集度較大的
39、場合,受益就相對較小。</p><p> 雖然 Spark 與 Hadoop 有相似之處,但它提供了具有有用差異的一個新的集群計(jì)算框架。首先,Spark 是為集群計(jì)算中的特定類型的工作負(fù)載而設(shè)計(jì),即那些在并行操作之間重用工作數(shù)據(jù)集(比如機(jī)器學(xué)習(xí)算法)的工作負(fù)載。為了優(yōu)化這些類型的工作負(fù)載,Spark 引進(jìn)了內(nèi)存集群計(jì)算的概念,可在內(nèi)存集群計(jì)算中將數(shù)據(jù)集緩存在內(nèi)存中,以縮短訪問延遲。</p><
40、;p> RDD能夠從磁盤讀取然后保持在內(nèi)存中,提高了性能,這和Hadoop大部分基于磁盤的速度要快多。Spark也可以直接對HDFS進(jìn)行數(shù)據(jù)的讀寫。Spark可以與MapReduce運(yùn)行于同集群中,共享存儲資源與計(jì)算。</p><p> 本實(shí)驗(yàn)選擇Spark是因?yàn)閭鹘y(tǒng)的并行計(jì)算模型無法有效的解決迭代計(jì)算(iterative)和交互式計(jì)算(interactive);而Spark的使命便是解決這兩個問題,這
41、也是它存在的價值和理由。因此特別適合于機(jī)器學(xué)習(xí)處理來分析大數(shù)據(jù)。</p><p> 本文著眼于聚類的機(jī)器學(xué)習(xí)方法應(yīng)用分布式系統(tǒng)處理挖掘大數(shù)據(jù),通過spark對流媒體質(zhì)量因素進(jìn)行測量和分析,關(guān)聯(lián)分析在不同技術(shù)條件和環(huán)境下流媒體的質(zhì)量特征與因素,得出不同元素如媒體內(nèi)容、終端類型、地理位置、觀看時間等對視頻流媒體質(zhì)量影響的關(guān)系和程度。</p><p> 1.2 課題研究內(nèi)容和本文的主要工作
42、方法</p><p> 本畢業(yè)設(shè)計(jì)主要任務(wù)是搭載實(shí)現(xiàn)Spark平臺并應(yīng)用Spark來研究處理分析在線視頻流媒體質(zhì)量因素。包括:</p><p> (1) 對Spark平臺下的RDD(彈性分布式數(shù)據(jù)集),機(jī)器學(xué)習(xí)算法KMeans以及相關(guān)的機(jī)制進(jìn)行了分析和研究,這為運(yùn)用機(jī)器學(xué)習(xí)算法進(jìn)行分析打好了基礎(chǔ)。</p><p> (2) 通過安裝hadoop、jdk、sca
43、la、spark,并配置環(huán)境變量,搭建完成Spark平臺。</p><p> (3) 對數(shù)據(jù)集進(jìn)行了預(yù)處理。</p><p> (4) 采用機(jī)器學(xué)習(xí)算法對預(yù)處理的數(shù)據(jù)集進(jìn)行計(jì)算。</p><p> (5) 從理論上分析了實(shí)驗(yàn)結(jié)果。</p><p> 1.3 論文組織結(jié)構(gòu)</p><p> 第一章闡述了課題
44、的背景及意義。介紹了分布式文件系統(tǒng)。提出了本文研究的主要內(nèi)容。</p><p> 第二章詳細(xì)介紹了Spark開發(fā)平臺,對RDD的相關(guān)特性,框架,機(jī)制進(jìn)行了深入的討論。</p><p> 第三章描述了平臺的搭載過程并通過運(yùn)行例子驗(yàn)證其有效性。</p><p> 第四章描述了機(jī)器學(xué)習(xí)算法中的聚類模型KMeans。</p><p> 第五章
45、通過處理分析數(shù)據(jù),得出不同數(shù)據(jù)因素之間的關(guān)系。</p><p> 第六章為全文總結(jié)。列舉了本論文的研究成果,并分析了研究工作的不足,展望了進(jìn)一步研究的內(nèi)容和方向。</p><p> 第二章 Spark開發(fā)平臺概述</p><p> 2.1 Spark的背景</p><p> 2.1.1 Spark的介紹</p>&
46、lt;p> Spark是一種與Hadoop相似的開源集群計(jì)算環(huán)境,在性能和迭代計(jì)算上很有看點(diǎn),現(xiàn)在是Apache的頂級孵化項(xiàng)目。Spark由加州大學(xué)伯克利分校AMP實(shí)驗(yàn)室(Algorithms,Machines,and People Lab)開發(fā),可用來構(gòu)建大型的、低延遲的數(shù)據(jù)分析應(yīng)用程序。Spark啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負(fù)載。Spark是在 Scala語言中實(shí)現(xiàn)的,它將Scala用
47、作其應(yīng)用程序框架,而Scala的語言特點(diǎn)也鑄就了大部分Spark的成功。項(xiàng)目的core部分的代碼只有63個Scala文件,非常短小精悍。與 Hadoop不同,Spark和Scala能夠緊密集成,其中的Scala可以像操作本地集合對象一樣輕松地操作分布式數(shù)據(jù)集。盡管創(chuàng)建Spark是為了支持分布式數(shù)據(jù)集上的迭代作業(yè),但是實(shí)際上它是對Hadoop的補(bǔ)充,可以在Hadoop文件系統(tǒng)中并行運(yùn)行。通過名為 Mesos的第三方集群框架可以支持此行為。
48、Spark可用來構(gòu)建大型的、低延遲的數(shù)據(jù)分析應(yīng)用程序。</p><p> Spark和Hadoop MapReduce類似,由Master(類似于MapReduce的Jobtracker)和Workers(Spark的Slave工作節(jié)點(diǎn))組成。用戶編寫的Spark程序被稱為Driver程序,Driver程序會連接master并定義了對各RDD的轉(zhuǎn)換與操作,這些驅(qū)動程序可實(shí)現(xiàn)在單一節(jié)點(diǎn)上執(zhí)行的操作或在一組節(jié)點(diǎn)上并
49、行執(zhí)行的操作。與 Hadoop 類似,Spark 支持單節(jié)點(diǎn)集群或多節(jié)點(diǎn)集群。對于多節(jié)點(diǎn)操作,Spark 依賴于 Mesos 集群管理器。Mesos 為分布式應(yīng)用程序的資源共享和隔離提供了一個有效平臺。該設(shè)置充許 Spark 與 Hadoop 共存于節(jié)點(diǎn)的一個共享池中。而對RDD的轉(zhuǎn)換與操作通過Scala閉包(字面量函數(shù))來表示,Scala使用Java對象來表示閉包且都是可序列化的,以此把對RDD的閉包操作發(fā)送到各Workers節(jié)點(diǎn)。
50、Workers存儲著數(shù)據(jù)分塊和享有集群內(nèi)存,是運(yùn)行在工作節(jié)點(diǎn)上的守護(hù)進(jìn)程,當(dāng)它收到對RDD的操作時,根據(jù)數(shù)據(jù)分片信息進(jìn)行本地化數(shù)據(jù)操作,生成新的數(shù)據(jù)分片、返回結(jié)果或把RDD寫入存儲系統(tǒng)。 </p><p> Spark是開源的類Hadoop MapReduce的通用的并行計(jì)算框架,Spark基于map reduce算法實(shí)現(xiàn)的分布式計(jì)算,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce
51、的是Job中間輸出和結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS。除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負(fù)載。Spark的迭代,內(nèi)存運(yùn)算能力以及交互式計(jì)算,能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的map reduce的算法。其架構(gòu)如圖2.1.1所示。</p><p><b> 圖2.1.1</b></p><p> 2.1.2 Spark的適用場景
52、</p><p> Spark是基于內(nèi)存的迭代計(jì)算框架,適用于需要多次操作特定數(shù)據(jù)集的應(yīng)用場合。需要反復(fù)操作的次數(shù)越多,所需讀取的數(shù)據(jù)量越大,受益越大,數(shù)據(jù)量小但是計(jì)算密集度較大的場合,受益就相對較小。</p><p> 由于RDD的特性,Spark不適用那種異步細(xì)粒度更新狀態(tài)的應(yīng)用,例如web服務(wù)的存儲或者是增量的web爬蟲和索引。就是對于那種增量修改的應(yīng)用模型不適合??偟膩碚fSpa
53、rk的適用面比較廣泛且比較通用。</p><p> 2.1.3 在業(yè)界的使用</p><p> Spark項(xiàng)目在2009年啟動,2010年開源, 現(xiàn)在使用的有:Berkeley、Princeton、Klout、Foursquare、Conviva、Quantifind、Yahoo!、阿里巴巴、Cloudera、Databricks、IBM、英特爾、淘寶等[3],豆瓣也在使用Spark
54、的python克隆版Dpark。</p><p> 2.1.4 Spark與Hadoop對比</p><p> Spark提供的數(shù)據(jù)集操作類型有很多種,不像Hadoop只提供了Map和Reduce兩種操作。比如map,filter,flatMap,sample,groupByKey, union, join, cogroup, reduceByKey, mapValues, sort
55、, partionBy等多種操作類型,Spark把這些操作稱為Transformations。同時還提供Count, collect, reduce, lookup, save等多種actions操作。</p><p> 這些多種多樣的數(shù)據(jù)集操作類型,給給開發(fā)上層應(yīng)用的用戶提供了方便。各個處理節(jié)點(diǎn)之間的通信模型不再像Hadoop那樣就是唯一的Data Shuffle一種模式。用戶可以命名,物化,控制中間結(jié)果的存
56、儲、分區(qū)等??梢哉f編程模型比Hadoop更靈活。</p><p><b> 圖2.1.4</b></p><p> 2.2 RDD框架概述</p><p> 2.2.1 RDD介紹</p><p> 彈性分布數(shù)據(jù)集Resilient Distributed Dataset(RDD)是Spark的最基本抽象,是
57、對分布式內(nèi)存的抽象使用,實(shí)現(xiàn)了以操作本地集合的方式來操作分布式數(shù)據(jù)集的抽象實(shí)現(xiàn)。RDD是Spark最核心的東西,也是設(shè)計(jì)精華所在。將它理解為一個大的集合,將所有數(shù)據(jù)都加載到內(nèi)存中,方便進(jìn)行多次重用。第一,它是分布式的,可以分布在多臺機(jī)器上,進(jìn)行計(jì)算。第二,它是彈性的,在計(jì)算處理過程中,機(jī)器的內(nèi)存不夠時,它會和硬盤進(jìn)行數(shù)據(jù)交換,某種程度上會減低性能,但是可以確保計(jì)算得以繼續(xù)進(jìn)行。它表示已被分區(qū),不可變的并能夠被并行操作的數(shù)據(jù)集合,不同的數(shù)
58、據(jù)集格式對應(yīng)不同的RDD實(shí)現(xiàn)。RDD必須是可序列化的。RDD可以cache到內(nèi)存中,每次對RDD數(shù)據(jù)集的操作之后的結(jié)果,都可以存放到內(nèi)存中,下一個操作可以直接從內(nèi)存中輸入,省去了MapReduce大量的磁盤IO操作。這對于迭代運(yùn)算比較常見的機(jī)器學(xué)習(xí)算法, 交互式數(shù)據(jù)挖掘來說,效率提升比較大。</p><p> 2.2.2 RDD的主要創(chuàng)建方式</p><p> 1. 從Hadoop文
59、件系統(tǒng)(或與Hadoop兼容的其它存儲系統(tǒng))輸入(例如HDFS)創(chuàng)建。</p><p> 2. 通過已存在的RDD轉(zhuǎn)換得到新RDD。</p><p> 2.2.3 RDD的特點(diǎn)</p><p> 1. 它是在集群節(jié)點(diǎn)上的不可變的、已分區(qū)的集合對象。 </p><p> 2. 通過并行轉(zhuǎn)換的方式來創(chuàng)建如(map, filter, jo
60、in, etc)。 </p><p> 3. 失敗自動重建。 </p><p> 4. 可以控制存儲級別(內(nèi)存、磁盤等)來進(jìn)行重用。 </p><p> 5. 必須是可序列化的。 </p><p> 6. 是靜態(tài)類型的。 </p><p> 2.2.4 RDD的好處</p><p>
61、 1. RDD只能從持久存儲或通過Transformations操作產(chǎn)生,相比于分布式共享內(nèi)存(DSM)可以更高效實(shí)現(xiàn)容錯,對于丟失部分?jǐn)?shù)據(jù)分區(qū)只需根據(jù)它的lineage就可重新計(jì)算出來,而不需要做特定的Checkpoint。 </p><p> 2. RDD的不變性,可以實(shí)現(xiàn)類Hadoop MapReduce的推測式執(zhí)行。 </p><p> 3. RDD的數(shù)據(jù)分區(qū)特性,可以通過數(shù)
62、據(jù)的本地性來提高性能,這與Hadoop MapReduce是一樣的。 </p><p> 4. RDD都是可序列化的,在內(nèi)存不足時可自動降級為磁盤存儲,把RDD存儲于磁盤上,這時性能會有大的下降但不會差于現(xiàn)在的MapReduce。 </p><p> 2.2.5 RDD的存儲與分區(qū)</p><p> 1. 用戶可以選擇不同的存儲級別存儲RDD以便重用。 &l
63、t;/p><p> 2. 當(dāng)前RDD默認(rèn)是存儲于內(nèi)存,但當(dāng)內(nèi)存不足時,RDD會spill到disk。 </p><p> 3. RDD在需要進(jìn)行分區(qū)把數(shù)據(jù)分布于集群中時會根據(jù)每條記錄Key進(jìn)行分區(qū)(如Hash 分區(qū)),以此保證兩個數(shù)據(jù)集在Join時能高效。</p><p> 2.2.6 容錯性</p><p> 對于流式計(jì)算來說,容錯性
64、至關(guān)重要。首先我們要明確一下Spark中RDD的容錯機(jī)制。每一個RDD都是一個不可變的分布式可重算 的數(shù)據(jù)集,其記錄著確定性的操作繼承關(guān)系(lineage),所以只要輸入數(shù)據(jù)是可容錯的,那么任意一個RDD的分區(qū)(Partition)出錯或不可 用,都是可以利用原始輸入數(shù)據(jù)通過轉(zhuǎn)換操作而重新算出的。 </p><p><b> 2.2.7可用性。</b></p><p&g
65、t; Spark通過提供豐富的Scala, Java,Python API及交互式Shell來提高可用性。</p><p> 2.2.8 RDD的內(nèi)部表示</p><p> 在RDD的內(nèi)部實(shí)現(xiàn)中每個RDD都可以使用5個方面的特性來表示:</p><p> 1. 分區(qū)列表(數(shù)據(jù)塊列表) </p><p> 2. 計(jì)算每個分片的函數(shù)(
66、根據(jù)父RDD計(jì)算出此RDD) </p><p> 3. 對父RDD的依賴列表 </p><p> 4. 對key-value RDD的Partitioner </p><p> 5. 每個數(shù)據(jù)分片的預(yù)定義地址列表(如HDFS上的數(shù)據(jù)塊的地址)</p><p> 2.3 Local模式和Mesos模式</p><p
67、> Spark支持Local調(diào)用和Mesos集群兩種模式,在Spark上開發(fā)算法程序,可以在本地模式調(diào)試成功后,直接改用Mesos集群運(yùn)行,除了文件的保存位置需要考慮以外,算法理論上不需要做任何修改。</p><p> Spark的本地模式支持多線程,有一定的單機(jī)并發(fā)處理能力。但是不算很強(qiáng)勁。本地模式可以保存結(jié)果在本地或者分布式文件系統(tǒng),而Mesos模式一定需要保存在分布式或者共享文件系統(tǒng)。</p
68、><p> 2.4 作用于RDD的各種操作</p><p> 作用于RDD的各種操作,有兩種類型的動作轉(zhuǎn)換(Transformations)和動作(Actions)。</p><p><b> 它們本質(zhì)區(qū)別是:</b></p><p> Transformation返回值還是一個RDD。它使用了鏈?zhǔn)秸{(diào)用的設(shè)計(jì)模式,
69、對一個RDD進(jìn)行計(jì)算后,變換成另外一個RDD,然后這個RDD又可以進(jìn)行另外一次轉(zhuǎn)換。這個過程是分布式的。</p><p> Action返回值不是一個RDD。它要么是一個Scala的普通集合,要么是一個值,要么是空,最終或返回到Driver程序,或把RDD寫入到文件系統(tǒng)中。</p><p> 關(guān)于這兩個動作,它們是基于Spark開發(fā)的核心。圖2.4闡明兩種動作的區(qū)別。</p>
70、;<p><b> 圖2.4</b></p><p> 2.5 Spark的編程模型</p><p> RDD是只讀的數(shù)據(jù)分區(qū)集合,注意是數(shù)據(jù)集。</p><p> 只有當(dāng)RDD上有action時,該RDD及其父RDD上的所有operation才會被提交到cluster中真正的被執(zhí)行。</p><p&
71、gt; 從代碼到動態(tài)運(yùn)行,涉及到的組件如圖2.5所示。</p><p><b> 圖2.5</b></p><p> 第三章 Spark平臺搭建</p><p> 3.1 安裝Ubuntu Linux操作系統(tǒng)</p><p> 使用wubi安裝ubuntu,我使用的是當(dāng)前的LTS版本Ubuntu 12.04
72、 LTS。</p><p> 3.2 配置安裝Java JDK</p><p> 3.2.1 下載jdk</p><p> 在這里有jdk 1.7的下載:http://www.oracle.com/technetwork /java/javase/downloads/jdk7-downloads-1880260.html</p><p&
73、gt; 如果CPU是32位,選擇下載Linux x86,如果CPU是64位的,選擇Linux x64。一般來說,如果計(jì)算機(jī)是雙核的,肯定支持64位操作系統(tǒng)?;蛘呖梢源蜷_命令終端運(yùn)行”uname -a”命令看一下,在筆者的筆記本上運(yùn)行這個命令結(jié)果如下:</p><p><b> 圖3.2.1</b></p><p> Linux ubuntu 3.11.0-22-
74、generic #38~precise1-Ubuntu SMP Fri May 16 20:47:57 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux</p><p> 后面的x86_64表明系統(tǒng)是64位的。我所用的版本是jdk-7u60-linux-x64.tar.gz</p><p> 3.2.2 安裝jdk</p><p>
75、; 打開命令終端,下文的命令都是在終端里執(zhí)行。</p><p> $ sudo su -</p><p> 這個命令會切換到root用戶,也就是最高權(quán)限的用戶。因?yàn)楹竺嬉獔?zhí)行的jdk安裝操作是在/usr/local目錄下進(jìn)行的,用root用戶更方便。</p><p> $ cd /usr/local/lib</p><p> cd就
76、是change directory的縮寫,切換當(dāng)前目錄。</p><p> $ tar -zxvf /home/kavin/jdk-7u55-linux-x64.tar.gz</p><p> tar是linux下的打包和解壓命令行工具,具體細(xì)節(jié)可以參考"man tar"。這個命令將jdk-7u55-linux-x64.tar.gz壓縮包解壓到當(dāng)前目錄下。解壓縮完畢
77、之后,執(zhí)行"ls",能看到當(dāng)前目錄下有一個新目錄 叫"jdk1.7.0_55"</p><p> 3.2.3 配置環(huán)境變量</p><p> $ gedit /etc/profile</p><p> gedit是linux下類似Windoes的記事本的編輯器,文件/etc/profile是linux下的配置文件。本命
78、令會打開這個配置文件,以備編輯。</p><p><b> 添加配置:</b></p><p> 在/etc/profile文件末尾加上如下的三行代碼:</p><p> export JAVA_HOME=/usr/local/lib/jdk1.7.0_55</p><p> export CLASSPATH=.
79、:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar: $JAVA_HOME/lib/tools.jar</p><p> export PATH=$PATH:$JAVA_HOME/bin</p><p> 保存文件,然后退出。</p><p> Linux系統(tǒng),開機(jī)后會自動執(zhí)行/etc/profile配置文件。ex
80、port命令設(shè)置或者顯示環(huán)境變量。上述三行代碼,分別設(shè)置了JAVA_HOME, CLASSPATH, PATH這三個環(huán)境變量。</p><p> $ source /etc/profile</p><p> 如果更改了/etc/profile配置文件,它只會在新的終端里生效,現(xiàn)在正在使用的終端是不會生效的。如果想讓它在正使用的終端也生效,需要用source命令運(yùn)行一下配置文件。這條命令
81、會讓3.2.3的三個環(huán)境變量立即生效。</p><p> 3.2.4 檢查是否安裝成功</p><p><b> 圖3.2.4</b></p><p> $ java -version</p><p> 這條命令檢查jdk安裝是否成功。運(yùn)行這條命令,只要沒有報錯就表明安裝成功了。 </p><
82、;p> Java環(huán)境安裝與配置完成,這是我們搭建Hadoop的基礎(chǔ),因?yàn)镠adoop平臺是基于Java進(jìn)行開發(fā)與運(yùn)行的。</p><p> 3.3 搭建Hadoop環(huán)境</p><p> Hadoop的安裝比較繁瑣,有如下幾個原因:其一,Hadoop有非常多的版本;其二,官方文檔不盡詳細(xì),有時候更新脫節(jié),Hadoop發(fā)展的太快了; 其三,網(wǎng)上流傳的各種文檔,或者是根據(jù)某些需求
83、定制,或者加入了不必須要的步驟,或者加入容易令人誤解的步驟。其實(shí)安裝是很重要的步驟,只有安裝好了,才能談及下一步。</p><p> 3.3.1 下載安裝Hadoop</p><p> 在Hadoop的主頁上提供了多個下載鏈http://hadoop.apache.org</p><p> 我這個實(shí)驗(yàn),選擇目前hadoop的stable版:Hadoop1.2
84、.1,所以我選擇下載hadoop-1.2.1.tar.gz</p><p> 將stable版本的Hadoop解壓 </p><p> $ cd ~/setup/hadoop</p><p> 在命令終端里,”~”表示當(dāng)前登錄用戶的主目錄。比如說,在開機(jī)的時候,登錄用戶是kavin,那么在命令終端里,”~”就表示目錄”/home/kavin”,如果開機(jī)時候,登
85、錄用戶是john,那么”~”就表示”/home/john”目錄。</p><p> 3.3.2 配置hadoop</p><p> 參考了:http://hadoop.apache.org/docs/stable1/single_node_ setup.pdf</p><p> 按照偽分布式進(jìn)行配置,也就是用一個機(jī)器同時運(yùn)行NameNode, Seconda
86、ryNameNode, DataNode, JobTracker, TaskTracker 5個任務(wù)。</p><p> 配置文件在hadoop主目錄的conf目錄下。</p><p> 將core-site.xml 文件內(nèi)容修改成如下:</p><p> <configuration></p><p> <prop
87、erty></p><p> <name>fs.default.name</name></p><p> <value>hdfs://localhost:9000</value></p><p> </property></p><p> </configurat
88、ion></p><p> 將mapred-site.xml文件內(nèi)容修改如下:</p><p> <configuration></p><p> <property></p><p> <name>mapred.job.tracker</name></p><
89、p> <value>localhost:9001</value></p><p> </property></p><p> </configuration></p><p> 將hdfs-site.xml文件內(nèi)容修改如下:</p><p> <configuration&
90、gt;</p><p> <property></p><p> <name>dfs.replication</name></p><p> <value>1</value></p><p> </property></p><p> &
91、lt;/configuration></p><p> 在hadoop-env.sh文件里添加如下一條語句:</p><p> export JAVA_HOME=/usr/local/lib/jdk1.7.0_55</p><p> 即將JAVA_HOME定義成你安裝Java JDK的目錄</p><p> 3.3.3 安裝r
92、sync和ssh</p><p> "sudo apt-get install ssh rsync" </p><p> 這條命令安裝ssh和rsync。ssh是一個很著名的安全外殼協(xié)議Secure Shell Protocol。Rsync是文件同步命令行工具。</p><p> 3.3.4 配置ssh免登錄</p><
93、;p> $ ssh-keygen -t dsa -f ~/.ssh/id_dsa</p><p> 執(zhí)行這條命令生成ssh的公鑰/私鑰,執(zhí)行過程中,會一些提示讓輸入字符,直接一路回車就可以。</p><p> $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys</p><p> ssh進(jìn)行遠(yuǎn)程
94、登錄的時候需要輸入密碼,如果用公鑰/私鑰方式,就不需要輸入密碼了。上述方式就是設(shè)置公鑰/私鑰登錄。</p><p> $ ssh localhost"</p><p><b> 圖3.3.4</b></p><p> 第一次執(zhí)行本命令,會出現(xiàn)一個提示,輸入”yes”然后回車即可。</p><p> 3.
95、3.5 啟動hadoop</p><p> $ cd ~/usr/hadoop/hadoop-1.2.1</p><p> $ ./bin/hadoop namenode -format</p><p> 格式化NameNode。</p><p> $ ./bin/start-all.sh</p><p>
96、 啟動所有節(jié)點(diǎn),包括NameNode, SecondaryNameNode, JobTracker, TaskTracker, DataNode。</p><p><b> $ jps</b></p><p> 檢查各進(jìn)程是否運(yùn)行,這時,應(yīng)該看到有6個java虛擬機(jī)的進(jìn)程,分別是Jps, NameNode, SecondaryNameNode, DataNode,
97、 JobTracker, TaskTracker,看到6個是對的,表明啟動成功。</p><p><b> 圖3.3.5</b></p><p> 至此,在單機(jī)上成功安裝了hadoop。spark需要運(yùn)行在hadoop上。裝了hadoop,再奘spark,因?yàn)閟park需要用hadoop的功能。</p><p> 3.4 安裝Scala
98、</p><p> Spark使用Scala開發(fā)的,在安裝Spark之前,先在各個節(jié)上將Scala安裝好。而Spark 1.0.0依賴于Scala 2.10.4,安裝這個版本的scala。</p><p> 下載Scala2.10.4后,打開終端。</p><p> $ tar -zxf scala-2.10.4.tgz</p><p>
99、; $ sudo mv scala-2.10.4 /usr/local</p><p> 解壓縮后移動到/usr/local目錄下</p><p> $ sudo gedit /etc/profile</p><p> 在/etc/profile添加一行代碼</p><p> export SCALA_HOME=/usr/local
100、/scala-2.10.4 </p><p> export PATH=$PATH:$SCALA_HOME/bin</p><p><b> 保存并退出</b></p><p> $ source /etc/profile</p><p><b> 更新環(huán)境變量</b></p>
101、<p> $ scala -version</p><p><b> 測試是否安裝成功</b></p><p><b> 圖3.4</b></p><p> 3.5 部署Spark</p><p> 3.5.1 下載spark-1.0.0源碼</p><
102、;p> 從Spark的官方地址下載源碼包spark-1.0.0.tgz。</p><p> http://spark.apache.org/downloads.html</p><p> 3.5.2 解壓編譯</p><p> 將spark-1.0.0.tgz解壓編譯:</p><p> $ tar -zxvf spark-
103、1.0.0.tgz</p><p> 運(yùn)行sbt進(jìn)行編譯:</p><p> $ cd ~/spark-1.0.0</p><p> $ sbt assembly</p><p><b> 圖3.5.3</b></p><p> 這個步驟會下載很多庫,然后進(jìn)行編譯,編譯時間大概會在1個
104、小時左右。</p><p> 3.5.3 設(shè)置SPARK_HOME環(huán)境變量</p><p> 并將SPARK_HOME/bin加入PATH</p><p> $ sudo gedit etc/profile</p><p> 打開/etc/profile添加以下代碼</p><p> export SPAR
105、K_HOME=$HOME/spark-1.0.0</p><p> export PATH=$PATH:$SPARK_HOME/bin</p><p> $ source /etc/profile</p><p><b> 使環(huán)境變量生效</b></p><p> 3.5.4 驗(yàn)證spark環(huán)境</p&g
106、t;<p> 開啟交互式spark命令環(huán)境,即local模式</p><p> 啟動Spark shell:$ ./bin/spark-shell</p><p><b> 圖3.5.5.1</b></p><p> 根據(jù)官方document里的quick-start[4]進(jìn)行一些文件讀取操作,并對內(nèi)容進(jìn)行處理,做mapr
107、educe之類的事情。在sparkshell中運(yùn)行一下最簡單的例子wordcount,輸入代碼:</p><p> scala>sc.textFile("README.md").filter(_.contains("Spark")).count</p><p> 上述代碼統(tǒng)計(jì)在README.md中含有Spark的行數(shù)有多少。</p&g
108、t;<p><b> Long = 15</b></p><p> 即含有“Spark”的行數(shù)有15行。</p><p> 然后輸入scala> val count = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKe
109、y(_+_)</p><p> scala> count.collect()</p><p> 則得到如圖3.5.5.2所示</p><p><b> 圖3.5.5.2</b></p><p> 在字?jǐn)?shù)統(tǒng)計(jì)的例子里,map一段文本的所有文字,然后通過單詞reduce它們,最后總結(jié)出單詞的個數(shù)。RDD能夠從磁
110、盤讀取然后保持在內(nèi)存中,提高了性能,可以看出這和Hadoop大部分基于磁盤的速度要快多。</p><p> 接著使用spark自帶的run腳本運(yùn)行spark程序 $ ./bin/run-example org.apache.spark.examples.SparkPi </p><p> Pi is roughly 3.14154</p><p>
111、;<b> 計(jì)算得出Pi值</b></p><p><b> 圖3.5.5.3</b></p><p> 第四章 機(jī)器學(xué)習(xí)算法模型</p><p><b> 4.1 聚類分析</b></p><p> 聚類分析[5](Cluster analysis)是數(shù)據(jù)挖掘及
112、機(jī)器學(xué)習(xí)領(lǐng)域內(nèi)的重點(diǎn)問題之一,在許多領(lǐng)域受到廣泛應(yīng)用,包括機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、模式識別、決策支持、圖像分析以及生物信息,是最重要的數(shù)據(jù)分析方法之一。聚類是將數(shù)據(jù)對象的集合分組成為由類似的對象組成的多個簇的過程。由聚類所生成的簇是一組數(shù)據(jù)對象的集合,這些對象與同一個簇中的對象彼此相似,與其他簇中的對象彼此相異。聚類算法大體上可分為基于劃分的方法、 基于層次的方法、基于密度的方法、基于網(wǎng)格的方法以及基于模型的方法。</p>&
113、lt;p> 一般把數(shù)據(jù)聚類歸納為一種非監(jiān)督式學(xué)習(xí)問題,在這個問題上,我們的目標(biāo)是將一部分實(shí)體根據(jù)某種意義上的相似度和另一部分實(shí)體聚在一起。聚類通常被用于探索性的分析,或者作為層次化監(jiān)督學(xué)習(xí)管道網(wǎng)的一個組件。</p><p> 4.2 K-means algorithm</p><p> K-means[6]算法是一種得到最廣泛使用的基于劃分的聚類算法[7],把n個對象分為k個
114、簇,以使簇內(nèi)具有較高的相似度。相似度的計(jì)算根據(jù)一個簇中對象的平均值來進(jìn)行。它與處理混合正態(tài)分布的最大期望算法很相似,因?yàn)樗麄兌荚噲D找到數(shù)據(jù)中自然聚類的中心。</p><p> 算法首先隨機(jī)地選擇k個對象,每個對象初始地代表了一個簇的平均值或中心。對剩余的每個對象根據(jù)其與各個簇中心的距離,將它賦給最近的簇,然后重新計(jì)算每個簇的平均值。這個過程不斷重復(fù),直到準(zhǔn)則函數(shù)收斂。 </p><p>
115、;<b> 圖4.2</b></p><p> 它假設(shè)對象屬性來自于空間向量,并且目標(biāo)是使各個群組內(nèi)部的均方誤差總和最小。假設(shè)有k個群組Si, i=1,2,...,k。μi是群組Si內(nèi)所有元素xj的重心,或叫中心點(diǎn)。</p><p> 4.2.1 算法描述</p><p><b> 選擇聚類的個數(shù)k。</b>&l
116、t;/p><p> 任意產(chǎn)生k個聚類,然后確定聚類中心,或者直接生成k個中心。 </p><p> 根據(jù)每個聚類中所有對象的均值 ( 中心對象 ) , 計(jì)算樣本集中每個對象與這些中心對象的歐式距離 , 并根據(jù)最小距離重新對相應(yīng)對象進(jìn)行劃分。即對每個點(diǎn)確定其聚類中心點(diǎn) 再計(jì)算其聚類新中心。 </p><p> 再計(jì)算其聚類新中心,即重新計(jì)算每個聚類的均值。</
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)---在線視頻點(diǎn)播系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)--基于流媒體技術(shù)的視頻點(diǎn)播系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 在線視頻學(xué)習(xí)系統(tǒng)【畢業(yè)論文】
- 基于MDI的流媒體業(yè)務(wù)質(zhì)量測量系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 流媒體播放系統(tǒng)設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 在線視頻點(diǎn)播系統(tǒng)——畢業(yè)論文
- 基于流媒體的視頻監(jiān)控系統(tǒng)設(shè)計(jì).pdf
- 實(shí)時流媒體質(zhì)量評價方法研究.pdf
- 基于Planetlab的流媒體QOE測量與分析.pdf
- 基于SSH的在線視頻網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn).pdf
- 在線視頻點(diǎn)播系統(tǒng)分析與設(shè)計(jì)
- 在線視頻用戶付費(fèi)態(tài)度的影響因素模型研究——基于權(quán)衡需求理論
- 基于云計(jì)算的在線視頻推薦系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 流媒體服務(wù)器畢業(yè)設(shè)計(jì)
- 基于h.264的在線視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 基于流媒體技術(shù)的視頻監(jiān)控與分析系統(tǒng).pdf
- 信息安全畢業(yè)論文在線視頻學(xué)習(xí)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 在線視頻用戶付費(fèi)態(tài)度的影響因素模型研究——基于權(quán)衡需求理論.pdf
- 畢業(yè)論文范文——在線視頻點(diǎn)播系統(tǒng)
- 基于Javabean的在線視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
評論
0/150
提交評論