如何在Ubuntu上配置HDFS客户端
导读:在 Ubuntu 上配置 HDFS 客户端 一 环境准备 安装 Java(Hadoop 依赖 Java,建议 OpenJDK 8): 执行:sudo apt update && sudo apt install -y o...
在 Ubuntu 上配置 HDFS 客户端
一 环境准备
- 安装 Java(Hadoop 依赖 Java,建议 OpenJDK 8):
- 执行:
sudo apt update & & sudo apt install -y openjdk-8-jdk - 验证:
java -version - 配置环境变量(写入
~/.bashrc):export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64- 使生效:
source ~/.bashrc
- 执行:
- 安装 Hadoop 客户端二进制包(无需启动集群,仅用于客户端):
- 下载并解压(示例版本 3.3.4):
wget 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/sbin- 使生效:
source ~/.bashrc
- 下载并解压(示例版本 3.3.4):
- 说明:若本机同时充当 NameNode/DataNode,需安装并启动 Hadoop 服务;若仅作为客户端,仅准备二进制与配置即可。
二 客户端配置
- 配置目录:
$HADOOP_HOME/etc/hadoop/ - 编辑 core-site.xml(指定默认文件系统地址,替换为你的 NameNode 主机/IP 与端口):
- 示例:
< configuration> < property> < name> fs.defaultFS< /name> < value> hdfs://namenode-host:9000< /value> < /property> < /configuration>
- 示例:
- 编辑 hdfs-site.xml(客户端常用参数,可按需精简):
- 示例:
< 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>
- 示例:
- 说明:
- 常见端口:RPC 9000/8020,Web UI 50070(Hadoop 2.x)/9870(Hadoop 3.x)。
- 仅客户端通常无需配置 dfs.namenode.name.dir/dfs.datanode.data.dir 等本地数据目录。
三 连通性与权限验证
- 本机或跳板机连通性测试:
hdfs dfs -ls /(应返回根目录列表或提示无权限)hdfs dfs -mkdir -p /user/$USERhdfs dfs -put ~/.bashrc /user/$USER/hdfs dfs -get /user/$USER/.bashrc ./bashrc.hdfs
- 进程与 Web 检查(若本机运行了 NameNode/DataNode):
- 进程:
jps(应见到 NameNode/DataNode/SecondaryNameNode 等) - Web UI:访问 http://namenode-host:9870(Hadoop 3.x)查看集群状态
- 进程:
- 常见问题速查:
- Permission denied:检查 HDFS 目录权限或以有权限用户执行(如
hdfs dfs -chmod/-chown) - NameNode is not formatted:仅在首次部署且本机为 NameNode 时需要
hdfs namenode -format - Connection refused / UnknownHostException:核对
fs.defaultFS的主机名/IP 与端口、网络与 DNS/hosts 配置 - 端口不通:在防火墙放行相应端口(如 9000/9870)。
- Permission denied:检查 HDFS 目录权限或以有权限用户执行(如
四 应用集成示例 Python hdfs 客户端
- 安装库:
pip install hdfs - 连接与基本操作(示例连接 9870 WebHDFS 接口):
from 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()) - 说明:生产环境若启用 Kerberos,需使用对应的安全客户端或启用 HTTPS 与票据认证。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上配置HDFS客户端
本文地址: https://pptw.com/jishu/748674.html
