温馨提示×

如何在Ubuntu上配置HDFS客户端

小樊
33
2025-11-17 04:54:24
栏目: 智能运维

在 Ubuntu 上配置 HDFS 客户端

一 环境准备

  • 安装 Java(Hadoop 依赖 Java,建议 OpenJDK 8):
    • 执行:sudo apt update && sudo apt install -y openjdk-8-jdk
    • 验证:java -version
    • 配置环境变量(写入 ~/.bashrc):
      • export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
      • 使生效:source ~/.bashrc
  • 安装 Hadoop 客户端二进制包(无需启动集群,仅用于客户端):
    • 下载并解压(示例版本 3.3.4):
      • wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.4/hadoop-3.3.4.tar.gz
      • sudo tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
      • sudo chown -R $USER:$USER /usr/local/hadoop-3.3.4
      • ln -s /usr/local/hadoop-3.3.4 /usr/local/hadoop
    • 配置环境变量(~/.bashrc):
      • export HADOOP_HOME=/usr/local/hadoop
      • export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      • 使生效:source ~/.bashrc
  • 说明:若本机同时充当 NameNode/DataNode,需安装并启动 Hadoop 服务;若仅作为客户端,仅准备二进制与配置即可。

二 客户端配置

  • 配置目录:$HADOOP_HOME/etc/hadoop/
  • 编辑 core-site.xml(指定默认文件系统地址,替换为你的 NameNode 主机/IP 与端口):
    • 示例:
      <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://namenode-host:9000</value>
        </property>
      </configuration>
      
  • 编辑 hdfs-site.xml(客户端常用参数,可按需精简):
    • 示例:
      <configuration>
        <!-- 仅客户端时副本数不生效,但部分工具会读取 -->
        <property>
          <name>dfs.replication</name>
          <value>1</value>
        </property>
        <!-- 如集群启用 HA,使用逻辑名称服务;否则可省略 -->
        <!--
        <property>
          <name>dfs.nameservices</name>
          <value>mycluster</value>
        </property>
        <property>
          <name>dfs.ha.namenodes.mycluster</name>
          <value>nn1,nn2</value>
        </property>
        <property>
          <name>dfs.namenode.rpc-address.mycluster.nn1</name>
          <value>nn1-host:8020</value>
        </property>
        <property>
          <name>dfs.namenode.rpc-address.mycluster.nn2</name>
          <value>nn2-host:8020</value>
        </property>
        <property>
          <name>dfs.client.failover.proxy.provider.mycluster</name>
          <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
        -->
      </configuration>
      
  • 说明:
    • 常见端口:RPC 9000/8020Web UI 50070(Hadoop 2.x)/9870(Hadoop 3.x)
    • 仅客户端通常无需配置 dfs.namenode.name.dir/dfs.datanode.data.dir 等本地数据目录。

三 连通性与权限验证

  • 本机或跳板机连通性测试:
    • hdfs dfs -ls /(应返回根目录列表或提示无权限)
    • hdfs dfs -mkdir -p /user/$USER
    • hdfs dfs -put ~/.bashrc /user/$USER/
    • hdfs dfs -get /user/$USER/.bashrc ./bashrc.hdfs
  • 进程与 Web 检查(若本机运行了 NameNode/DataNode):
    • 进程:jps(应见到 NameNode/DataNode/SecondaryNameNode 等)
    • Web UI:访问 http://namenode-host:9870(Hadoop 3.x)查看集群状态
  • 常见问题速查:
    • Permission denied:检查 HDFS 目录权限或以有权限用户执行(如 hdfs dfs -chmod / -chown
    • NameNode is not formatted:仅在首次部署且本机为 NameNode 时需要 hdfs namenode -format
    • Connection refused / UnknownHostException:核对 fs.defaultFS 的主机名/IP 与端口、网络与 DNS/hosts 配置
    • 端口不通:在防火墙放行相应端口(如 9000/9870)。

四 应用集成示例 Python hdfs 客户端

  • 安装库:pip install hdfs
  • 连接与基本操作(示例连接 9870 WebHDFS 接口):
    from hdfs import InsecureClient
    
    client = InsecureClient('http://namenode-host:9870', user='hdfs')
    
    client.makedirs('/user/hdfs/python_test')
    client.upload('/user/hdfs/python_test/hello.txt', 'hello.txt')
    print(client.list('/user/hdfs/python_test'))
    with client.read('/user/hdfs/python_test/hello.txt') as reader:
        print(reader.read().decode())
    
  • 说明:生产环境若启用 Kerberos,需使用对应的安全客户端或启用 HTTPS 与票据认证。

0