使用OpenVPN提交Hadoop作业
所有文档

          百度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访问集群
          下一篇
          访问集群服务页面