首页 > 网络 > 云计算 >

世界杯外围投注官网

2016-12-09

4 安装Eclipse4 1 安装Java IDE版Eclipse:由于Java环境是JDK1 7版本,则Eclipse不能使用较新版本,按同事推荐使用Eclipse 4 4 版本,下载地址为:eclipse-java-luna-SR2-linux-gtk-x86_64 tar gz。

4. 安装Eclipse

4.1. 安装Java IDE版Eclipse

  由于Java环境是JDK1.7版本,则Eclipse不能使用较新版本,按同事推荐使用Eclipse 4.4 版本,下载地址为:eclipse-java-luna-SR2-linux-gtk-x86_64.tar.gz

  要把eclipse安装到hadoop世界杯体育投注平台下,因为以后的开发也都是在hadoop世界杯体育投注平台下进行,否则会有一些权限的问题导致后面无法继续。

  拷贝Eclipse压缩包到/home/hadoop下,并解压(网上资料一般是解压到 /opt 目录下)。

[hadoop@hadoop_master ~]$  cp /mnt/hgfs/dev/eclipse-java-luna-SR2-linux-gtk-x86_64.tar.gz eclipse-java-luna.tar.gz
[hadoop@hadoop_master ~]$  tar -zvxf eclipse-java-luna.tar.gz

  符号链接的用法 ln -s 源文件 目标文件 ,-s 是符号的意思(symbolic)软连接,命令的意思是,在/usr/bin/eclipse 目录下创建一个同步连接,而源文件在/home/hadoop/eclipse/eclipse目录下

[hadoop@hadoop_master ~]$ su root
[hadoop@hadoop_master ~]$ cd eclipse
[root@hadoop_master eclipse]世界杯外围投注官网 ln -s /home/hadoop/eclipse/eclipse /usr/bin/eclipse
[root@hadoop_master eclipse]世界杯外围投注官网 vim /usr/share/applications/eclipse.desktop

创建一个 Gnome 启动(桌面应用程序)

[Desktop Entry]
Encoding=UTF-8
Name=Eclipse 4.4.2
Comment=Eclipse Luna
Exec=/usr/bin/eclipse
Icon=/home/hadoop/eclipse/icon.xpm
Categories=Application;Development;Java;IDE
Version=1.0
Type=Application
Terminal=0

  检查 app 是否已经被添加,在菜单“应用程序”->“编程”下,将出现Eclipse 4.4.2。

  设置Eclipse的Workspace。

4.2. 安装Eclipse hadoop插件

[hadoop@hadoop_master ~]$ cd eclipse/plugins
[hadoop@hadoop_master plugins]$ cp /mnt/hgfs/dev/hadoop-eclipse-plugin-2.7.3.jar hadoop-eclipse-plugin-2.7.3.jar

  关于参数配置和问题调整:
  启动Eclipse,进入菜单 Window->Peferences,找到Hadoop插件,按Browse按钮,设置当前主机上的Hadoop安装目录(/home/hadoop/hadoop-2.7.3
)。

  进入菜单 Window ->Open Perspective->Others,选择Map/Reduce


  主窗口会出现插件视图,在Location区域单击右键,选择 New Hadoop Location。

  Hadoop Location配置窗口,location name随便起一个有意义的名字就可以,这里为myhadoop。

  Map/Reduce Mater的Host/Port有两种情况:
  (1)如果是以传统的JT/TT模式运行M/R任务,这个值要根据mapred_site.xml 当中的 mapreduce.jobtracker.address 参数设定
  (2)如果是以YARN资源管理模式运行M/R任务,这个值要根据 yarn_site.xml 当中的 yarn.resourcemanager.scheduler.address 参数设定

  在本例中:host为localhost,port为50070。

  DFS Master的Host/Port值是要根据 core_site.xml 当中的 fs.defaultFS 参数设定。

  上面参数设定完成后,就可以在图形界面上,看到HDFS系统的目录树和文件了。

  启动hadoop:

  用sbin/start-dfs.sh来启动hadoop,就可以在eclipse中连接和查看hadoop了。

5. 编写WordCount例子

  在hadoop包中的hadoop-2.7.3->share->hadoop->mapreduce中的hadoop-mapreduce-examples 2.7.3.jar(源码在hadoop-mapreduce-examples-2.7.3-sources.jar)包中。

package org.apache.hadoop.examples;
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{
    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 {
    private IntWritable result = new IntWritable();
    public void reduce(Text key, Iterable 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();
    String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
    if (otherArgs.length < 2) {
      System.err.println("Usage: wordcount  [...] ");
      System.exit(2);
    }
    Job job = Job.getInstance(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);
    for (int i = 0; i < otherArgs.length - 1; ++i) {
      FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
    }
    FileOutputFormat.setOutputPath(job,
      new Path(otherArgs[otherArgs.length - 1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }
}

  点击 File 菜单,选择 New -> Project…:

  选择 Map/Reduce Project,点击 Next。

  填写 Project name 为 WordCount 即可,点击 Finish 就创建好了项目。

  此时在左侧的 Project Explorer 就能看到刚才建立的项目了。接着右键点击刚创建的 WordCount 项目,选择 New -> Class。

  需要填写两个地方:在 Package 处填写 org.apache.hadoop.examples;在 Name 处填写 WordCount。

  粘贴世界杯外围投注网站到Eclipse的世界杯外围投注网站编辑窗口中。

  在运行 MapReduce 程序前,还需要执行一项重要操作(也就是上面提到的通过复制配置文件解决参数设置问题):将/home/hadoop/hadoop-2.7.3/etc/hadoop 中将有修改过的配置文件(如伪分布式需要 core-site.xml 和 hdfs-site.xml),以及 log4j.properties 复制到 WordCount 项目下的 src 文件夹(~/workspace/WordCount/src)中:

[hadoop@hadoop_master examples]$ cp /home/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml core-site.xml
[hadoop@hadoop_master examples]$ cp /home/hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml hdfs-site.xml
[hadoop@hadoop_master examples]$ cp /home/hadoop/hadoop-2.7.3/etc/hadoop/log4j.properties log4j.properties 

  点击工具栏中的 Run 图标,或者右键点击 Project Explorer 中的 WordCount.java,选择 Run As -> Run on Hadoop,就可以运行 MapReduce 程序了。不过由于没有指定参数,运行时会提示 “Usage: wordcount “,需要通过Eclipse设定一下运行参数。

  右键点击刚创建的 WordCount.java,选择 Run As -> Run Configurations,在此处可以设置运行时的相关参数(如果 Java Application 下面没有 WordCount,那么需要先双击 Java Application)。切换到 “Arguments” 栏,在 Program arguments 处填写 “input output” 就可以了。

注:在运行时报错:Exception in thread “main” org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/home/hadoop/workspace/WordCount/input。
解决办法是:手工在WordCount下建input目录。

相关文章
最新文章
热点推荐