mac下 eclipse+hadoop2.6.0完全配置,实例验证
2015-09-17 21:13
483 查看
最近开始自己搞hadoop实战的一些东西,之前其实已经接触了很久的mapreduce的一些方法,也写了比较多的算法了
但是一直没有很理论的研究过,准备在这个月里面完整的记录一下这方面的理论知识
简述安装配置过程
首先我的电脑是
安装的hadoop版本是2.6下载地址网上很多我就不写了
eclipse的版本
安装配置的过程就不说了,主要是首先安装jdk,然后安装hadoop,之后对hadoop中的多个配置文件进行修改,主要是一些文件的端口号,还有需要的默认datanode的数量等
直接从eclipse中的配置开始说,因为前面的资料网上很多,但是因为自己的版本比较新,后面的程序部分,资料就不全了
eclipse中配置hadoop 2.6的版本
首先网上一直有资料说是在windows的preference下进行配置,但是我的eclipse中就没有preference这一项
1 将hadoop-eclipse-plugin-2.6.0.jar 拷贝到eclipse对应的目录下
2 在window->open perspective中
可以看到Map/Reduce的标志
对应着在面板中有了Map/Reduce Location的部分
点击打开配置项可以对端口号吗进行配置
如果配置成功,在左边的工程界面中会出现dfs的部分并且有相应的文件情况,应该就是对应的hdfs文件的分布情况了
3 创建一个map/reduce的工程
在第一次创建工程的时候可以对eclipse配置的hadoop的安装地址进行配置,设置为默认之后就不用再进行配置了
4 编写实例,进行验证
首先给出例子的代码,只要直接在工程上新建一个java文件就可以了
在工程目录中点击run as ->run configuration
因为这里的inputPath,outputPath都还没有配置,这样参数索引的时候会越界
这里我配置的是本地的文件,当然也可以配置在hdfs上,后面会提到
运行,可以在本地的文件中看到
输入文件内容
输出文件内容:
但是一直没有很理论的研究过,准备在这个月里面完整的记录一下这方面的理论知识
简述安装配置过程
首先我的电脑是
安装的hadoop版本是2.6下载地址网上很多我就不写了
eclipse的版本
安装配置的过程就不说了,主要是首先安装jdk,然后安装hadoop,之后对hadoop中的多个配置文件进行修改,主要是一些文件的端口号,还有需要的默认datanode的数量等
直接从eclipse中的配置开始说,因为前面的资料网上很多,但是因为自己的版本比较新,后面的程序部分,资料就不全了
eclipse中配置hadoop 2.6的版本
首先网上一直有资料说是在windows的preference下进行配置,但是我的eclipse中就没有preference这一项
1 将hadoop-eclipse-plugin-2.6.0.jar 拷贝到eclipse对应的目录下
2 在window->open perspective中
可以看到Map/Reduce的标志
对应着在面板中有了Map/Reduce Location的部分
点击打开配置项可以对端口号吗进行配置
如果配置成功,在左边的工程界面中会出现dfs的部分并且有相应的文件情况,应该就是对应的hdfs文件的分布情况了
3 创建一个map/reduce的工程
在第一次创建工程的时候可以对eclipse配置的hadoop的安装地址进行配置,设置为默认之后就不用再进行配置了
4 编写实例,进行验证
首先给出例子的代码,只要直接在工程上新建一个java文件就可以了
import java.io.IOException; import java.util.*; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.*; import org.apache.hadoop.mapred.*; public class WordCount { public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } } } public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); } } public static void main(String[] args) throws Exception { JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount"); conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(IntWritable.class); conf.setMapperClass(Map.class); conf.setReducerClass(Reduce.class); conf.setInputFormat(TextInputFormat.class); conf.setOutputFormat(TextOutputFormat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf); } }
在工程目录中点击run as ->run configuration
因为这里的inputPath,outputPath都还没有配置,这样参数索引的时候会越界
这里我配置的是本地的文件,当然也可以配置在hdfs上,后面会提到
运行,可以在本地的文件中看到
输入文件内容
输出文件内容:
相关文章推荐
- Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类?
- java WebService 例子
- JAVA中IO流
- JMS 问题java.lang.NoClassDefFoundError: weblogic/security/acl/UserInfo
- Flex Socket与Java通信实例说明(转)
- Java处理日期Joda-Time
- test4.4
- java基础-泛型
- java string,需要进行首字母大写改写
- Java实现线性存储的二叉树
- Java解析XML之dom_sax方式
- java解惑之常常忘记的事
- Struts2 入门3:Ognl表达式语言与struts标签
- struts入门实例总结
- Java执行命令行问题
- java(0)--初识java
- test4.3
- java读取excel中的多图片
- struts2基于注解的配置Demo
- java 泛型实例详解(普通泛型、 通配符、 泛型接口)