日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop2.6.0子项目hadoop-mapreduce-examples的简单介绍

發布時間:2025/3/18 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop2.6.0子项目hadoop-mapreduce-examples的简单介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引文

學習Hadoop的同學們,一定知道如果運行Hadoop自帶的各種例子,以大名鼎鼎的wordcount為例,你會輸入以下命令:

hadoop org.apache.hadoop.examples.WordCount -D mapreduce.input.fileinputformat.split.maxsize=1 /wordcount/input /wordcount/output/result1

當然,有些人還會用以下替代方式:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /wordcount/input /wordcount/output/result1

相比于原始的執行方式,使用jar命令方式,讓我們不用再敲入繁瑣的完整包路徑。比如我們知道hadoop-mapreduce-examples項目中還提供了其它的例子,比如計算圓周率的例子,我們只需要記住此應用的簡單名字pi,就可以執行它:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar pi 5 10

雖說我們只是使用這些現成的例子,沒有必要較真,但是這種簡潔的使用方式,無疑還是值得借鑒的。本文將分析下這種方式實現的原理,有興趣的同學可以一讀。

源碼分析

這一節,我們通過對hadoop-mapreduce-examples項目中的關鍵源碼進行分析,理解簡潔執行的原理。在hadoop-mapreduce-examples項目的pom.xml文件中配置了org.apache.hadoop.examples.ExampleDriver作為jar命令的入口,配置如下:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><mainClass>org.apache.hadoop.examples.ExampleDriver</mainClass></manifest></archive></configuration></plugin>

這決定了使用jar命令執行hadoop-mapreduce-examples-2.6.0.jar包時,實際執行了ExampleDriver的main方法,ExampleDriver的實現如下:

public class ExampleDriver {public static void main(String argv[]){int exitCode = -1;ProgramDriver pgd = new ProgramDriver();try {pgd.addClass("wordcount", WordCount.class, "A map/reduce program that counts the words in the input files.");// 省略其它例子的注冊代碼pgd.addClass("pi", QuasiMonteCarlo.class, QuasiMonteCarlo.DESCRIPTION);// 省略其它例子的注冊代碼exitCode = pgd.run(argv);}catch(Throwable e){e.printStackTrace();}System.exit(exitCode);} }

以上代碼構造了ProgramDriver的實例,并且調用其addClass方法,三個參數分別是例子名稱(如wordcount、pi等)、例子的實現Class、例子的描述信息。ProgramDriver的addClass方法的實現如下:

public void addClass(String name, Class<?> mainClass, String description)throws Throwable {programs.put(name , new ProgramDescription(mainClass, description));}

首先,構造ProgramDescription對象,其構造函數如下:

public ProgramDescription(Class<?> mainClass, String description)throws SecurityException, NoSuchMethodException {this.main = mainClass.getMethod("main", paramTypes);this.description = description;}

其中main的類型是java.lang.reflect.Method,用于保存例子Class的main方法。
然后,將例子名稱(如wordcount、pi等)和ProgramDescription實例注冊到programs中,programs的類型定義如下:

/*** A description of a program based on its class and a * human-readable description.*/Map<String, ProgramDescription> programs;

ExampleDriver的main方法在最后會調用ProgramDriver的run方法,其實現如下:

public int run(String[] args)throws Throwable {// Make sure they gave us a program name.if (args.length == 0) {System.out.println("An example program must be given as the" + " first argument.");printUsage(programs);return -1;}// And that it is good.ProgramDescription pgm = programs.get(args[0]);if (pgm == null) {System.out.println("Unknown program '" + args[0] + "' chosen.");printUsage(programs);return -1;}// Remove the leading argument and call mainString[] new_args = new String[args.length - 1];for(int i=1; i < args.length; ++i) {new_args[i-1] = args[i];}pgm.invoke(new_args);return 0;}

ProgramDriver的run方法執行的步驟如下:

  • 參數長度校驗;
  • 根據第一個參數,從programs中查找對應的ProgramDescription實例;
  • 將其余的參數傳遞給ProgramDescription的invoke方法,進而執行對應的例子。
    ProgramDescription的invoke方法的實現如下:
  • public void invoke(String[] args)throws Throwable {try {main.invoke(null, new Object[]{args});} catch (InvocationTargetException except) {throw except.getCause();}}

    由此我們知道具體例子的執行,是通過反射調用具體例子Class的main方法,最終實現的。

    后記:個人總結整理的《深入理解Spark:核心思想與源碼分析》一書現在已經正式出版上市,目前京東、當當、天貓等網站均有銷售,歡迎感興趣的同學購買。

    京東(現有滿150減50活動)):http://item.jd.com/11846120.html
    當當:http://product.dangdang.com/23838168.html

