百度MapReduce BMR

    使用OpenVPN提交Hadoop作业

    本章介绍如何使用OpenVPN在Linux、Windows和Mac OS X操作系统中提交Hadoop作业。

    使用客户端提交作业时,需在系统中设置环境变量,即“HADOOP_USER_NAME=hdfs”,或在MapReduce作业中配置,即在程序第一行加上“System.setProperty("HADOOP_USER_NAME","hdfs")”,可实现以hdfs用户的身份提交作业。

    Linux

    在Linux操作系统下通过OpenVPN提交Hadoop作业。

    1. 下载Hadoop Client。下载地址:http://bmr.bj.bcebos.com/tools/hadoop/hadoop-2.6.0-SNAPSHOT.tar.gz
    2. 下载Hadoop配置文件。登录控制台,选择“产品服务->百度MapReduce-集群列表”,进入集群列表页,点击集群名称进入集群详情页,在“工具下载”区点击下载“hadoop-conf.zip”。
    3. 解压“hadoop-conf.zip”。替换“hadoop-2.6.0-SNAPSHOT/etc/hadoop/”下的所有文件为“conf”中的配置文件。
    4. 由于hadoop脚本中使用了配置文件中的java路径,可能和客户端机器不一致。如果客户端机器已经将java加入过path中,请修改bin/hadoop文件:cd至目录hadoop-2.6.0-SNAPSHOT/bin执行命令vi hadoop,修改exec $JAVA $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"exec java $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"
    5. 提交hadoop作业。 cd至目录hadoop-2.6.0-SNAPSHOT/bin执行hadoop jar {jar file} {main class path} {parameters}。如提示文件压缩的类找不到,是指镜像缺少这个类,则需在core-site.xml中的“io.compression.codecs”找到该类,并去掉该异常类。

    Windows

    使用Eclipse在Windows操作系统通过OpenVPN中提交Hadoop作业的过程如下:

    1. 配置Hadoop Client。

      1. Hadoop Client下载地址:http://bmr.bj.bcebos.com/tools/hadoop/hadoop-2.6.0-SNAPSHOT.tar.gz。下载后解压。
      2. 点击下载:https://github.com/srccodes/hadoop-common-2.2.0-bin/archive/master.zip。下载后解压,替换“\hadoop-2.6.0-SNAPSHOT\bin\”中的文件为“\hadoop-common-2.2.0-bin-master\bin\”中的文件。

      注意: 如果系统的jdk是1.8,而集群是1.7,作业打包提交后,可能会出现版本冲突的异常,必须卸载java1.8,重新下载1.7版本安装。

    2. 配置Hadoop配置文件。

      1. 登录控制台,选择“产品服务->百度MapReduce-集群列表”,进入集群列表页,点击集群名称进入集群详情页,在“工具下载区”点击下载“hadoop-conf.zip”。
      2. 解压后在mapred-site.xml中加入如下代码确保系统一致:

        <property>
            <name>mapred.remote.os</name>
            <value>Linux</value>
        </property>
        <property>
            <name>mapreduce.app-submission.cross-platform</name>
            <value>true</value>
        </property>
    3. 从下列中选择一种方式创建工程。

      • 创建普通java工程:

        1. 复制配置文件“conf”中的所有文件至“src”下。
        2. 添加Hadoop Client的“etc/share”目录下的如下文件至依赖中:mapreduce/*.jar;mapreduce/lib/*.jar;hdfs/*.jar;hdfs/lib/*.jar;yarn/*.jar;yarn/lib/*.jar;common/*.jar;
          common/lib/*.jar。
      • 创建Maven项目:

        1. 复制配置文件“conf”中的所有文件至“/main/resources”下。
        2. 在pom.xml中配置hadoop-hdfs,hadoop-common,hadoop-mapreduce-client-core,hadoop-mapreduce-client-common,hadoop-mapreduce-client-jobclient。版本须与集群保持一致。
    4. 编写主函数。主函数中需要增加hadoop镜像路径的配置以及作业文件位置的配置。main函数可参考如下代码:

      public static void main(String[] args) throws Exception {
      String hadoop_home = “”;//hadoop mirror path
      String jar_path = “”;
      String input_path = “”;
      String output_path = “”;
      String job_name = “”;
      
      System.setProperty("hadoop.home.dir", hadoop_home);
      
      Configuration conf = new Configuration();
      conf.set("mapreduce.job.jar", jar_path);
      
      Job job = new Job(conf, job_name);
      job.setOutputKeyClass(Text.class);
      job.setOutputValueClass(IntWritable.class);
      
      job.setMapperClass(Map.class);
      job.setReducerClass(Reduce.class);
      
      job.setInputFormatClass(TextInputFormat.class);
      job.setOutputFormatClass(TextOutputFormat.class);
      
      FileInputFormat.addInputPath(job, new Path(input_path));
      FileOutputFormat.setOutputPath(job, new Path(output_path));
      
      job.waitForCompletion(true);
      }
    5. 编译提交。

      • 编译提交普通java工程:

        1. 右键点击项目选择“export jar”使用普通打包方式即可。

        2. 右键点击项目选择run as java application,即可向集群提交作业。
      • 编译提交Maven项目:

        1. 右键点击项目选择run as maven install,生成的jar文件会存放在Maven项目包所在目录的target文件夹中。
        2. 复制target中的jar包以备引用,否则会出现文件正在被占用的异常。

    Mac

    与Linux相同,请参考Linux

    上一篇
    使用OpenVPN访问集群
    下一篇
    访问集群服务页面