<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    tangtb

    Hadoop,SpringMVC,ExtJs,Struts2,Spring,SpringSecurity,Hibernate,Struts
    posts - 25, comments - 88, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Windows遠程調試Hadoop

    Posted on 2014-06-03 21:09 tangtb 閱讀(1915) 評論(0)  編輯  收藏 所屬分類: Hadoop

    前置條件

    成功安裝配置Hadoop集群

    成功編譯安裝Hadoop Eclipse插件

    本地有和服務器相同版本的Hadoop安裝包,并已解壓(本例使用hadoop-1.1.2

    啟動Hadoop集群

    配置hadoop installation directory

    Eclipse選擇WindowàPreferens,彈出Preferens窗口,選擇左側Hadoop Map/Reduce選項,右側配置Hadoop installation directory

    配置Map/Reduce Locations

    Eclipse選擇WindowàOpen PerspectiveàMap/Reduce,打開Map/Reduce視圖。

    點擊上圖右上角藍色小象,彈出Hadoop Location新增配置窗口,如下圖:

    Location name:自定義Location名稱

    Map/Reduce Mastermapred-site.xmlmapred.job.tracker屬性值

    DFS Mastercore-site.xmlfs.default.name屬性值

    User name:服務器端連接hdfs的用戶名

    連接成功,如上圖左側所示,列出了當前HDFS中的目錄。

    新建MapReduce Project

    NCDC求年最高氣溫為例,將氣溫數(shù)據(jù)放在/user/hadoop/ncdc/input目錄下,如圖所示:

    創(chuàng)建測試類MaxTempTest代碼如下:

    package com.hadoop.test;

     

    import java.io.IOException;

     

    import org.apache.hadoop.conf.Configuration;

    import org.apache.hadoop.conf.Configured;

    import org.apache.hadoop.fs.FileSystem;

    import org.apache.hadoop.fs.Path;

    import org.apache.hadoop.io.IntWritable;

    import org.apache.hadoop.io.LongWritable;

    import org.apache.hadoop.io.Text;

    import org.apache.hadoop.mapreduce.Job;

    import org.apache.hadoop.mapreduce.Mapper;

    import org.apache.hadoop.mapreduce.Reducer;

    import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

    import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;

    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

    import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

    import org.apache.hadoop.util.Tool;

    import org.apache.hadoop.util.ToolRunner;

     

    public class MaxTempTest extends Configured implements Tool {

       

        public static class MaxTempMapper extends Mapper<LongWritable, Text, Text, IntWritable> {

          

           private static final int MISSING = 9999;

     

           protected void map(LongWritable key, Text value, Context context)

                  throws IOException, InterruptedException {

               //從輸入文本中解析出年和氣溫

               String line = value.toString();

               String year = line.substring(15, 19);

               int airTemp = 0;

               if (line.length() > 87) {

                  if (line.charAt(87) == '+') {

                      airTemp = Integer.parseInt(line.substring(88, 92));

                  } else {

                      airTemp = Integer.parseInt(line.substring(87, 92));

                  }

                  String quality = line.substring(92, 93);

                  if (airTemp != MISSING && quality.matches("[01459]")) {

                      context.write(new Text(year), new IntWritable(airTemp));

                  }

               } else {

                  System.out.println("year: " + year + ", " + context.getInputSplit().toString());

                  context.write(new Text(year), new IntWritable(airTemp));

               }

           }

        }

       

        public static class MaxTempReducer extends Reducer<Text, IntWritable, Text, IntWritable> {

          

           protected void reduce(Text key, java.lang.Iterable<IntWritable> values, Context context) throws IOException ,InterruptedException {

               //計算最大值

               int maxValue = Integer.MIN_VALUE;

               for (IntWritable value : values) {

                  maxValue = Math.max(maxValue, value.get());

               }

               context.write(key, new IntWritable(maxValue));

           }

        }

       

        /**

         * @param args

         */

        public static void main(String[] args) {

           // TODO Auto-generated method stub

           try {

               int exitCode = ToolRunner.run(new MaxTempTest(), args);

               System.exit(exitCode);

           } catch (Exception e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

           }

        }

       

        @Override

        public int run(String[] args) throws Exception {

           // TODO Auto-generated method stub

          

           if (args.length != 2) {

               System.out.println("Usage: MaxTempTest <input path> <output path>");

               System.exit(-1);

           }

          

           Configuration config = new Configuration();

           try {

               FileSystem hdfs = FileSystem.get(config);

               Job job = new Job(config, "Max TempTest");

               //設置輸出KeyValue的類型

               job.setOutputKeyClass(Text.class);

               job.setOutputValueClass(IntWritable.class);     

              

               job.setJarByClass(MaxTempTest.class);

               job.setMapperClass(MaxTempMapper.class); //設置Mapper

               job.setReducerClass(MaxTempReducer.class);    //設置Reducer

               //設置輸入輸出格式

               job.setInputFormatClass(TextInputFormat.class);

               job.setOutputFormatClass(TextOutputFormat.class);

              

               Path inputDir = new Path(args[0]);

               Path outputDir = new Path(args[1]);

               //如果輸出目錄已經(jīng)存在,刪除該目錄

               if (hdfs.exists(outputDir)) {

                  hdfs.delete(outputDir, true);

               }

               //設置輸入輸出路徑

               FileInputFormat.setInputPaths(job, inputDir);

               FileOutputFormat.setOutputPath(job, outputDir);

               //提交作業(yè)

               job.waitForCompletion(true);

           } catch (IOException e) {

               e.printStackTrace();

           } catch (ClassNotFoundException e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

           } catch (InterruptedException e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

           }

           return 0;

        }

    }

    運行測試項目

    在測試類MaxTempTest右鍵àRun AsàRun Configurations彈出Run Configurations窗口,右鍵Java ApplicationàNew,新建名為MaxTempTest,如下圖所示:

    點右側Arguments配置運行參數(shù),在Program arguments中輸入:

    hdfs://10.120.10.11:9090/user/hadoop/ncdc/input hdfs://10.120.10.11:9090/user/hadoop/ncdc/output

    在測試類MaxTempTest右鍵àRun AsàRun on Hadoop彈出Select Hadoop location窗口,如下圖所示:

    選擇“Choose an existing server from the list below”,點擊“Finish”,提交作業(yè)。

    運行錯誤一

    解決方法:

    hadoop-1.1.2\src\core\org\apache\hadoop\fs目錄找到FileUtil.java,將該文件復制到自己的測試項目中,包名與FileUtil中的package定義相同,注釋掉類中checkReturnValue方法中的代碼,如下圖所示:

    運行錯誤二

    解決方法:

    在服務器端修改目錄權限,執(zhí)行hadoop fs -chmod -R 777 ./ncdc命令

    運行結果

    如上圖所示,作業(yè)運行成功。Eclipse左側“DFS Locations”右鍵刷新”ncdc”目錄,雙擊打開part-r-00000查看運行結果,如下圖所示:

     

     

     

    主站蜘蛛池模板: 性做久久久久免费看| 两性色午夜免费视频| 免费国产小视频在线观看| 精品无码国产污污污免费网站国产 | 狠狠亚洲婷婷综合色香五月排名| 香蕉免费一区二区三区| 亚洲熟伦熟女新五十路熟妇| 亚洲成AV人影片在线观看| 免费国产成人高清在线观看网站| 亚洲毛片免费视频| 高清在线亚洲精品国产二区| 免费亚洲视频在线观看| 亚洲第一中文字幕| 国产伦精品一区二区三区免费下载 | 亚洲国产精品久久久久婷婷软件| 中文在线免费视频| 亚洲伊人色一综合网| 最近免费中文在线视频| 免费无毒a网站在线观看| 亚洲va中文字幕无码| 57pao一国产成视频永久免费| 一级看片免费视频囗交| 亚洲精品无码专区久久同性男| 国产va免费精品| 亚洲 暴爽 AV人人爽日日碰| 日韩免费一区二区三区| 免费91麻豆精品国产自产在线观看| 九九精品国产亚洲AV日韩| 久久精品亚洲乱码伦伦中文| 久久免费观看国产精品88av| 久久精品国产亚洲av麻豆蜜芽 | 久久综合亚洲色HEZYO国产| 国产香蕉九九久久精品免费| 亚欧免费无码aⅴ在线观看| 一级做a爰片久久毛片免费陪 | 亚洲av乱码中文一区二区三区| 亚洲第一区精品观看| 好男人www免费高清视频在线| 四虎国产成人永久精品免费| 久久免费国产精品| 黄色大片免费网站|