如何在Ubuntu上部署HDFS集群
小樊
34
2025-11-17 05:17:27
在 Ubuntu 上部署 HDFS 集群
一 环境准备与规划
- 准备至少2 台 Ubuntu 16.04+ 服务器,建议3 台及以上便于容错与扩展;同一局域网内,配置静态 IP与主机名解析(/etc/hosts 或 DNS),确保节点间可互通。
- 在所有节点安装 Java 8(Hadoop 3.x 常用版本):sudo apt update && sudo apt install -y openjdk-8-jdk;验证:java -version。
- 规划角色:至少 1 个 NameNode(可扩展为 HA)、多个 DataNode、可选 ResourceManager/NodeManager(若需 YARN)、以及用于 HA 的 JournalNode 与 ZooKeeper。
- 配置 SSH 免密登录:在规划为主节点的机器生成密钥(ssh-keygen -t rsa),将公钥分发到所有节点(含自身),以便脚本统一启停守护进程。
二 安装与基础配置
- 下载并解压 Hadoop(示例版本 3.3.6):
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/
- 设置环境变量(所有节点一致):
echo ‘export HADOOP_HOME=/usr/local/hadoop-3.3.6’ >> ~/.bashrc
echo ‘export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin’ >> ~/.bashrc
echo ‘export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64’ >> ~/.bashrc
source ~/.bashrc
- 配置 Hadoop 环境脚本:在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 中显式设置 JAVA_HOME 等。
- 配置 workers(Hadoop 3.x 使用 workers 文件,旧版为 slaves):将所有 DataNode 主机名逐行写入 $HADOOP_HOME/etc/hadoop/workers。
三 核心配置文件
- 编辑 core-site.xml(指定默认文件系统地址,使用主机名或 IP):
fs.defaultFS
hdfs://namenode:9000
- 编辑 hdfs-site.xml(示例为 3 副本,生产常用 3;设置本地元数据与数据目录,目录需提前创建并赋权):
dfs.replication
3
dfs.namenode.name.dir
/data/hdfs/namenode
dfs.datanode.data.dir
/data/hdfs/datanode
- 若需 YARN,编辑 mapred-site.xml 与 yarn-site.xml(示例):
mapred-site.xml:
mapreduce.framework.name
yarn
yarn-site.xml:
yarn.resourcemanager.hostname
resourcemanager
yarn.nodemanager.aux-services
mapreduce_shuffle
- 目录准备与权限(示例):
sudo mkdir -p /data/hdfs/{namenode,datanode}
sudo chown -R $(whoami):$(whoami) /data/hdfs
四 启动与验证
- 首次启动前在 NameNode 上格式化文件系统:
hdfs namenode -format
- 启动 HDFS(在 NameNode 执行):
start-dfs.sh
如需 YARN,在 ResourceManager 节点执行:
start-yarn.sh
- 验证进程与状态:
jps(应看到 NameNode/DataNode,若启用 YARN 则还有 ResourceManager/NodeManager)
hdfs dfsadmin -report(查看 DataNode 数量与容量)
yarn node -list(查看 NodeManager 注册情况)
- Web 界面(Hadoop 3.x 常用端口):
HDFS NameNode:http://:9870
YARN ResourceManager:http://:8088
注:Hadoop 2.x 常见为 50070/8088。
五 常见问题与扩展
- 常见问题排查
- 配置不一致:核对所有节点的 core-site.xml/hdfs-site.xml/workers 是否一致。
- SSH 免密失败:确认 ~/.ssh/authorized_keys 包含主节点公钥,且目录权限正确(700/600)。
- 防火墙/安全组:放行 9000(HDFS RPC)、9870(NN Web)、8088(RM Web)等端口;云环境需配置安全组规则。
- 目录权限:确保 dfs.namenode.name.dir/dfs.datanode.data.dir 对运行用户可写。
- 日志定位:查看 $HADOOP_HOME/logs/ 下对应进程的日志文件。
- 扩展为高可用 HA(生产推荐)
- 部署 ZooKeeper 集群(3 台及以上) 与 JournalNode(3 台及以上)。
- 在 hdfs-site.xml 中配置 dfs.nameservices、dfs.ha.namenodes、dfs.namenode.rpc-address、dfs.namenode.shared.edits.dir(QJM) 与 dfs.ha.automatic-failover.enabled=true 等;在 core-site.xml 设置 fs.defaultFS=hdfs://。
- 初始化与启动:hdfs zkfc -formatZK;在各 JournalNode 上启动 hdfs --daemon start journalnode;格式化共享编辑日志并启动 NameNode/ZKFC,通过 hdfs haadmin -getServiceState nn1 检查状态。