windows下Eclipse的Hadoop运行调试环境搭建
来源:互联网 发布:java list排序 编辑:程序博客网 时间:2024/05/17 07:51
环境说明:
- windows 7
- Eclipse mars
- hadoop-eclipse插件
- hadoop-core-1.2.1-forwinlocal.jar
- hadoop集群
hadoop-1.2.1-bin.tar.gz
3.4的下载地址见http://pan.baidu.com/s/1i4ejXch
首先有两种运行方式:
- MR程序以Local模式运行在windows本地,操作hdfs的文件。适用于利用小规模的数据集调试MR程序,之后打包成jar上传到集群进行正式的作业。
- MR程序直接运行在hadoop集群上,省去打包上传到集群的步骤,Eclipse的Console会打印相关信息
推荐使用第一种方式,一是由于配置简单,二是由于正式作业时间较长,这样就可以不用直接开着自己电脑上的Eclipse了。调试好的程序直接去运行即可。以下分开对两种运行模式的配置做说明。
注:为解决部分权限问题,需要将windows的用户名Administrator或者自定义的用户名修改为hadoop集群的用户名称,如root,或hadoop等。
Windows的Local模式运行
- 将hadoop-eclispe插件放入eclipse安装目录的plugins文件夹下
- 解压hadoop-1.2.1-bin.tar.gz,将hadoop-core-1.2.1.jar替换为hadoop-core-1.2.1-forwinlocal.jar。如不替换,运行时会报文件权限的错误。
- 启动Eclipse,打开Map/Reduce视图。window-Preferences-Hadoop Map/Reduce下选择hadoop-1.2.1-bin.tar.gz的解压目录
- 在视图正下方的Map/Reduce Locations页面New Hadoop Location,填入hadoop集群配置文件core-site.xml和mapred-site.xml中指定的Map/Reduce Master和DFS Master的IP地址和端口号。其余选项默认即可
- 在左侧的Project Explorer中即可看到DFS Location中有了我们刚才新增的hdfs。可以新建文件夹删除文件看是否已经可用。
然后New一个Project,选择Map/Reduce Project,这里我们以WordCount为例,代码如下:
import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;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.output.FileOutputFormat;public class WordCount { public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = new Job(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); String input = "hdfs://XXX:9000/data/input"; //hdfs完整输入路径 String output = "hdfs://XXX:9000/data/output"; //hdfs完整输出路径,必须是不存在的 FileInputFormat.addInputPath(job, new Path(input)); FileOutputFormat.setOutputPath(job, new Path(output)); System.exit(job.waitForCompletion(true) ? 0 : 1); }}
在代码区域右键,Run as-run on hadoop,即可看到wordcount正确运行。之后再将MR打包发布到集群上作业。
至此,结束。
hadoop集群模式运行
和上一部分配置步骤完全一致,有几点区别,如下:
- 上一部分第二步中解压完hadoop-1.2.1-bin.tar.gz,可不替换hadoop-core-1.2.1.jar。集群模式运行不存在上述的文件权限问题。
WordCount程序的main方法中需要多加两行代码,在
Configuration conf = new Configuration();
语句后添加conf.set("mapred.job.tracker", "ip地址:端口号"); //MR master的ip地址和端口号conf.set("mapred.jar", "XXXXX"); //wordcount程序打包成jar的本地路径,如"E:/XXX/xxx/wordcount.jar"
如何才能打包wordcount成jar包?右击项目名,export-jar file-选择需要打包的文件(.classpath和.project可不打包),选择需要导出的jar包路径即可。
以上是所有内容。
完全Local化模式
这是写本文档时想起的。第一部分我们说的是如何利用Local模式调试MR程序,但是仍然依赖于现有的Hadoop集群的HDFS环境。其实这是完全没必要的。调试环境可以直接在windows本地进行。wordcount的main方法中指定input和output的路径可以改写为:
String input = "E:/XXX/data/input"; //本地路径即可String output = "E:/XXX/data/output";
这样整个MR程序的调试都完全脱离了hadoop的集群,完全在windows本地运行。即可以省略第一部分是步骤四。
- windows下Eclipse的Hadoop运行调试环境搭建
- Windows上搭建Eclipse的Hadoop调试环境
- windows下搭建hadoop开发环境(Eclipse)
- windows下搭建hadoop+eclipse开发环境
- windows下搭建hadoop+eclipse开发环境
- 搭建Eclipse运行hadoop案例的环境
- hadoop学习笔记:Ubuntu下搭建eclipse调试环境
- Hadoop-Windows下的Eclipse开发环境搭建,远程虚拟机Hadoop服务器
- Hadoop eclipse windows环境搭建
- Windows下hadoop环境的搭建
- hadoop在windows下的环境搭建
- windows下hadoop伪分布式模式开发环境的搭建(Cygwin)以及Eclipse集成开发环境下的搭建
- Windows下Cygwin+Eclipse搭建Hadoop开发环境
- windows 7 with eclipse 下hadoop应用开发环境搭建
- (3)windows下hadoop+eclipse环境搭建
- windows下搭建eclipse远程开发hadoop应用环境
- Windows环境下搭建基于Eclipse的STM32 GCC 开发环境(三)调试篇
- windows下的php运行环境搭建
- BZOJ3239Discrete Logging
- 常见的时间复杂度
- 第五周项目1-三角形类雏形(2)
- python简单浮点数匹配
- PHPCMSV9 乱解读 之 PHPCMS V9的MVC
- windows下Eclipse的Hadoop运行调试环境搭建
- Spark集群的安装与使用
- git命令行
- 串的三种实现方式
- 动手实践 Linux VLAN - 每天5分钟玩转 OpenStack(13)
- hadoop集群安装以及Hive、sqoop的使用
- 字符串中第一次出现的字符
- hadoop2.6.3配置
- 台大机器学习笔记(7)——The VC Dimension