彩票走势图

Windows下Eclipse连接Hadoop教程(附代码)

转帖|使用教程|编辑:龚雪|2014-12-15 10:16:02.000|阅读 3521 次

概述:Windows下Eclipse连接Hadoop的方法。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

慧都年终巨献,Aspose系列产品黄金版+白金版享<8折>优惠! 截止日期2014/12/31

hadoop在虚拟机上(远程连接也是一样只需要知道master的ip和core-site.xml配置即可。

Vmware上搭建了hadoop分布式平台:

192.168.11.134 master

192.168.11.135 slave1

192.168.11.136 slave2

core-site.xml 配置文件:

<property>

       ; <name>fs.defaultFS</name>

        <value>hdfs://master:9000</value>

    <description>The name of the default file system.</description>

</property>

<property>

        <name>hadoop.tmp.dir</name>

&nbsp;      ; <!-- 注意创建相关的目录结构 -->

  &nbsp;      &nbsp;  <value>/usr/setup/hadoop/temp</value>

        <description>A base for other temporary   ;      directories.</description>

</property>

1 下载插件

hadoop-eclipse-plugin-2.5.1.jar

github上下载源码后需要自己编译。这里使用已经编译好的插件即可

2 配置插件

把插件放到..\eclipse\plugins目录下,重启eclipse,配置Hadoop installation directory ,如果插件安装成功,打开Windows—Preferences后,在窗口左侧会有Hadoop Map/Reduce选项,点击此选项,在窗口右侧设置Hadoop安装路径。(windows下只需把hadoop-2.5.1.tar.gz解压到指定目录)

Windows下Eclipse连接hadoop

3 配置Map/Reduce Locations

打开Windows—Open Perspective—Other,选择Map/Reduce,点击OK,控制台会出现:

Windows下Eclipse连接hadoop

右键 new Hadoop location 配置hadoop:输入Location Name,任意名称即可.配置Map/Reduce Master和DFS Mastrer,Host和Port配置成与core-site.xml的设置一致即可。

Windows下Eclipse连接hadoop

点击"Finish"按钮,关闭窗口。

点击左侧的DFSLocations—>master (上一步配置的location name),如能看到user,表示安装成功

Windows下Eclipse连接hadoop

4 wordcount实例

File—>Project,选择Map/Reduce Project,输入项目名称WordCount等。在WordCount项目里新建class,名称为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;

import org.apache.hadoop.util.GenericOptionsParser;

 

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);

      &nbsp;     }

        }

    }

    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();

      &nbsp;     }

            result.set(sum);

            context.write(key,&nbsp;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);

        FileInputFormat.addInputPath(job, new ;Path("hdfs://192.168.11.134:9000/in/test*.txt"));//路径1

        FileOutputFormat.setOutputPath(job, new Path("hdfs://192.168.11.134:9000/output"));//输出路径

        System.exit(job.waitForCompletion(true) ? 0 : 1);

    }

}

上面的路径1 ;和路径2 由于在代码中已经定义,这不需要在配置文件中定义,若上面路径1和路径2 代码为:

FileInputFormat.addInputPath(job, new Path(otherArgs[0]));

FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));

这需要配置运行路径:类 右键 Run As&mdash;>Run Configurations

Windows下Eclipse连接hadoop

红色部分为配置的hdfs上文件路径,

点击run 或或者:Run on Hadoop,运行结果会显示在DFS Locations。若运行中有更新,右键DFS Locations,点disconnect更新

运行结果:

Windows下Eclipse连接hadoop

5 问题及解决办法

5.1 出现 空指针异常:

1、 在Hadoop的bin目录下放winutils.exe,

2、在环境变量中配置 HADOOP_HOME,

3、hadoop.dll拷贝到C:\Windows\System32下面即可

 

上面的文件已经下载 ,在文件hadoop-common-2.2.0-bin-master.zip中。

5.2 无法给hdfs上传文件

安装过程中由于已经在hdfs上上传了文件,当重启在 hdfs namenode –format时,后,会提示无法上传文件,此时需要删除hdfs已经存在的副本:

在master上删除dfs上name目录下的current目录: rm –rf current/

在slave上删除dfs上的整个data目录 :rm –rf data/

5.3 出现log4j警告

将文件log4j.properties放到src下和java文件同目录.

5.3 访问权限不够

参考博客:

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

原帖://www.cnblogs.com/baixl/p/4154429.html

狂欢继续!【年终大促 巅峰盛"慧" 】促销火热进行中 iPhone 6 Plus、 iPhone 6、iPad Air满就送,还不赶快买买买!


标签:EclipseHadoopMyEclipse

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP