Map Reduce Programming

Slides:



Advertisements
Similar presentations
大数据基础技术和应用. 大纲 大数据概述 大数据基础技术 工程技术 策略技术 典型应用 我们处于数据爆炸的时代 数据库 文字记录 照片 线下数据信息化 网页数据 用户行为记录 数字图像 互联网 - 移动互联网 设备监控 智能家居 摄像头 传感器 地球上至今总共的数据量: 在 2006 年,个人用户才刚刚迈.
Advertisements

软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
1 Java 语言程序设计 计算机系 鲍金玲. 2 引子 甲骨文 甲骨文是全球最大的信息管理软件及服务供应商,成立于 1977 年,公司总部 设在美国加利福尼亚州的红木城( Redwood Shores ),全球员工达 名, 包括 名开发人员、 7500 多名技术支持人员和.
第一章 Java 程序设计技术 概述  什么是 Java 语言  一个简单的 Java 程序  程序的编译和运行  常见错误  使用 Java 核心 API 文档.
Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第一單元 建立java 程式.
雲端運算基礎課程 王耀聰 陳威宇 楊順發 國家高速網路與計算中心(NCHC)
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
第八讲 基于Hadoop的数据仓库Hive (PPT版本号:2016年4月6日版本)
Java程序设计教程 第一讲 Java概述.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
基于Hadoop的Map/Reduce框架研究报告
Ch.8. 基于MapReduce的图算法 MapReduce海量数据并行处理
CHAPTER 9 使用Hadoop實作MapReduce.
Hadoop与数据分析 淘宝数据平台及产品部基础研发组 周敏 日期:
Map-Reduce Programming
第二章 JAVA语言基础.
類別與物件 Class & Object.
一种基于Hadoop的视频大数据分布式解码方法 冯强
Introduction to MapReduce
王耀聰 陳威宇 國家高速網路與計算中心(NCHC)
設置Hadoop環境 王耀聰 陳威宇 楊順發 國家高速網路與計算中心(NCHC)
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
——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 I/O By ShiChaojie.
基于Hadoop的数据仓库Hive.
《大数据技术原理与应用》 第七章 MapReduce (2016春季学期) 林子雨 厦门大学计算机科学系 主页:
JSP自定义标签技术的分析与应用 ----Custom Tag 的分析与应用
2018/11/20 第一章 Java概述 武汉大学计算机学院计算机应用系 2018/11/20 14:33.
實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
Unit 06 雲端分散式Hadoop實驗 -II
CHAPTER 6 認識MapReduce.
Ch13 集合與泛型 物件導向程式設計(2).
厦门大学数据库实验室 MapReduce 连接
程式設計實作.
Cloud Computing MapReduce进阶.
Java语言程序设计 第五部分 Java异常处理.
《大数据技术原理与应用》 第十二讲 图计算 (2016春季学期)
Skew Join相关论文 报告人:蔡珉星 厦大数据库实验室
基于大数据的物流资源整合 福建师范大学协和学院 沈庆琼.
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入门
Hadoop与数据分析 淘宝数据平台及产品部基础研发组 周敏 日期:
JAVA 编 程 技 术 主编 贾振华 2010年1月.
大綱 *專題演講介紹 *大陸醫療的改革與發展 *海報發表文章分享 2012海峽兩岸醫院院長論壇行後報告 ‧台北
Unit 05 雲端分散式Hadoop實驗 -I M. S. Jian
基于云计算及数据挖掘技术的海量数据处理研究
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Interfaces and Packages
基于MapReduce的Join算法优化
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
班級:博碩子一甲 授課老師:鐘國家 助教:陳國政
JAVA 程式設計與資料結構 第三章 物件的設計.
開發Java程式語言的工具 JDK.
王耀聰 陳威宇 國家高速網路與計算中心(NCHC)
Develop and Build Drives by Visual C++ IDE
InputStreamReader Console Scanner
Presentation transcript:

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

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

概念 MapReduce 圖解

概念 MapReduce in Parallel

Program Prototype 程式基本 框架 Map 程式碼 Reduce 程式碼 其他的設定參數程式碼 Class MR{ Class Map …{ } Class Reduce …{ main(){ JobConf conf = new JobConf(“MR.class”); conf.setInputPath(“the_path_of_HDFS ”); conf.setOutputPath(“the_path_of_HDFS ”); conf.setMapperClass(Map.class); conf.setReduceClass(Reduce.class); JobClient.runJob(conf); }} Map 區 Map 程式碼 Reduce 區 Reduce 程式碼 設定區 其他的設定參數程式碼

Process Prototype 編譯 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; ./ouput = hdfs的輸入、輸出目錄

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

Word Count Sample (2) 範例 程式一 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); }} 1 2 3 4 5 6 7 8