    總結

    以上是生活随笔為你收集整理的Hadoop2.6.0子项目hadoop-mapreduce-examples的简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 免费在线观看的黄色网址 | 亚洲精品国产欧美 | 欧美日韩国产精品一区二区 | 成人午夜免费福利 | 亚洲精品久久久久久久蜜桃 | 国产第一页在线观看 | 名校风暴在线观看免费高清完整 | 欧美黑人又粗又大又爽免费 | aaa色| 国产成人影视 | 欧美日韩高清一区二区 | chinese xxxx videos andvr | 亚洲免费看av| 91免费影片 | 国产成人在线播放 | 成人免费福利视频 | 免费色视频 | 天天综合网在线观看 | 在线观看免费成人 | 中文字幕高潮 | 国模无码视频一区 | 一级大片网站 | 日本乱码一区 | 日本一区二区三区在线观看视频 | 亚洲欧洲成人精品久久一码二码 | 中文字幕超碰在线 | 亚洲av综合永久无码精品天堂 | 毛片看看 | 高h视频在线观看 | 成人午夜福利一区二区 | 中文字幕三级 | 少妇aa | 三级一区二区 | 欧美一级黄色片在线观看 | 中国二级毛片 | 亚洲一个色 | 成人mv在线观看 | 日韩tv | 69er小视频 | 国产精品一色哟哟哟 | 成人精品视频一区二区三区尤物 | 青青草原免费观看 | 黄色a大片| 国产你懂得 | 婷婷综合视频 | 欧美在线一区二区三区 | 在线免费看黄色片 | av在线影视| 诱人的乳峰奶水hd | 精品黑人一区二区三区 | 亚洲三区精品 | 看特级毛片 | 污污污污污污www网站免费 | 青青草娱乐视频 | 亚洲图片一区二区 | 2024av| 欧美一区二区在线观看视频 | 亚洲美女啪啪 | 久伊人网 | 黄色网址在线免费看 | 天天摸天天添 | 日韩欧美一级片 | 久草网视频在线观看 | 亚洲av无码国产精品久久不卡 | 日韩一级免费看 | 国产精品人人人人 | 天天操综合| 精品孕妇一区二区三区 | 国产精品视频99 | 欧美黄色网 | 亚洲三级理论 | 小小姑娘电影大全免费播放 | 久久精品这里只有精品 | 一本色道久久亚洲综合精品蜜桃 | 成人综合站 | 精品96久久久久久中文字幕无 | 亚洲三级在线免费观看 | 2019亚洲天堂 | 欧美三级图片 | 国产日韩欧美一区 | 明里柚番号| 国产高中女学生第一次 | 欧美日韩精品在线 | 青青青在线视频 | 日韩欧美精品一区 | 日韩视频专区 | 又大又粗欧美黑人aaaaa片 | 日本不卡一区二区三区视频 | 久久国产高清 | 国产一区在线播放 | 欧美h网站 | 五月婷婷天| av在线免费观看网站 | 日本人妻一区二区三区 | 久操免费在线视频 | 欧美黄色一区二区三区 | 亚洲情涩 | 91叼嘿视频| 色婷婷影院 |