使用OpenVPN访问集群

配置OpenVPN Client

使用BMR集群的VPN服务,需配置OpenVPN Client,本章介绍在Mac OS X、Linux和Windows操作系统上配置OpenVPN Client的过程。

Mac OS X

以Mac OS X(10.11.2)为例。具体操作如下:

  1. 下载Tunnelblick的安装文件。下载地址:http://bmr.bj.bcebos.com/tools/openvpn/mac/Tunnelblick_3.6.3_build_4560.dmg

  2. 安装Tunnelblick工具。选择默认安装即可。

  3. 下载OpenVPN Client配置文件。登录控制台,选择“产品服务->百度MapReduce-集群列表”,进入集群列表页,点击集群名称进入集群详情页,在“工具下载”区点击下载“openvpn-conf.zip”。

  4. 解压“openvpn-conf.zip”文件后,进入目录“openvpn-conf/client/”,双击“client.ovpn”后,Tunnelblick启动安装OpenVPN Client配置,如下图所示,请选择分享配置给“所有用户”或“只是我”。

  5. Tunnelblick完成OpenVPN Client的配置安装后,点击右下角的"连接"即可。

  6. 打开浏览器,可使用Master结点的内网IP访问集群服务,请在集群详情页的“节点信息”区获取内网IP。

Linux(centos6.5)

以Centos 6.5为例。

准备

安装lzo和libpam:

# 下载lzo源码包,下载地址:http://bmr.bj.bcebos.com/tools/openvpn/linux/lzo-2.09.tar.gz
tar zxf lzo-2.09.tar.gz
cd lzo-2.09
./configure
make
make install
# 下载libpam源码包,下载地址:http://bmr.bj.bcebos.com/tools/openvpn/linux/Linux-PAM-1.2.1.tar.bz2
tar xvf Linux-PAM-1.2.1.tar.bz2
cd Linux-PAM-1.2.1
./configure
make
make install

通过yum安装OpenVPN Client

  1. 下载并安装OpenVPN。执行命令yum install openvpn

  2. 下载OpenVPN Client配置文件并解压。登录控制台,选择“产品服务->百度MapReduce-集群列表”,进入集群列表页,点击集群名称进入集群详情页,在“工具下载”区点击下载“openvpn-conf.zip”并解压。

  3. 复制“openvpn-conf/client/”目录下的所有文件至OpenVPN的安装目录“/etc/openvpn”。命令如下:

    cp client/* /etc/openvpn
    service openvpn start
    

源码安装OpenVPN Client

  1. 下载OpenVPN源码。源码下载地址:http://bmr.bj.bcebos.com/tools/openvpn/linux/openvpn-2.3.10.tar.gz

  2. 解压并安装。命令如下:

    tar zxf openvpn-2.3.10.tar.gz
    cd openvpn-2.3.10
    ./configure  # 若是非root用户,请加入--prefix来指定安装路径
    make
    make install
    
  3. 下载OpenVPN Client配置文件并解压。登录控制台,选择“产品服务->百度MapReduce-集群列表”,进入集群列表页,点击集群名称进入集群详情页,在“工具下载”区点击下载“openvpn-conf.zip”,下载后解压。

  4. 进入OpenVPN Client目录,启动OpenVPN。命令如下:

    cd openvpn-conf/client
    /usr/sbin/openvpn --config client.conf # 若是非root用户,请使用sudo
    

Windows

以Windows 7(64bit)为例。

  1. 下载并安装OpenVPN。打开http://bmr.bj.bcebos.com/tools/openvpn/windows/openvpn-install-2.3.10-I002-x86_64.exe,下载后安装,选择默认安装即可。

  2. 下载OpenVPN Client配置文件。登录控制台,选择“产品服务->百度MapReduce-集群列表”,进入集群列表页,点击集群名称进入集群详情页,在“工具下载”区点击下载“openvpn-conf.zip”。

  3. 解压“openvpn-conf.zip”文件后,复制“openvpn-conf/client/”目录下的所有文件至OpenVPN的安装目录“OpenVPN\config”内。

  4. 在OpenVPN的安装目录中打开程序“openvpnserv.exe”,自动连接OpenVPN Server,如下图所示:

使用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项目(Maven的使用请参考编译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”使用普通打包方式即可。

      1. 右键点击项目选择run as java application,即可向集群提交作业。
    • 编译提交Maven项目:
      1. 右键点击项目选择run as maven install,生成的jar文件会存放在Maven项目包所在目录的target文件夹中。
      2. 复制target中的jar包以备引用,否则会出现文件正在被占用的异常。

Mac

与Linux相同,请参考Linux