Map-Reduce Programming

Slides:



Advertisements
Similar presentations
1/67 美和科技大學 美和科技大學 社會工作系 社會工作系. 2/67 社工系基礎學程規劃 ( 四技 ) 一上一下二上二下三上 校訂必修校訂必修 英文 I 中文閱讀與寫作 I 計算機概論 I 體育 服務與學習教育 I 英文 II 中文閱讀與寫作 II 計算機概論 II 體育 服務與學習教育 II.
Advertisements

大数据基础技术和应用. 大纲 大数据概述 大数据基础技术 工程技术 策略技术 典型应用 我们处于数据爆炸的时代 数据库 文字记录 照片 线下数据信息化 网页数据 用户行为记录 数字图像 互联网 - 移动互联网 设备监控 智能家居 摄像头 传感器 地球上至今总共的数据量: 在 2006 年,个人用户才刚刚迈.
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
第一章 Java 程序设计技术 概述  什么是 Java 语言  一个简单的 Java 程序  程序的编译和运行  常见错误  使用 Java 核心 API 文档.
Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲.
聖若翰天主教小學 聖若翰天主教小學歡迎各位家長蒞臨 自行分配中一學位家長會 自行分配中一學位家長會.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第一單元 建立java 程式.
「健康飲食在校園」運動 2008小學校長高峰會 講題:健康飲食政策個案分享 講者:啟基學校-莫鳳儀校長 日期:二零零八年五月六日(星期二)
雲端運算基礎課程 王耀聰 陳威宇 楊順發 國家高速網路與計算中心(NCHC)
脊柱损伤固定搬运术 无锡市急救中心 林长春.
第八讲 基于Hadoop的数据仓库Hive (PPT版本号:2016年4月6日版本)
Java程序设计教程 第一讲 Java概述.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
基于Hadoop的Map/Reduce框架研究报告
CHAPTER 9 使用Hadoop實作MapReduce.
務要火熱服事主.
作业现场违章分析.
蒙福夫妻相处之道 经文:弗5:21-33.
Hadoop与数据分析 淘宝数据平台及产品部基础研发组 周敏 日期:
第二章 JAVA语言基础.
Ch07 介面與多重繼承 物件導向程式設計(II).
一种基于Hadoop的视频大数据分布式解码方法 冯强
Introduction to MapReduce
王耀聰 陳威宇 國家高速網路與計算中心(NCHC)
設置Hadoop環境 王耀聰 陳威宇 楊順發 國家高速網路與計算中心(NCHC)
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
6.5滑坡 一、概述 1.什么是滑坡? 是斜坡的土体或岩体在重力作用下失去原有的稳定状态,沿着斜坡内某些滑动面(滑动带)作整体向下滑动的现象。
——Computing 2.0 By Barry.Cswords
程式設計實作.
第3章 分布式文件系统HDFS (PPT版本号:2017年2月版本)
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
臺北市立大學 資訊科學系(含碩士班) 賴阿福
Hadoop MapReduce Hadoop Map-Reduce is a software framework for easily writing applications.
基于Hadoop的数据仓库Hive.
《大数据技术原理与应用》 第七章 MapReduce (2016春季学期) 林子雨 厦门大学计算机科学系 主页:
Java基础 JavaSE异常.
JSP自定义标签技术的分析与应用 ----Custom Tag 的分析与应用
2018/11/20 第一章 Java概述 武汉大学计算机学院计算机应用系 2018/11/20 14:33.
Unit 06 雲端分散式Hadoop實驗 -II
CHAPTER 6 認識MapReduce.
厦门大学数据库实验室 MapReduce 连接
程式設計實作.
CH09 套件 物件導向程式設計(II).
Cloud Computing MapReduce进阶.
Java语言程序设计 第五部分 Java异常处理.
Map Reduce Programming
Homework 1(上交时间:10月14号) 倒排索引.
9.1 程式偵錯 9.2 捕捉例外 9.3 自行拋出例外 9.4 自定例外類別 9.5 多執行緒
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
C/C++/Java 哪些值不是头等程序对象
第一單元 建立java 程式.
VS.NET 2003 IDE.
Hadoop入门
聖本篤堂 主日三分鐘 天主教教理重温 (94) (此簡報由聖本篤堂培育組製作).
Hadoop与数据分析 淘宝数据平台及产品部基础研发组 周敏 日期:
JAVA 编 程 技 术 主编 贾振华 2010年1月.
Unit 05 雲端分散式Hadoop實驗 -I M. S. Jian
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Interfaces and Packages
基于MapReduce的Join算法优化
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
基督是更美的祭物 希伯來書 9:1-10:18.
JAVA 程式設計與資料結構 第三章 物件的設計.
開發Java程式語言的工具 JDK.
王耀聰 陳威宇 國家高速網路與計算中心(NCHC)
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
Develop and Build Drives by Visual C++ IDE
InputStreamReader Console Scanner
Presentation transcript:

