在 CentOS 上连接 HDFS(Hadoop 分布式文件系统),常见方式有三种:命令行连接、Java API 连接、Web UI 访问。下面按最常用场景给你一个完整说明。
在 CentOS 上,你需要:
hdfs://namenode-host:9000
export HADOOP_HOME=/opt/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
(建议写入 ~/.bashrc)
hdfs dfs -ls /
✅ 正常输出示例:
Found 3 items
drwxr-xr-x - hdfs supergroup 0 2024-01-01 /tmp
drwxr-xr-x - hdfs supergroup 0 2024-01-01 /user
hdfs dfs -ls /user
hdfs dfs -put localfile.txt /user/
hdfs dfs -get /user/file.txt ./
hdfs dfs -mkdir /user/test
hdfs dfs -rm /user/file.txt
如果你不是本地 Hadoop,而是连接远程 HDFS:
编辑:
$HADOOP_HOME/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode-host:9000</value>
</property>
</configuration>
hdfs dfs -ls /
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.3.6</version>
</dependency>
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://namenode-host:9000");
FileSystem fs = FileSystem.get(conf);
Path path = new Path("/user");
FileStatus[] files = fs.listStatus(path);
for (FileStatus f : files) {
System.out.println(f.getPath());
}
访问:
http://namenode-host:9870
Connection refusedjava.net.ConnectException: Connection refused
✅ 解决:
systemctl stop firewalld
Permission denied: user=root, access=WRITE
✅ 解决:
sudo -u hdfs hdfs dfs -mkdir /user/root
sudo -u hdfs hdfs dfs -chown root /user/root
| 方式 | 适用场景 |
|---|---|
hdfs dfs 命令 |
运维、日常操作 ✅ |
| core-site.xml | 连接远程 HDFS |
| Java API | 程序开发 |
| Web UI | 监控与查看 |
如果你愿意,可以告诉我:
我可以给你更精确的配置示例。