通过CDH5 Hadoop读取和写入OSS数据

CDH(Cloudera’s Distribution, including Apache Hadoop)是众多Hadoop发行版本中的一种,最新版本CDH6.0.1中的Hadoop3.0.0版本已经支持OSS,但CDH5中的Hadoop2.6版本不支持OSS 。本文介绍如何配置CDH5支持OSS读写 。
前提条件拥有一个已搭建好的CDH5集群(本文以CDH 5.14.4版本为例) 。如何搭建CDH5集群,请参见官方文档 。
背景信息由于CDH5的httpclient和httpcore这两个组件版本较低(4.2.5),Resource Manager要求的httpclient和httpcore必须是低版本,而OSS SDK要求这两个组件的版本较高 。因此,本文提供了一个workaround方案 。
步骤一:增加OSS配置您需要在所有的CDH节点执行以下操作:

  1. 查看CDH5安装目录${CDH_HOME}的结构:
    [root@cdh-master CDH-5.14.4-1.cdh5.14.4.p0.3]# ls -lh
    总用量 100K
    drwxr-xr-x2 root root 4.0K 6月12 21:03 bin
    drwxr-xr-x 27 root root 4.0K 6月12 20:57 etc
    drwxr-xr-x5 root root 4.0K 6月12 20:57 include
    drwxr-xr-x2 root root68K 6月12 21:09 jars
    drwxr-xr-x 38 root root 4.0K 6月12 21:03 lib
    drwxr-xr-x3 root root 4.0K 6月12 20:57 lib64
    drwxr-xr-x3 root root 4.0K 6月12 20:51 libexec
    drwxr-xr-x2 root root 4.0K 6月12 21:02 meta
    drwxr-xr-x4 root root 4.0K 6月12 21:03 share

    说明 本文中所有${}的内容为环境变量,请根据您实际的环境修改 。
  2. 下载CDH 5.14.4版本支持OSS的支持包至CDH5的安装目录中的jars文件夹中 。
    该支持包是根据CDH 5.14.4中Hadoop的版本,并增加Apache Hadoop对OSS支持的补丁后编译得到的 。其他版本支持包下载地址,请参见:
    • CDH 5.8.5
    • CDH 5.4.4
    • CDH 6.3.2
      说明 对于CDH 6.3.2版本,您需要将支持包的文件复制到CDH6安装目录的jars文件夹中,然后参考以下步骤进行部署(主要更新aliyun-sdk-oss-3.4.1.jar以及将aliyun-java-sdk-*.jar符号链接到对应的位置) 。
  3. 解压支持包 。
    [root@cdh-master CDH-5.14.4-1.cdh5.14.4.p0.3]# tar -tvf hadoop-oss-cdh-5.14.4.tar.gz
    drwxr-xr-x root/root 0 2018-10-08 18:16 hadoop-oss-cdh-5.14.4/
    -rw-r--r-- root/root 13277 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/aliyun-java-sdk-sts-3.0.0.jar
    -rw-r--r-- root/root 326724 2018-10-08 18:16 hadoop-oss-cdh-5.14.4/httpcore-4.4.4.jar
    -rw-r--r-- root/root 524927 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/aliyun-sdk-oss-3.4.1.jar
    -rw-r--r-- root/root 116337 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/aliyun-java-sdk-core-3.4.0.jar
    -rw-r--r-- root/root 215492 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/aliyun-java-sdk-ram-3.0.0.jar
    -rw-r--r-- root/root 788137 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/aliyun-java-sdk-ecs-4.2.0.jar
    -rw-r--r-- root/root 70017 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/hadoop-aliyun-2.6.0-cdh5.14.4.jar
    -rw-r--r-- root/root 736658 2018-10-08 18:16 hadoop-oss-cdh-5.14.4/httpclient-4.5.2.jar
  4. 进入${CDH_HOME}/lib/hadoop目录,执行如下命令:
    [root@cdh-master hadoop]# rm -f lib/httpclient-4.2.5.jar
    [root@cdh-master hadoop]# rm -f lib/httpcore-4.2.5.jar
    [root@cdh-master hadoop]# ln -s ../../jars/hadoop-aliyun-2.6.0-cdh5.14.4.jar hadoop-aliyun-2.6.0-cdh5.14.4.jar
    [root@cdh-master hadoop]# ln -s hadoop-aliyun-2.6.0-cdh5.14.4.jar hadoop-aliyun.jar
    [root@cdh-master hadoop]# cd lib
    [root@cdh-master lib]# ln -s ../../../jars/aliyun-java-sdk-core-3.4.0.jar aliyun-java-sdk-core-3.4.0.jar
    [root@cdh-master lib]# ln -s ../../../jars/aliyun-java-sdk-ecs-4.2.0.jar aliyun-java-sdk-ecs-4.2.0.jar
    [root@cdh-master lib]# ln -s ../../../jars/aliyun-java-sdk-ram-3.0.0.jar aliyun-java-sdk-ram-3.0.0.jar
    [root@cdh-master lib]# ln -s ../../../jars/aliyun-java-sdk-sts-3.0.0.jar aliyun-java-sdk-sts-3.0.0.jar
    [root@cdh-master lib]# ln -s ../../../jars/aliyun-sdk-oss-3.4.1.jar aliyun-sdk-oss-3.4.1.jar

    推荐阅读