Map-Reduce Programming 王耀聰 陳威宇 jazz@nchc.org.tw waue@nchc.org.tw 國家高速網路與計算中心(NCHC) 1

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

Program Prototype (v 0.18) Map 程式碼 Reduce 程式碼 其他的設定參數程式碼 程式基本 框架 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); }} Map 程式碼 Map區 Reduce 程式碼 Reduce 區 設定區 其他的設定參數程式碼 3 3

程式基本 框架 Class Mapper 1 2 3 4 5 6 7 8 9 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 KEY OUTPUT VALUE INPUT KEY INPUT VALUE OUTPUT KEY OUTPUT VALUE 4 4

程式基本 框架 Class Reducer 1 2 3 4 5 6 7 8 9 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 KEY OUTPUT VALUE INPUT KEY INPUT VALUE OUTPUT KEY OUTPUT VALUE 5 5

程式基本 框架 Class Combiner 指定一個combiner,它負責對中間過程的輸出進行聚集,這會有助於降低從Mapper 到Reducer數據傳輸量。 可不用設定交由Hadoop預設 也可不實做此程式,引用Reducer 設定 JobConf.setCombinerClass(Class) 6 6

Run Job runJob(JobConf ) 提交作業,僅當作業完成時返回。 submitJob(JobConf ) 程式基本 框架 Run Job runJob(JobConf ) 提交作業,僅當作業完成時返回。 submitJob(JobConf ) 只提交作業,之後需要你輪詢它返回的 RunningJob 句柄的狀態,並根據情況調度。 JobConf.setJobEndNotificationURI(String) 設置一個作業完成通知,可避免輪詢。 7 7

Word Count Sample (1) 範例 程式一 class MapClass extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map( LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = ((Text) value).toString(); StringTokenizer itr = new StringTokenizer(line); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); output.collect(word, one); }}} 1 2 3 4 5 6 7 8 9 Input key <word,one> …………………. ………………… No news is a good news. /user/hadooper/input/a.txt < no , 1 > no news is good a < news , 1 > itr itr itr itr itr itr itr < is , 1 > Input value line < a, 1 > < good , 1 > 8 < news, 1 > 8

Word Count Sample (2) 範例 程式一 news 1 1 3 4 5 6 7 8 class ReduceClass extends MapReduceBase implements Reducer< Text, IntWritable, Text, IntWritable> { IntWritable SumValue = new IntWritable(); public void reduce( Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) sum += values.next().get(); SumValue.set(sum); output.collect(key, SumValue); }} <word,one> < no , 1 > news <key,SunValue> < news , 1 > 1 1 < is , 1 > < news , 2 > < a, 1 > < good , 1 > 9 < news, 1 > 9

Word Count Sample (3) 範例 程式一 conf.setCombinerClass(Reduce.class); 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); }} 10 10

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

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

WordCount1 練習 (II) 範例一 動手做 編輯WordCount.java http://trac.nchc.org.tw/cloud/attachment/wiki/jazz/Hadoop_Lab6/WordCount.java?format=raw mkdir MyJava javac -classpath hadoop-*-core.jar -d MyJava WordCount.java jar -cvf wordcount.jar -C MyJava . 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處理 13 13

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

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

WordCount 進階版 WordCount2 功能 步驟 (接續 WordCount 的環境) 範例二 動手做 不計標點符號 不管大小寫 http://trac.nchc.org.tw/cloud/raw-attachment/wiki/jazz/Hadoop_Lab6/WordCount2.java 功能 不計標點符號 不管大小寫 步驟 (接續 WordCount 的環境) echo "\." >pattern.txt && echo "\," >>pattern.txt bin/hadoop dfs -put pattern.txt ./ mkdir MyJava2 javac -classpath hadoop-*-core.jar -d MyJava2 WordCount2.java jar -cvf wordcount2.jar -C MyJava2 . 16 16

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

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

Tool 處理Hadoop命令執行的選項 -conf <configuration file> 範例二 補充說明 Tool 處理Hadoop命令執行的選項 -conf <configuration file> -D <property=value> -fs <local|namenode:port> -jt <local|jobtracker:port> 透過介面交由程式處理 ToolRunner.run(Tool, String[]) 19 19

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