温馨提示×

Linux HDFS集群如何搭建

小樊
40
2025-12-20 13:55:29
栏目: 智能运维

Linux HDFS集群搭建步骤

一 环境准备与规划

  • 准备至少3台Linux服务器(建议CentOS 7/8Ubuntu 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 主机名)
    • node1
    • node2
    • node3
  • 目录准备(所有节点)
    • mkdir -p /opt/hadoop/data/{tmp,namenode,datanode}
    • chown -R hadoop:hadoop /opt/hadoop

四 启动与验证

  • 在 NameNode(node1)初始化 HDFS:
    • hdfs namenode -format
  • 启动 HDFS:
    • start-dfs.sh
  • 可选:启动 YARN(若已配置)
    • start-yarn.sh
  • 验证进程(各节点执行 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)
    • 引入 ZooKeeperJournalNode,部署 ZKFC双 NameNode(Active/Standby),通过 QJM 共享编辑日志,实现故障自动切换。适合生产环境提升可用性。

0