当前位置: > Linux集群 > Hadoop >

Hadoop伪分布配置与基于Eclipse开发环境搭建(2)

时间:2014-09-04 22:29来源:linux.it.net.cn 作者:it

然后把要测试的输入文件放在文件系统中:


  1. $ hdfs dfs -put /usr/mywind/psa input 

文件内容是Hadoop经典的天气例子的数据:


  1. 12345679867623119010123456798676231190101234567986762311901012345679867623119010123456+001212345678903456  
  2. 12345679867623119010123456798676231190101234567986762311901012345679867623119010123456+011212345678903456  
  3. 12345679867623119010123456798676231190101234567986762311901012345679867623119010123456+021212345678903456  
  4. 12345679867623119010123456798676231190101234567986762311901012345679867623119010123456+003212345678903456  
  5. 12345679867623119010123456798676231190201234567986762311901012345679867623119010123456+004212345678903456  
  6. 12345679867623119010123456798676231190201234567986762311901012345679867623119010123456+010212345678903456  
  7. 12345679867623119010123456798676231190201234567986762311901012345679867623119010123456+011212345678903456  
  8. 12345679867623119010123456798676231190501234567986762311901012345679867623119010123456+041212345678903456  
  9. 12345679867623119010123456798676231190501234567986762311901012345679867623119010123456+008212345678903456 

把文件拷贝到HDFS目录之后,我们可以通过浏览器查看相关的文件及一些状态:

http://192.168.8.184:50070/

这里的IP地址根据你实际的Hadoop服务器地址啦。

好吧,我们所有的Hadoop后台服务搭建跟数据准备都已经完成了,那么我们的M/R程序也要开始动手写了,不过在写当然先配置开发环境了。

3、基于Eclipse的Hadoop2.x开发环境配置

关于JDK及ECLIPSE的安装我就不再介绍了,相信能玩Hadoop的人对这种配置都已经再熟悉不过了,如果实在不懂建议到谷歌百度去搜索一下教程。假设你已经把Hadoop的Eclipse插件下载下来了,然后解压把jar文件放到Eclipse的plugins文件夹里面:

重启Eclipse即可。

然后我们再安装Hadoop到Win7下,在这不再详细说明,跟安装JDK大同小异,在这个例子中我安装到了E:\hadoop。

启动Eclipse,点击菜单栏的【Windows/窗口】→【Preferences/首选项】→【Hadoop Map/Reduce】,把Hadoop Installation Directory设置成开发机上的Hadoop主目录:

点击OK。

开发环境配置完成,下面我们可以新建一个测试Hadoop项目,右键【NEW/新建】→【Others、其他】,选择Map/Reduce Project

输入项目名称点击【Finish/完成】:

创建完成后可以看到如下目录:

然后在SRC下建立下面包及类:

 

以下是代码内容:

TestMapper.java


  1. package com.my.hadoop.mapper;  
  2.     
  3. import java.io.IOException;  
  4.     
  5. import org.apache.commons.logging.Log;  
  6. import org.apache.commons.logging.LogFactory;  
  7. import org.apache.hadoop.io.IntWritable;  
  8. import org.apache.hadoop.io.LongWritable;  
  9. import org.apache.hadoop.io.Text;  
  10. import org.apache.hadoop.mapred.MapReduceBase;  
  11. import org.apache.hadoop.mapred.Mapper;  
  12. import org.apache.hadoop.mapred.OutputCollector;  
  13. import org.apache.hadoop.mapred.Reporter;  
  14.     
  15. public class TestMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {  
  16.          private static final int MISSING = 9999;  
  17.          private static final Log LOG = LogFactory.getLog(TestMapper.class);  
  18.     
  19.           public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output,Reporter reporter)  
  20.                throws IOException {  
  21.              String line = value.toString();  
  22.              String year = line.substring(15, 19);  
  23.              int airTemperature;  
  24.              if (line.charAt(87) == '+') { // parseInt doesn't like leading plus signs  
  25.                airTemperature = Integer.parseInt(line.substring(88, 92));  
  26.              } else {  
  27.                airTemperature = Integer.parseInt(line.substring(87, 92));  
  28.              }  
  29.              LOG.info("loki:"+airTemperature);  
  30.              String quality = line.substring(92, 93);  
  31.              LOG.info("loki2:"+quality);  
  32.              if (airTemperature != MISSING && quality.matches("[012459]")) {  
  33.                LOG.info("loki3:"+quality);  
  34.                output.collect(new Text(year), new IntWritable(airTemperature));  
  35.              }  
  36.            }  
  37.     

TestReducer.java


  1. package com.my.hadoop.reducer;  
  2.     
  3. import java.io.IOException;  
  4. import java.util.Iterator;  
  5.     
  6. import org.apache.hadoop.io.IntWritable;  
  7. import org.apache.hadoop.io.Text;  
  8. import org.apache.hadoop.mapred.MapReduceBase;  
  9. import org.apache.hadoop.mapred.OutputCollector;  
  10. import org.apache.hadoop.mapred.Reporter;  
  11. import org.apache.hadoop.mapred.Reducer;  
  12.     
  13. public class TestReducer extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {   (责任编辑:IT)
------分隔线----------------------------