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


[root@cdh-master lib]# ln -s ../../../jars/httpclient-4.5.2.jar httpclient-4.5.2.jar
[root@cdh-master lib]# ln -s ../../../jars/httpcore-4.4.4.jar httpcore-4.4.4.jar
[root@cdh-master lib]# ln -s ../../../jars/jdom-1.1.jar jdom-1.1.jar

  • 进入Resurce Manager部署节点的${CDH_HOME}/lib/hadoop-yarn/bin/目录,将yarn中的CLASSPATH=${CLASSPATH}:$HADOOP_YARN_HOME/${YARN_DIR}/* CLASSPATH=${CLASSPATH}:$HADOOP_YARN_HOME/${YARN_LIB_JARS_DIR}/*替换为CLASSPATH=$HADOOP_YARN_HOME/${YARN_DIR}/*:${CLASSPATH}CLASSPATH=$HADOOP_YARN_HOME/${YARN_LIB_JARS_DIR}/*:${CLASSPATH}
  • 进入到Resurce Manager部署节点的${CDH_HOME}/lib/hadoop-yarn/lib目录,执行如下命令:
    [root@cdh-master lib]# ln -s ../../../jars/httpclient-4.2.5.jar httpclient-4.2.5.jar
    [root@cdh-master lib]# ln -s ../../../jars/httpcore-4.2.5.jar httpcore-4.2.5.jar
  • 通过集群管理工具CM增加配置 。
    若没有CM管理的集群,可以修改core-site.xml 。以CM为例,您需要增加如下配置:
    配置项值fs.oss.endpoint填写需要连接的OSS的Endpoint 。
    例如华东1(杭州)地址的Endpoint为oss-cn-hangzhou.aliyuncs.com 。更多地域的Endpoint信息,请参见访问域名和数据中心 。
    fs.oss.accessKeyId填写OSS的AccessKey ID 。AccessKey的获取方式,请参见创建AccessKey 。fs.oss.accessKeySecret填写OSS的AccessKey Secret 。AccessKey的获取方式,请参见创建AccessKey 。fs.oss.implHadoop OSS文件系统实现类 。目前固定为org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem 。fs.oss.buffer.dir填写临时文件目录 。
    建议值:/tmp/oss
    fs.oss.connection.secure.enabled是否开启HTTPS,开启HTTPS会影响性能 。
    建议值:false
    fs.oss.connection.maximum与OSS的连接数 。
    建议值:2048
    更多参数详情,请参见 Hadoop-Aliyun module 。
  • 根据CM提示重启集群 。
  • 测试读写OSS 。
    • 【通过CDH5 Hadoop读取和写入OSS数据】测试读
      hadoop fs -ls oss://${your-bucket-name}/
    • 测试写
      hadoop fs -mkdir oss://${your-bucket-name}/hadoop-test若测试可以读写OSS,则配置成功;若无法读写OSS,请检查配置 。
  • 步骤二:配置Impala对OSS的支持Impala可以直接查询存储在HDFS的数据,在CDH5支持OSS后,就可以直接查询存储在OSS的数据 。OSS SDK要求这两个组件的版本较高,所以需要在所有部署Impala的节点执行以下操作:
    1. 进入${CDH_HOME}/lib/impala/lib,执行如下命令:
      [root@cdh-master lib]# rm -f httpclient-4.2.5.jar httpcore-4.2.5.jar
      [root@cdh-master lib]# ln -s ../../../jars/httpclient-4.5.2.jar httpclient-4.5.2.jar
      [root@cdh-master lib]# ln -s ../../../jars/httpcore-4.4.4.jar httpcore-4.4.4.jar
      [root@cdh-master lib]# ln -s ../../../jars/hadoop-aliyun-2.6.0-cdh5.14.4.jar hadoop-aliyun.jar
      [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
      [root@cdh-master lib]# ln -s ../../../jars/jdom-1.1.jar jdom-1.1.jar
    2. 进入${CDH_HOME}/bin目录,修改impalad、statestored、catalogd三个文件,在文件最后一行的exec命令前,增加如下内容:
      export CLASSPATH=$CLASSPATH:${IMPALA_HOME}/lib/httpclient-4.5.2.jar:${IMPALA_HOME}/lib/httpcore-4.4.4.jar:${IMPALA_HOME}/lib/hadoop-aliyun.jar:${IMPALA_HOME}/lib/aliyun-java-sdk-core-3.4.0.jar:${IMPALA_HOME}/lib/aliyun-java-sdk-ecs-4.2.0.jar:${IMPALA_HOME}/lib/aliyun-java-sdk-ram-3.0.0.jar:${IMPALA_HOME}/lib/aliyun-java-sdk-sts-3.0.0.jar:${IMPALA_HOME}/lib/aliyun-sdk-oss-3.4.1.jar:${IMPALA_HOME}/lib/jdom-1.1.jar

      推荐阅读