Linux HDFS集群如何搭建
小樊
40
2025-12-20 13:55:29
Linux HDFS集群搭建步骤
一 环境准备与规划
- 准备至少3台Linux服务器(建议CentOS 7/8或Ubuntu 20.04+),同一局域网,建议配置静态IP与主机名,并在所有节点配置**/etc/hosts**解析。示例:
- 192.168.1.101 node1
- 192.168.1.102 node2
- 192.168.1.103 node3
- 安装JDK 8(Hadoop 3.x 系列普遍以 JDK 8 为主),在所有节点配置环境变量。
- 创建专用用户(如hadoop)用于部署与运行,避免使用 root。
- 建议节点规划:
- node1:NameNode + DataNode
- node2:DataNode
- node3:SecondaryNameNode + DataNode
- 基础检查:节点间可SSH互通、时间同步(可用 NTP)、关闭或放行防火墙相关端口。
二 安装与基础配置
- 在所有节点安装并验证 JDK:
- 安装示例:sudo yum install -y java-1.8.0-openjdk-devel
- 验证:java -version
- 下载并解压 Hadoop(示例版本3.2.10)到统一目录(如**/opt/hadoop**):
- wget https://archive.apache.org/dist/hadoop/core/hadoop-3.2.10/hadoop-3.2.10.tar.gz
- tar -zxvf hadoop-3.2.10.tar.gz -C /opt/hadoop
- 配置环境变量(/etc/profile 或 ~/.bash_profile):
- export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
- export HADOOP_HOME=/opt/hadoop/hadoop-3.2.10
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 使生效:source /etc/profile
- 配置 SSH 免密登录(以 hadoop 用户为例):
- 在 node1 生成密钥:ssh-keygen -t rsa
- 分发公钥到所有节点:ssh-copy-id node1;ssh-copy-id node2;ssh-copy-id node3
- 在 Hadoop 配置目录($HADOOP_HOME/etc/hadoop)准备核心文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers(或 slaves)。
三 关键配置示例
- core-site.xml(指定默认文件系统与临时目录)
-
fs.defaultFShdfs://node1:9000
hadoop.tmp.dir/opt/hadoop/data/tmp
- hdfs-site.xml(副本数与本地存储目录)
-
dfs.replication2
dfs.namenode.name.dir/opt/hadoop/data/namenode
dfs.datanode.data.dir/opt/hadoop/data/datanode
dfs.permissions.enabledfalse
- mapred-site.xml(使用 YARN 作为执行框架)
-
mapreduce.framework.nameyarn
- yarn-site.xml(指定 ResourceManager 与 Shuffle 服务)
-
yarn.resourcemanager.hostnamenode1
yarn.nodemanager.aux-servicesmapreduce_shuffle
- workers(或 slaves,列出所有 DataNode 主机名)
- 目录准备(所有节点)
- mkdir -p /opt/hadoop/data/{tmp,namenode,datanode}
- chown -R hadoop:hadoop /opt/hadoop
四 启动与验证
- 在 NameNode(node1)初始化 HDFS:
- 启动 HDFS:
- 可选:启动 YARN(若已配置)
- 验证进程(各节点执行 jps):
- node1:NameNode、DataNode、(可选)ResourceManager
- node2:DataNode、NodeManager
- node3:SecondaryNameNode、DataNode、NodeManager
- Web 界面:
- HDFS NameNode:http://node1:50070
- YARN ResourceManager:http://node1:8088
- 基本功能测试:
- hdfs dfs -mkdir -p /user/test
- hdfs dfs -put /etc/hosts /user/test
- hdfs dfs -ls /user/test
五 常见问题与高可用扩展
- 常见问题
- 防火墙/SELinux:实验环境可临时关闭(systemctl stop firewalld;SELINUX=disabled),生产环境请按需放行端口或启用安全策略。
- SSH 免密:确保 ~/.ssh/authorized_keys 权限为600,各节点可互相免密登录。
- 时间同步:使用 NTP 统一时间,避免因时钟漂移导致异常。
- 权限问题:测试环境可临时设置 dfs.permissions.enabled=false,生产环境请启用并规范权限。
- 多次格式化:更换 dfs.namenode.name.dir 后需清理旧元数据再格式化,避免启动异常。
- 高可用扩展(HA)
- 引入 ZooKeeper 与 JournalNode,部署 ZKFC 与双 NameNode(Active/Standby),通过 QJM 共享编辑日志,实现故障自动切换。适合生产环境提升可用性。