通过开源HDFS客户端连接并使用LindormDFS

本文介绍如何使用开源HDFS客户端访问LindormDFS。

前提条件

  • 已安装Java环境,JDK版本不能低于1.7。

  • 已将客户端IP地址添加至Lindorm白名单。如何添加,请参见设置白名单

注意事项

如果应用部署在ECS,您需要确保云原生多模数据库 Lindorm实例和ECS实例满足以下条件,以保证网络的连通性。

  • 所在地域相同,并建议使用相同的可用区域(以减少网络延时)。

  • 使用相同的专有网络。

下载客户端

下载Hadoop2.7.3版本SDK:hadoop-2.7.3.tar.gz。下载地址:Apache官网

配置Hadoop

  1. 执行以下命令,解压缩SDK包。

    tar -zxvf hadoop-2.7.3.tar.gz
  2. 添加Hadoop环境变量。

    export HADOOP_HOME=/${Hadoop安装目录}/hadoop-2.7.3
  3. 执行以下命令进入hadoop目录。

    cd $HADOOP_HOME
  4. 将Java环境变量JAVA_HOME添加至etc/hadoop/目录下的hadoop-env.sh文件中,假设Java安装在/opt/install/java

    # set to the root of your Java installation
    export JAVA_HOME=/opt/install/java
  5. 修改etc/hadoop/hdfs-site.xml文件。hdfs-site.xml文件中需要修改的内容如下所示,其中实例ID需要替换为真实的实例ID。

    <configuration>
      <property>
            <name>dfs.nameservices</name>
            <value>${实例ID}</value>
        </property>
        <property>
           <name>dfs.client.failover.proxy.provider.${实例ID}</name>
           <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
        <property>
           <name>dfs.ha.automatic-failover.enabled</name>
           <value>true</value>
        </property>
        <property>
           <name>dfs.ha.namenodes.${实例ID}</name>
           <value>nn1,nn2</value>
        </property>
         <property>
           <name>dfs.namenode.rpc-address.${实例ID}.nn1</name>
           <value>${实例ID}-master1-001.lindorm.rds.aliyuncs.com:8020</value>
        </property>
        <property>
           <name>dfs.namenode.rpc-address.${实例ID}.nn2</name>
           <value>${实例ID}-master2-001.lindorm.rds.aliyuncs.com:8020</value>
        </property>
    </configuration>
说明
  • 您可以在自动生成配置文件,详情请参见开通指南

  • 以上示例适用于配置单个实例时的场景,即示例中的${实例ID}均为同一实例的ID。如果需要同时配置多个实例,请按照实例数量,将上述示例代码中所有的<property>属性复制多份,每份设置不同的实例ID,并粘贴在<configuration>属性内。

常用操作示例

  • 上传本地文件。

    • 创建目录。

    $HADOOP_HOME/bin/hadoop fs -mkdir hdfs://${实例ID}/test
    • 准备一个文件,将其上传到LindormDFS。

    echo "test" > test.log
    $HADOOP_HOME/bin/hadoop fs -put test.log hdfs://${实例ID}/test
  • 查看上传的文件。

     $HADOOP_HOME/bin/hadoop fs -ls hdfs://${实例ID}/test
  • 下载文件到本地。

    $HADOOP_HOME/bin/hadoop fs -get hdfs://${实例ID}/test/test.log
    说明

    其中实例ID请替换为真实的实例ID。