温馨提示×

CentOS HDFS如何连接

小樊
49
2026-08-05 01:14:47
栏目: 智能运维

在 CentOS 上连接 HDFS(Hadoop Distributed File System),通常有两种常见方式:
命令行方式(最常用)
Java / WebHDFS / HTTP 方式(程序访问)

下面我按 从零到可用 给你一个完整说明。


一、前提条件(非常重要)

在 CentOS 上连接 HDFS,必须满足以下条件之一:

1️⃣ 已安装 Hadoop(推荐)

  • 本地或远程 Hadoop 集群
  • 能访问 hdfs-site.xmlcore-site.xml

2️⃣ 至少能访问 HDFS 的 NameNode

  • 知道 NameNode 地址
  • 知道端口(默认 8020 / 9000 / 9870)

二、方式一:使用 Hadoop 命令行连接 HDFS(最常用 ✅)

1️⃣ 安装 Hadoop(如未安装)

# 示例:解压 Hadoop
tar -zxvf hadoop-3.3.6.tar.gz
mv hadoop-3.3.6 /usr/local/hadoop

配置环境变量:

vi ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc

2️⃣ 配置 Hadoop 连接信息

编辑:

$HADOOP_HOME/etc/hadoop/core-site.xml
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://namenode-host:8020</value>
  </property>
</configuration>

如果是 Hadoop 3.x,NameNode 端口常见是 8020 或 9870


3️⃣ 测试 HDFS 是否可用

hdfs dfs -ls /

✅ 成功示例:

Found 3 items
drwxr-xr-x   - root supergroup 0 2024-01-01 /tmp
drwxr-xr-x   - root supergroup 0 2024-01-01 /user

4️⃣ 常用 HDFS 命令

# 上传文件
hdfs dfs -put localfile.txt /user/

# 下载文件
hdfs dfs -get /user/localfile.txt ./

# 创建目录
hdfs dfs -mkdir /test

# 查看文件
hdfs dfs -cat /test/test.txt

# 删除文件
hdfs dfs -rm /test/test.txt

三、方式二:通过 WebHDFS(HTTP 方式)

1️⃣ 确认 WebHDFS 已开启

hdfs-site.xml

<property>
  <name>dfs.webhdfs.enabled</name>
  <value>true</value>
</property>

2️⃣ 使用 curl 访问 HDFS

curl "http://namenode-host:9870/webhdfs/v1/user?op=LISTSTATUS"

✅ 适合:

  • 脚本
  • 非 Java 程序
  • 跨语言访问

四、方式三:Java 程序连接 HDFS(开发用)

Maven 依赖

<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-client</artifactId>
  <version>3.3.6</version>
</dependency>

Java 示例

Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://namenode-host:8020");

FileSystem fs = FileSystem.get(conf);
Path path = new Path("/user/test.txt");

FSDataInputStream in = fs.open(path);
IOUtils.copyBytes(in, System.out, 4096, false);

五、常见问题排查

❌ 1. 连接拒绝

Connection refused

✅ 检查:

  • NameNode 是否启动
  • 端口是否正确
  • 防火墙是否放行
systemctl stop firewalld

❌ 2. 权限不足

Permission denied

✅ 解决:

hdfs dfs -chmod 777 /user

或以正确用户运行:

sudo -u hdfs hdfs dfs -ls /

❌ 3. 主机名无法解析

UnknownHostException

✅ 修改 /etc/hosts

192.168.1.10 namenode-host

六、总结(快速版)

方式 适用场景
hdfs dfs 命令 运维、日常操作 ✅
WebHDFS 脚本、HTTP 调用
Java API 开发程序

如果你愿意,可以告诉我:

  • Hadoop 版本
  • 是否为单机 / 集群
  • 是否能访问 NameNode

我可以给你 精确到命令级别 的配置方案。

0