在 CentOS 上连接 HDFS 客户端,通常是指:在 CentOS 机器上安装并配置 Hadoop 客户端,然后访问 HDFS(可以是本地集群,也可以是远程集群)。下面按常见场景给你说明。
java -version
hdfs://namenode:9000)http://namenode:9870)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 ~/.bashrc
添加:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
生效:
source ~/.bashrc
core-site.xmlvi $HADOOP_HOME/etc/hadoop/core-site.xml
示例(连远程 HDFS):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
</configuration>
如果是 HA 集群,需要配置
hdfs-site.xml+core-site.xml(可后续补充)
hdfs dfs -ls /
hdfs dfs -put localfile.txt /user/test/
hdfs dfs -get /user/test/file.txt ./
hdfs dfs -mkdir -p /user/test
如果 NameNode 开启 Web UI:
http://namenode:9870
(Hadoop 3.x 默认端口 9870)
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://namenode:9000");
FileSystem fs = FileSystem.get(conf);
hdfs dfs -mkdir: Permission denied
解决:
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
systemctl stop firewalld
/etc/hosts192.168.1.10 namenode
如果你能提供:
我可以给你更精确的配置示例。