在 Ubuntu 上配置 HDFS 客户端
一 环境准备
sudo apt update && sudo apt install -y openjdk-8-jdkjava -version~/.bashrc):
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64source ~/.bashrcwget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.4/hadoop-3.3.4.tar.gzsudo tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/sudo chown -R $USER:$USER /usr/local/hadoop-3.3.4ln -s /usr/local/hadoop-3.3.4 /usr/local/hadoop~/.bashrc):
export HADOOP_HOME=/usr/local/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinsource ~/.bashrc二 客户端配置
$HADOOP_HOME/etc/hadoop/<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode-host:9000</value>
</property>
</configuration>
<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>
三 连通性与权限验证
hdfs dfs -ls /(应返回根目录列表或提示无权限)hdfs dfs -mkdir -p /user/$USERhdfs dfs -put ~/.bashrc /user/$USER/hdfs dfs -get /user/$USER/.bashrc ./bashrc.hdfsjps(应见到 NameNode/DataNode/SecondaryNameNode 等)hdfs dfs -chmod / -chown)hdfs namenode -formatfs.defaultFS 的主机名/IP 与端口、网络与 DNS/hosts 配置四 应用集成示例 Python hdfs 客户端
pip install hdfsfrom 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())