Word Count Sample (3) 範例 程式一 conf.setCombinerClass(Reduce.class); Class WordCount{ main() JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount"); // set path conf.setInputPath(new Path(args[0])); conf.setOutputPath(new Path(args[1])); // set map reduce conf.setOutputKeyClass(Text.class); // set every word as key conf.setOutputValueClass(IntWritable.class); // set 1 as value conf.setMapperClass(MapClass.class); conf.setCombinerClass(Reduce.class); conf.setReducerClass(ReduceClass.class); onf.setInputFormat(TextInputFormat.class); conf.setOutputFormat(TextOutputFormat.class); // run JobClient.runJob(conf); }}

核心 Mapper <key/value > 的映射集合 設定 每次map的輸入 map完後的輸出 範例一 說明 核心 Mapper <key/value > 的映射集合 設定 conf.setMapperClass(MapClass.class); 每次map的輸入 map ( WritableComparable, Writable, OutputCollector, Reporter) map完後的輸出 OutputCollector.collect ( WritableComparable,Writable )

範例一 說明 核心Combiner 指定一個combiner,它負責對中間過程的輸出進行本地的聚集,這會有助於降低從Mapper 到 Reducer數據傳輸量。 設定 JobConf.setCombinerClass(Class)

核心Reducer 將Map送來的<key/value > ,對每個key作value的整合 範例一 說明 核心Reducer 將Map送來的<key/value > ,對每個key作value的整合 輸入: <key, (list of values)> Reduce (WritableComparable, Iterator, OutputCollector, Reporter) 輸出 OutputCollector.collect(WritableComparable, Writable) 若沒有Reduce要執行,可以不編寫

配置JobConf 範例一 說明 Hadoop程式架構內主要的執行設定類別 指定Mapper、Combiner、 Partitioner、Reducer、InputFormat和OutputFormat 的類別為何 指定輸入文件 setInputPaths(JobConf, Path...) / addInputPath(JobConf, Path)) 指定輸出文件 setOutputPath(Path) debug script setMapDebugScript(String) / setReduceDebugScript(String) 最多的嘗試次數 setMaxMapAttempts(int) / setMaxReduceAttempts(int)) 容許任務失敗的百分比 setMaxMapTaskFailuresPercent(int) / setMaxReduceTaskFailuresPercent(int) ……

任務執行 runJob(JobConf ): submitJob(JobConf ): 範例一 說明 任務執行 runJob(JobConf ): 提交作業,僅當作業完成時返回。 submitJob(JobConf ): 只提交作業,之後需要你輪詢它返回的 RunningJob 句柄的狀態,並根據情況調度。 JobConf.setJobEndNotificationURI(String ): 設置一個作業完成通知,可避免輪詢。

WordCount練習 (前置) 範例一 動手做 cd $HADOOP_HOME bin/hadoop dfs -mkdir input echo "I like NCHC Cloud Course." > input1 echo "I like nchc Cloud Course, and we enjoy this crouse." > input2 bin/hadoop dfs -put input1 input bin/hadoop dfs -put input2 input bin/hadoop dfs -ls input 編輯WordCount.java http://trac.nchc.org.tw/cloud/attachment/wiki/jazz/Hadoop_Lab6/WordCount.java?format=raw mkdir MyJava

WordCount練習 (執行) 編譯 jar -cvf wordcount.jar -C 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 ./MyJava = 編譯後程式碼目錄 wordcount.jar = 封裝後的編譯檔 先放些文件檔到HDFS上的input目錄 ./input; ./ouput = hdfs的輸入、輸出目錄

範例一 動手做 WordCount練習 (執行)

範例一 動手做 WordCount練習 (結果)

WordCount 進階版 WordCount2 功能 步驟 (接續 WordCount 的環境) 範例二 動手做 不計標點符號 不管大小寫 http://trac.nchc.org.tw/cloud/attachment/wiki/jazz/Hadoop_Lab6/WordCount2.java?format=raw 功能 不計標點符號 不管大小寫 步驟 (接續 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 .

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

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

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

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