自由軟體實驗室 Map Reduce Programming 王耀聰 陳威宇 楊順發 國家高速網路與計算中心 (NCHC)

Slides:



Advertisements
Similar presentations
1 生物計算期末作業 暨南大學資訊工程系 2003/05/13. 2 compare f1 f2  只比較兩個檔案 f1 與 f2 ,比完後將結果輸出。 compare directory  以兩兩比對的方式,比對一個目錄下所有檔案的相 似程度。  將相似度很高的檔案做成報表輸出,報表中至少要.
Advertisements

Divide-and-Conquer. 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來.
布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
建立使用案例敘述 --Use Case Narrative
學習C++的基本語法 認識關鍵字與識別字的不同 學習程式碼偵錯的流程 學習如何提高程式的可讀性
:Word Morphing ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10508:word morphing 解題者:楊家豪 解題日期: 2006 年 5 月 21 日 題意: 第一行給你兩個正整數, 第一個代表下面會出現幾個字串,
Event Sampling 事件取樣法. 關心重點為「事件」本身明確的焦點 行為 清楚掌握主題 - 當「事件」出現時才開 始記錄 記錄程序 等待目標事件的發生 開始記錄 事件結束,停止記錄.
如何將數字變成可用之資訊 現代化資料處理與應用概念. 如何將數字變成可用之資訊 人最容易接受的訊息是圖像化資訊。 在一堆數字中,要進行比較分析,一般會使用表格形 式計算與分析。 所以一般我們會將數字依關聯性, 轉換成表格計算與分析。 此表格一般稱試算表或稱表格。 再將結果轉換為圖表,進行比較與分析。
矩陣乘法 實作矩陣乘法 利用 threads 來加速運算速度 – Matrix1 row x Matrix2 column = Ans (x,y) Matrix 1Matrix 2Answer.
1 第一章 Word 的基本觀念 內容概要: Word 的特色 啟動與離開 Word 的方法 滑鼠游標與外型的介紹 基本操作 Word 視窗法則 使用 Word 遭遇問題時, 應如何利用軟體特 性而獲得輔助解說.
1 Web of Science 利用指引 單元二 瀏覽與處理查詢結果. 2 瀏覽檢索結果 查出的結果,預設以時間排列, 使用者可改變結果的排列方式: 還可以依被引用次數、相關度、 第一作者、刊名、出版年等排序 回到前先查的結果畫面 點選想看資料的完整書目 本館訂購範圍的期刊 全文,便可直接連結.
09 CHAPTER 軟體工程 9-1 寫程式9-1 寫程式 9-2 軟體開發生命週期9-2 軟體開發生命週期.
微生物研究法 研 C 1. What is Hela cell 2. Cell density and doubling time 3. Cell growth curve 碩一 曾仁志.
: OPENING DOORS ? 題組: Problem Set Archive with Online Judge 題號: 10606: OPENING DOORS 解題者:侯沛彣 解題日期: 2006 年 6 月 11 日 題意: - 某間學校有 N 個學生,每個學生都有自己的衣物櫃.
JAVA 程式設計與資料結構 第二章 JAVA 程式基本概念及操作. 第一個程式 /* * 這是第一個程式 (FirstP.java) */ class FirstP{ public static void main(String args[]){ System.out.println("Whatever.
1.1 電腦的特性 電腦能夠快速處理資料:電腦可在一秒內處理數百萬個 基本運算,這是人腦所不能做到的。原本人腦一天的工 作量,交給電腦可能僅需幾分鐘的時間就處理完畢。 電腦能夠快速處理資料:電腦可在一秒內處理數百萬個 基本運算,這是人腦所不能做到的。原本人腦一天的工 作量,交給電腦可能僅需幾分鐘的時間就處理完畢。
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
第 18 章 名稱空間與例外處理 18-1 名稱空間 18-1 名稱空間 18-2 例外處理 18-2 例外處理.
程式語言實習 - JAVA Class1 1. 介紹 Java 編寫、編譯、執行 2. 請同學完成作業二.
Chapter 07 低階程式語言.
Department of Air-conditioning and Refrigeration Engineering/ National Taipei University of Technology 模糊控制設計使用 MATLAB 李達生.
南投縣社區大學 Excel 實務應用入門 講師 : 林泉成
第 7 章 程序與函數 7-1 模組化程式設計 7-1 模組化程式設計 7-2 VB.NET 的程序與函數 7-2 VB.NET 的程序與函數 7-3 程序與函數的變數範圍 7-3 程序與函數的變數範圍 7-4 VB.NET 常用的內建函數 7-4 VB.NET 常用的內建函數 7-5 遞迴函數 7-5.
JDK 的安裝. 內 容 大 綱 JDK 安裝步驟 JDK 的主要工具程式 說明 Java 語言發展工具組 JDK(Java Development Kit) 的安裝與工具組中的主要工具程式。 JDK 是發展 Java 語言必備的工具,我們必須正確的安裝 JDK 工具組才可以正確的設計、開發與執行.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
最新計算機概論 第 5 章 系統程式. 5-1 系統程式的類型 作業系統 (OS) : 介於電腦硬體與 應用軟體之間的 程式,除了提供 執行應用軟體的 環境,還負責分 配系統資源。
Chapter 20 塑模動態觀點:狀態圖 Statechart Diagram. 學習目標  說明狀態圖的目的  定義狀態圖的基本記號  展示狀態圖的建構  定義活動、內部事件及遞延事件的狀態 圖記號.
圖層的操作與管理 圖層的作用就如同一張張透明的賽璐璐片, 你可以將動畫中的每項物件, 放置在不同圖 層中, 圖層交疊就形成完整的畫面。在各圖 層中的物件, 做任何的移動或變化, 都不會 相互干擾, 所以當你編輯一個物件時, 只要 在物件所在的圖層進行操作, 將可大幅降低 製作過程的複雜度與難度。
1 MySQL 資料庫的使用 網頁資料庫的基礎 網頁資料庫的基礎 下載與安裝 MySQL 下載與安裝 MySQL 啟動 MySQL 伺服器 啟動 MySQL 伺服器 Web 介面的 MySQL 管理程式 Web 介面的 MySQL 管理程式 MySQL 建立資料庫 MySQL 建立資料庫 在 MySQL.
North Point Government Primary PM School 北角官立下午小學 應用 ‘ 基本能力學生評估 ’ 及 ‘ 網上學與教支援系統 ’ 經驗分享.
實驗六 WLAN 的設定 WLAN card 的設定. Reference Wireless Local Area Network by Dr.Morris Chang.
In Chapter 1 您將學到什麼 ? 了解 Java 語言的特徵 Java 程式的發展過程關係 Java 程式的基本架構.
1-6 動畫的文件屬性 舞台是動畫實際播放的畫面, 所以舞台的大 小與長寬比例對將來動畫的呈現有很大的 影響。 Flash 預設的舞台尺寸是 550 Pixels × 400 Pixels, 背景為白色, 如果要更改舞台大小與 背景色, 請執行『修改 / 文件』命令, 開啟文 件屬性 (Document.
從此處輸入帳號密碼登入到管理頁面. 點選進到檔案管理 點選「上傳檔案」上傳資料 點選瀏覽選擇電腦裡的檔案 可選擇公開或不公開 為平台上的資料夾 此處為檔案分類,可顯示在展示頁面上,若要參加 MY EG 競賽,做品一律上傳到 “ 98 MY EG Contest ” 點選此處確定上傳檔案.
資料結構實習-一 參數傳遞.
6-2 認識元件庫與內建元件庫 Flash 的元件庫分兩種, 一種是每個動畫專 屬的元件庫 (Library) ;另一種則是內建元 件庫 (Common Libraries), 兩者皆可透過 『視窗』功能表來開啟, 以下即為您說明。
1 第 4 章 複 因 子 的 應 用複 因 子 的 應 用. 2 移動等額系列 並非 所謂移動系列,是指現值所在的時 間點並非 t = 0. 向 “0” 的左方移動或向 t = “0” 的右 方移動.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
計算機概論 演算法與程式語言 李明山.
: Problem G e-Coins ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10306: Problem G e-Coins 解題者:陳瀅文 解題日期: 2006 年 5 月 2 日 題意:給定一個正整數 S (0
MinGW 的安裝.
Management Abstracts Retrieval System; MARS 檢索操作.
第 9 章 TSR 程式基本教練. 本章提要 TSR 程式 以熱鍵 (Hot key) 叫用 TSR 程式 Clock 中斷 int 08h 、 int 1ch DOS reentrant 的問題 有用的 TSR 程式.
資料結構實習-二.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
2010 MCML introduction 製作日期: 2010/9/10 製作人 : 胡名霞.
Chapter 3 Entropy : An Additional Balance Equation
校園網頁整合平台介紹 電算中心綜合業務組. 大綱 設計理念 功能介紹 實做 FAQ 特殊案例 Q&A.
Linguistics phonetic symbols. 先下載 IPA 字型檔案,執行安裝。 由於這個程式的字型目錄設定錯誤, 所以等重新開機時就會發現字型消失。 所以必須根據以下步驟來讓 Windows 加入 IPA 字型。
網路介紹及其運用 講師陳炯勳. 5-2 IP 協定 ( 一 ) IP 協定運作 (1) – 網路成員:主機 (Host) 與路由器 (Router) – 路由表 – 電報傳輸運作.
概念性產品企劃書 呂學儒 李政翰.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
INFORMATION RETRIEVAL AND EXTRACTION 作業: Program 1 第十四組 組員:林永峰、洪承雄、謝宗憲.
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/30 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH7.1~CH /12/26.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 壹 企業研究導論.
論文閱讀報告 論文題目:應用模糊理論於颱風降雨量之推估 作者:陳正彬. 模糊化類神經網路 ‧模糊系統的建立 1. 由人類專家建立規則 ex:if 風速大 then 降雨量高 效果受到規則庫完整的影響 2. 經由訓練法則從數值資料得到模糊規則.
Visual C++重點複習.
資料結構實習-六.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2008.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
Microsoft Excel.
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
著作權所有 © 旗標出版股份有限公司 第 14 章 製作信封、標籤. 本章提要 製作單一信封 製作單一郵寄標籤.
幼兒行為觀察與記錄 第八章 事件取樣法.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
VHDL語法(3).
Map Reduce Programming Waue Chen. Why ? Moore’s law ?  每隔 18 個月, CPU 的主頻就會增加一倍  2005 開始失效 多核及平行運算時代來臨.
Java Tutorial /10/21. Java Resource Java SDK –Download from –Install Jdk windows-i586.exe –
自由軟體實驗室 設置 Hadoop 環境 王耀聰 陳威宇 國家高速網路與計算中心 (NCHC)
Presentation transcript:

自由軟體實驗室 Map Reduce Programming 王耀聰 陳威宇 楊順發 國家高速網路與計算中心 (NCHC)

2 Outline 概念 程式基本框架及執行步驟方法 範例一 : –Hadoop 的 Hello World => Word Count – 說明 – 動手做 範例二 : – 進階版 => Word Count 2 – 說明 – 動手做

3 Class MR { Class Mapper … { } Class Reducer … { } main(){ JobConf conf = new JobConf( MR.class ); conf.setMapperClass(Mapper.class); conf.setReduceClass(Reducer.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf); }} Program Prototype Map 程式碼 Reduce 程式碼 其他的設定參數程式碼 Map 區 Reduce 區 設定區設定區 程式基本 框架

4 Class Mapper(0.18) 程式基本 框架 class MyMap extends MapReduceBase implements Mapper { // 全域變數區 public void map ( key, value, OutputCollector output, Reporter reporter) throws IOException { // 區域變數與程式邏輯區 output.collect( NewKey, NewValue); } INPUT KEY INPUT VALUE OUTPUT VALUE OUTPUT KEY INPUT KEY INPUT VALUE OUTPUT VALUE OUTPUT KEY

5 Class Mapper(0.20) 程式基本 框架 class MyMap extends MapReduceBase implements Mapper { // 全域變數區 public void map ( key, value, Context context) throws IOException, InterruptedException { // 區域變數與程式邏輯區 context.write( NewKey, NewValue); } INPUT KEY INPUT VALUE OUTPUT VALUE OUTPUT KEY INPUT KEY INPUT VALUE

6 Class Reducer(0.18) 程式基本 框架 class MyRed extends MapReduceBase implements Reducer { // 全域變數區 public void reduce ( key, Iterator values, OutputCollector output, Reporter reporter) throws IOException { // 區域變數與程式邏輯區 output.collect( NewKey, NewValue); } INPUT KEY INPUT VALUE OUTPUT VALUE OUTPUT KEY INPUT KEY INPUT VALUE OUTPUT VALUE OUTPUT KEY

7 Class Reducer(0.20) 程式基本 框架 class MyRed extends MapReduceBase implements Reducer { // 全域變數區 public void reduce ( key, Iterator values, Context context) throws IOException, I nterruptedException { // 區域變數與程式邏輯區 output.collect( NewKey, NewValue); } INPUT KEY INPUT VALUE OUTPUT VALUE OUTPUT KEY INPUT KEY INPUT VALUE

8 Class Combiner 指定一個 combiner ,它負責對中間過程的 輸出進行聚集,這會有助於降低從 Mapper 到 Reducer 數據傳輸量。 – 引用 Reducer –JobConf.setCombinerClass(Class) 程式基本 框架 A1 B1 A1 C1 B1 B1 Sort & Shuffle A11B111C1 A1 B1 A1 C1 B1 B1 A2B12C1 Combiner A2 B1 B2 C1

No Combiner 9 Reduce class Reduce method (key, values) for each v in values sum  sum + v E MIT (key, sum) dog1 cat1 dog1 1 cat1 bird1 cat1 dog Sort and Shuffle cat111bird1

Added Combiner 10 dog1 cat1 dog1 1 cat1 bird1 cat1 dog1 Combine dog31 Sort and Shuffle cat12bird1 Combine cat1 dog3 bird1 cat2 dog1

11 class MapClass extends MapReduceBase implements Mapper { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map( LongWritable key, Text value, Context context) throws IOException { String line = ((Text) value).toString(); StringTokenizer itr = new StringTokenizer(line); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); }}} Word Count Sample (1) 範例 程式一 Input key Input value …………………. ………………… No news is a good news. ………………… /user/hadooper/input/a.txt itr line nonews isgood a itr

12 class ReduceClass extends MapReduceBase implements Reducer { IntWritable SumValue = new IntWritable(); public void reduce( Text key, Iterator values, Context context) throws IOException { int sum = 0; while (values.hasNext()) sum += values.next().get(); SumValue.set(sum); context.write(key, SumValue); }} Word Count Sample (2) 範例 程式一 1 > news 11

13 Class WordCount{ main() JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount"); // set path FileInputFormat.setInputPaths (new Path(args[0])); FileOutputFormat.setOutputPath (new Path(args[1])); // set map reduce conf.setMapperClass(MapClass.class); conf.setCombinerClass(Reduce.class); conf.setReducerClass(ReduceClass.class); // run JobClient.runJob(conf); }} Word Count Sample (3) 範例 程式一

14 編譯與執行 1. 編譯 –javac Δ -classpath Δ hadoop-*-core.jar Δ -d Δ MyJava Δ MyCode.java 2. 封裝 –jar Δ -cvf Δ MyJar.jar Δ -C Δ MyJava Δ. 3. 執行 –bin/hadoop Δ jar Δ MyJar.jar Δ MyCode Δ HDFS_Input/ Δ HDFS_Output/ 所在的執行目錄為 Hadoop_Home./MyJava = 編譯後程式碼目錄 Myjar.jar = 封裝後的編譯檔 先放些文件檔到 HDFS 上的 input 目錄./input;./ouput = hdfs 的輸入、輸出 目錄 執行流程 基本步驟

15 WordCount1 練習 (I) 1.cd $HADOOP_HOME 2.bin/hadoop dfs -mkdir input 3.echo "I like NCHC Cloud Course." > inputwc/input1 4.echo "I like nchc Cloud Course, and we enjoy this crouse." > inputwc/input2 5.bin/hadoop dfs -put inputwc inputwc 6.bin/hadoop dfs -ls input 範例一 動手做

16 WordCount1 練習 (II) 1. 編輯 WordCount.java mkdir MyJava 3.javac -classpath hadoop-*-core.jar -d MyJava WordCount.java 4.jar -cvf wordcount.jar -C MyJava. 5.bin/hadoop jar wordcount.jar WordCount input/ output/ 所在的執行目錄為 Hadoop_Home (因為 hadoop-*-core.jar ) javac 編譯時需要 classpath, 但 hadoop jar 時不用 wordcount.jar = 封裝後的編譯檔,但執行時需告知 class name Hadoop 進行運算時,只有 input 檔要放到 hdfs 上,以便 hadoop 分析運 算;執行檔( wordcount.jar )不需上傳,也不需每個 node 都放,程式的 載入交由 java 處理 範例一 動手做

17 WordCount1 練習 (III) 範例一 動手做

18 WordCount1 練習 (IV) 範例一 動手做

19 WordCount 進階版 WordCount2 功能 – 不計標點符號 – 不管大小寫 步驟 ( 接續 WordCount 的環境 ) 1.echo "\." >pattern.txt && echo "\," >>pattern.txt 2.bin/hadoop dfs -put pattern.txt./ 3.mkdir MyJava2 4.javac -classpath hadoop-*-core.jar -d MyJava2 WordCount2.java 5.jar -cvf wordcount2.jar -C MyJava2. 範例二 動手做

20 不計標點符號 執行 –bin/hadoop jar wordcount2.jar WordCount2 input output2 -skip pattern.txt dfs -cat output2/part 範例二 動手做

21 不管大小寫 執行 –bin/hadoop jar wordcount2.jar WordCount2 - Dwordcount.case.sensitive=false input output3 -skip pattern.txt 範例二 動手做

22 Tool 處理 Hadoop 命令執行的選項 -conf -D -fs -jt 透過介面交由程式處理 –ToolRunner.run(Tool, String[]) 範例二 補充說明

23 DistributedCache 設定特定有應用到相關的、超大檔案、 或只用來參考卻不加入到分析目錄的檔 案 – 如 pattern.txt 檔 DistributedCache.addCacheFile(URI,conf) –URI = hdfs://host:port/FilePath 範例二 補充說明

24 Options without Java 雖然 Hadoop 框架是用 Java 實作,但 Map/Reduce 應用程序則不一定要用 Java 來寫 Hadoop Streaming : – 執行作業的工具,使用者可以用其他語言 (如: PHP )套用到 Hadoop 的 mapper 和 reducer Hadoop Pipes : C++ API 非 JAVA 不可?