Win7下Eclipse开发hadoop应用程序环境搭建

在Linux下使用安装Eclipse来进行hadoop应用开发,但是大部分Java程序员对linux系统不是那么熟悉,所以需要在windows下开发hadoop程序,经过试验,总结了如何在windows下使用Eclipse来开发hadoop程序代码。 1、需要下载hadoop的专门插件jar包   hadoop版本为2.3.0,hadoop集群搭建在centos6x上面,把插件包下载后,jar包名字为hadoop-eclipse-plugin-2.3.0,可以适用于hadoop2x系列软件版本。 2、把插件包放到eclipse/plugins目录下   为了以后方便,我这里把尽可能多的jar包都放进来了。 3、重启eclipse,配置Hadoopinstallationdirectory   如果插件安装成功,打开Windows—Preferences后,在窗口左侧会有HadoopMap/Reduce选项,点击此选项,在窗口右侧设置Hadoop安装路径。  4、配置Map/ReduceLocations   打开Windows-->OpenPerspective-->Other   选择Map/Reduce,点击OK,在右下方看到有个Map/ReduceLocations的图标,点击Map/ReduceLocation选项卡,点击右边小象图标,打开HadoopLocation配置窗口:输入LocationName,任意名称即可.配置Map/ReduceMaster和DFSMastrer,Host和Port配置成与core-site.xml的设置一致即可。   去找core-site.xml配置:   fs.default.namehdfs://name01:9000   点击"Finish"按钮,关闭窗口。点击左侧的DFSLocations—>myhadoop(上一步配置的locationname),如能看到user,表示安装成功,但是进去看到报错信息:Error:Permissiondenied:user=root,access=READ_EXECUTE,inode="/tmp";hadoop:supergroup:drwx---------。 应该是权限问题:把/tmp/目录下面所有的关于hadoop的文件夹设置成hadoop用户所有然后分配授予777权限。   cd/tmp/   chmod777/tmp/   chown-Rhadoop.hadoop/tmp/hsperfdata_root   之后重新连接打开DFSLocations就显示正常了。   Map/ReduceMaster(此处为Hadoop集群的Map/Reduce地址,应该和mapred-site.xml中的mapred.job.tracker设置相同)   (1):点击报错:   Aninternalerroroccurredduring:"ConnectingtoDFShadoopname01".   java.net.UnknownHostException:name01   直接在hostname那一栏里面设置ip地址为:192.168.52.128,即可,这样就正常打开了,如下图所示:   5、新建WordCount项目   File—>Project,选择Map/ReduceProject,输入项目名称WordCount等。   在WordCount项目里新建class,名称为WordCount,报错代码如下:InvalidHadoopRuntimespecified;pleaseclick'ConfigureHadoopinstalldirectory'orfillinlibrarylocationinputfield,报错原因是目录选择不对,不能选择在跟目录E:\hadoop下,换成E:\u\hadoop\就可以了,如下所示:   一路下一步过去,点击Finished按钮,完成工程创建,Eclipse控制台下面出现如下信息:   14-12-9下午04时03分10秒:EclipseisrunninginaJRE,butaJDKisrequired   SomeMavenpluginsmaynotworkwhenimportingprojectsorupdatingsourcefolders.   14-12-9下午04时03分13秒:Refreshing[/WordCount/pom.xml]   14-12-9下午04时03分14秒:Refreshing[/WordCount/pom.xml]   14-12-9下午04时03分14秒:Refreshing[/WordCount/pom.xml]   14-12-9下午04时03分14秒:Updatingindexcentral|http://repo1.maven.org/maven2   14-12-9下午04时04分10秒:Updatedindexforcentral|http://repo1.maven.org/maven2  6,Lib包导入:   需要添加的hadoop相应jar包有:   /hadoop-2.3.0/share/hadoop/common下所有jar包,及里面的lib目录下所有jar包,   /hadoop-2.3.0/share/hadoop/hdfs下所有jar包,不包括里面lib下的jar包,   /hadoop-2.3.0/share/hadoop/mapreduce下所有jar包,不包括里面lib下的jar包,   /hadoop-2.3.0/share/hadoop/yarn下所有jar包,不包括里面lib下的jar包,   大概18个jar包左右。

  7,Eclipse直接提交mapreduce任务所需要环境配置代码如下所示:

