在 CentOS 上连接 HDFS 客户端,通常是指:在 CentOS 机器上安装并配置 Hadoop 客户端,然后通过 hdfs dfs 命令或 Java API 访问 HDFS。下面按最常见场景给你一步步说明。
9000 或 8020)hdfs://namenode:9000
yum install -y java-1.8.0-openjdk-devel
java -version
以 Hadoop 3.3.6 为例:
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -zxvf hadoop-3.3.6.tar.gz -C /opt
ln -s /opt/hadoop-3.3.6 /opt/hadoop
vi /etc/profile
添加:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
生效:
source /etc/profile
mkdir -p $HADOOP_HOME/etc/hadoop
core-site.xmlvi $HADOOP_HOME/etc/hadoop/core-site.xml
内容示例:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
</configuration>
namenode替换为你的 NameNode 主机名或 IP
hdfs-site.xml如果是 HA 集群,需要配置 hdfs-site.xml 和 yarn-site.xml(从集群拷贝即可)
hdfs dfs -ls /
如果能看到目录列表,说明连接成功 ✅
hdfs dfs -put test.txt /user/
hdfs dfs -get /user/test.txt ./
export HADOOP_USER_NAME=hdfs
hdfs dfs -ls / -Ddfs.permissions.enabled=true
如果 HDFS 开启了安全认证:
yum install -y krb5-workstation
kinit user@REALM
然后执行 HDFS 命令即可。
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://namenode:9000");
FileSystem fs = FileSystem.get(conf);
vi /etc/hosts
添加:
192.168.1.10 namenode
使用 HADOOP_USER_NAME 或 Kerberos 认证
如果你愿意,可以告诉我:
我可以给你更精确的配置示例。