Linux环境下,Eclipse运行hadoop的本地模式

JDK和Hadoop的安装可以参考我的博客:

Linux安装JDK完整步骤(centOS7):https://blog.csdn.net/Henry_Lin_Wind/article/details/80884975

Hadoop本地模式安装:https://blog.csdn.net/Henry_Lin_Wind/article/details/88802339

一、下载Eclipse

Eciipse 官网:https://www.eclipse.org/downloads/packages/ ,我下载的是最新版本 eclipse-jee-2019-03-R-linux-gtk-x86_64.tar.gz

 

二、解压安装Eclipse

将下载好的安装包放到待安装目录,执行如下命令:

tar -zxvf eclipse-jee-photon-R-linux-gtk-x86_64.tar.gz -C /usr/local

 

三、配置Eclipse和Hadoop关联起来 

将Eclipse和Hadoop关联起来需要用到 hadoop-eclipse-plugin -2.x.x.jar 的插件。这个插件的选择与hadoppy和eclipse的版本以及插件自身的完整度有关,很容易出现装好插件部分功能无法使用的情况。推荐一个插件,已经在多个环境(Windows/Linux)中搭配不同版本的hadoop(2.7.2 / 2.9.2)以及eclipse(eclipse-java-mars-2-win32-x86_64/)成功使用。

下载链接 :https://download.csdn.net/download/henry_lin_wind/11060396

将下载的hadoop-eclipse-plugin-2.x.x.jar文件放到Eclipse的plugins文件夹下,即放在/usr/local/eclipse/plugins/下,重启eclipse即可看到该插件生效,如图:  

在本博客中,该插件安装的意义在于可以新建 Map/Reduce Project ,其他用处在后续博客中体现。

为了成功新建Map/Reduce Project,还需要关联到hadoop的安装目录。点击“Window –> Preferences –> Hadoop Map/Reduce”选择Hadoop安装目录,点击“Apply”和“Apply and Close”,如图: 

 

四、创建Map/Reduce Project

File - New - Other

 

五、新建测试类

1、MaxTemperature

package hadoop;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

public class MaxTemperature extends Configured implements Tool {

         @SuppressWarnings("deprecation")
         @Override
         public int run(String[] args) throws Exception {                  
                   if (args.length != 2){
                            System.err.printf("Usage: %s <input><output>",getClass().getSimpleName());
                            ToolRunner.printGenericCommandUsage(System.err);
                            return -1;                  
                   }                  
                   Configuration conf = getConf();                
                   Job job = new Job(getConf());
                   job.setJobName("Max Temperature");                  
                   job.setJarByClass(getClass());
                   FileInputFormat.addInputPath(job,new Path(args[0]));
                   FileOutputFormat.setOutputPath(job,new Path(args[1]));                  
                   job.setMapperClass(MaxTemperatureMapper.class);
                   job.setReducerClass(MaxTemperatureReducer.class);                  
                   job.setOutputKeyClass(Text.class);
                   job.setOutputValueClass(IntWritable.class);                  
                   return job.waitForCompletion(true)?0:1;                  
         }

         public static void main(String[] args)throws Exception{   
                   int exitcode = ToolRunner.run(new MaxTemperature(), args);
                   System.exit(exitcode);                  
         }   
}

2、MaxTemperatureMapper

package hadoop;

import java.io.IOException; 
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class MaxTemperatureMapper extends Mapper<LongWritable, Text, Text, IntWritable> { 

         @Override
         public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{                                    
                   String line = value.toString();  
                   if( !line.equals("") ){
                       try {
                                String year = line.substring(0,4);
                                int airTemperature = Integer.parseInt(line.substring(5));            
                                context.write(new Text(year),new IntWritable(airTemperature));                           
                       } catch (Exception e) {
                                System.out.print("Error in line:" + line);
                       }  
                    } else {
                          return;
                    }                   
         }        
}

3、MaxTemperatureReducer

package hadoop;

import java.io.IOException; 
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer; 

public class MaxTemperatureReducer extends Reducer<Text,IntWritable,Text,IntWritable> {        

         @Override
         public void reduce(Text key, 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));                 
         } 
}

4、新建测试数据

 新建一个input文件夹,新建两个测试用的txt文件,里面包含不同年份的气温数据。保存项目。

5、运行测试

Run - Run Configurations 

点选Java Application ,如果MaxTemperature未存在,可以尝试保存刷新项目或者重启软件。在Arguments一栏填入数据的输入路径以及结果的输出路径。

点击Run 运行,程序会统计input目录下的所有文件的气温数据,输出各年份的最高气温。

 刷新下项目,可以看到生成了output文件夹,SUCCESS代表操作成功,part-r-00000代表操作结果。

 也查看该项目所在目录,同样可以看到自动生成一个输出目录,其中包含两个文件(SUCCESS代表操作成功,part-r-00000代表操作结果)

打开文件 part-r-00000 ,可以看到input文件夹的两个气温数据被统计整理成每个年份的最高气温。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值