package wc;
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 W2 {

    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(); System.setProperty(\

  8、运行

  8.1、在HDFS上创建目录input

  [hadoop@name01hadoop-2.3.0]$hadoopfs-ls/

  [hadoop@name01hadoop-2.3.0]$hadoopfs-mkdirinput

  mkdir:`input':Nosuchfileordirectory

  [hadoop@name01hadoop-2.3.0]$PS:fs需要全目录的方式来创建文件夹

  如果Apachehadoop版本是0.x或者1.x,

  bin/hadoophdfsfs-mkdir-p/in

  bin/hadoophdfsfs-put/home/du/input/in

  如果Apachehadoop版本是2.x.

  bin/hdfsdfs-mkdir-p/in

  bin/hdfsdfs-put/home/du/input/in

  如果是发行版的hadoop,比如ClouderaCDH,IBMBI,HortonworksHDP则第一种命令即可。要注意创建目录的全路径。另外hdfs的根目录是/

  2、拷贝本地README.txt到HDFS的input里

  [hadoop@name01hadoop-2.3.0]$find.-nameREADME.txt

  ./share/doc/hadoop/common/README.txt

  [hadoop@name01~]$hadoopfs-copyFromLocal./src/hadoop-2.3.0/share/doc/hadoop/common/README.txt/data/input

  [hadoop@name01~]$

  [hadoop@name01~]$hadoopfs-ls/

  Found2items

  drwxr-xr-x-hadoopsupergroup02014-12-1523:34/data

  -rw-r--r--3hadoopsupergroup882014-08-2602:21/input

  Youhavenewmailin/var/spool/mail/root

  [hadoop@name01~]$

  3,运行hadoop结束后,查看输出结果

  (1)、直接在hadoop服务器上面查看

  [hadoop@name01~]$hadoopfs-ls/data/

  Found2items

  drwxr-xr-x-hadoopsupergroup02014-12-1523:29/data/input

  drwxr-xr-x-hadoopsupergroup02014-12-1523:34/data/output

  [hadoop@name01~]$

  (2)、去Eclipse下查看

       (3)、在控制台上查看信息

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏lzj_learn_note

Volley源码分析学习

2)根据SDK版本来创建HttpStack的实现,如果是2.3以上的,则使用基于HttpUrlConnection实现的HurlStack,反之,则利用Http...

1176
来自专栏一个爱瞎折腾的程序猿

asp.net core使用Swashbuckle.AspNetCore(swagger)生成接口文档

开局一张图,然后开始编,一些基本的asp.net core东西就不再赘述,本文只对Swashbuckle.AspNetCore的几个使用要点进行描述。

1771
来自专栏攻城狮的动态

iOS面试题梳理(三)

3807
来自专栏Java帮帮-微信公众号-技术文章全总结

JavaWeb11-jsp.cookie.session(1)

? Jsp&cookie & session 一.jsp 1. jsp的介绍 JSP全名为Java Server Pages,中文名叫java服务器页面,本质...

3025
来自专栏james大数据架构

资源等待类型sys.dm_os_wait_stats

动态管理视图  sys.dm_os_wait_stats  返回执行的线程所遇到的所有等待的相关信息。可以使用该聚合视图来诊断 SQL Server 以及特定查...

2297
来自专栏开发技术

spring集成mybatis实现mysql读写分离

       在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。幸运的是目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,...

1591
来自专栏刘望舒

Android系统启动流程(四)Launcher启动过程与系统启动流程

前言 此前的文章我们学习了init进程、Zygote进程和SyetemServer进程的启动过程,这一篇文章我们就来学习Android系统启动流程的最后一步:L...

2538
来自专栏架构师小秘圈

HBase极简教程

HBase 系统架构 HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问。HBase的目标是存储并处理大型的数据。HBase...

5066
来自专栏java 成神之路

java中设置网络代理

1.2K6
来自专栏salesforce零基础学习

salesforce 零基础学习(三十六)通过Process Builder以及Apex代码实现锁定记录( Lock Record)

上一篇内容是通过Process Builder和Approval Processes实现锁定记录的功能,有的时候,往往锁定一条记录需要很多的限制条件,如果通过A...

2186

扫码关注云+社区

领取腾讯云代金券