hn26394791 寫:
目前我有一個疑問,我是否一定需要將java程式改成mapreduce的框架才能夠讀取到影片嗎?
若簡單的回覆,不用改寫成 mapreduce 框架,建議先能使用 Java 程式讀取影片,再往下解決記憶體不足的問題。
hn26394791 寫:
(3) 我使用Hadoop的用意是因為原本的影片過大,處理資料時記憶體容量不足,無法在單一電腦上執行,然而我有很多個avi檔,但每次執行時我們只會丟一個avi檔。
了解,回歸到瓶頸在「記憶體不足」這個根本的問題,要靠 Hadoop 解決,有另一個先決條件:「輸入資料可以分割」。
以 AVI 檔的例子來說,如果不是支援串流的編碼(Ex. X.264),而是像 MPEG-1 / MPEG-2 這類必須從 Header 開始讀
才能解析 Key Frame 的格式,就不具備分割的條件。這個有點牽涉到影音壓縮格式/影像辨識/影像特徵萃取的領域知識,
就只能先請您評估「輸入資料(AVI) 本身是否可以分割,且程式可以獨立處理某一個分割當輸入,也能完成特徵萃取」。
我以前聽過解決這類問題的方式是先將影片切成圖片,再針對圖片去做特徵萃取。
當然現在或許因為 GPU / Deep Learning 技術越來越成熟了,或許有仰賴 GPU 的解法也說不一定。
因爲沒有運行 YARN 或第一代的 MapReduce 運算引擎(JobTracker/TaskTracker),代表您很可能是使用 Local Mode 執行 Hadoop
即便如此,Hadoop MapReduce 是一個 Framework (框架),因此必須照框架的方式撰寫程式碼才能善用 Hadoop MapReduce 的特性。
官方文件:
https://hadoop.apache.org/docs/stable/h ... orial.html雖然這份教學有點舊了,大致上應該還是可以聽錄影比較能掌握到框架的精神
https://www.youtube.com/watch?v=sStPmXn ... WN&index=6以下是我以前授課的內容
http://trac.3du.me/cloud/wiki/III150110 (基礎班)
http://trac.3du.me/cloud/wiki/III140705 (進階班 - 有比較多 MapReduce 程式撰寫的範例)
供參考~
- Jazz