在 Debian 上落地 Hadoop 生态的可操作方案
一、架构与基础准备
- 角色规划
- NameNode:1 台(管理 HDFS 元数据)
- DataNode:多台(存储实际数据)
- ResourceManager:1 台(管理 YARN 资源)
- NodeManager:多台(管理容器与任务)
- 硬件建议
- CPU:每节点至少 4 核,推荐 8 核+
- 内存:每节点至少 16GB,推荐 32GB+
- 存储:NameNode 用 SSD ≥ 500GB;DataNode 每节点 ≥ 2TB(HDD/SSD 视数据量)
- 网络:千兆以太网为基础,推荐 万兆以太网
- 系统与软件
- 操作系统:Debian 11/12
- Java:OpenJDK 8 或 11(Hadoop 3.x 兼容 8/11)
- 用户与目录:建议创建 hadoop 用户;Hadoop 安装至 /usr/local/hadoop-,数据目录如 /opt/hadoop 或 /usr/local/hadoop/dfs
- 网络与 SSH
- 配置 /etc/hosts 或使用 DNS,确保节点名可解析
- 配置 SSH 免密登录(控制节点能免密登录所有节点)
- 开放必要端口(如 9000/8020 HDFS、8088 YARN RM、50070/9870 NN Web、19888 MR History)或使用反向代理与防火墙白名单
二、Debian 上的安装与集群初始化
- 安装 Java
- Debian 11:sudo apt install -y openjdk-11-jdk
- Debian 12:sudo apt install -y openjdk-17-jdk
- 验证:java -version
- 创建 Hadoop 用户与目录
- sudo adduser --disabled-password --gecos “” hadoop
- sudo mkdir -p /opt/hadoop/{hdfs/name,hdfs/data,logs}
- sudo chown -R hadoop:hadoop /opt/hadoop /usr/local/hadoop-*
- 安装 Hadoop(以 3.3.6 为例)
- wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
- sudo tar -xzf hadoop-3.3.6.tar.gz -C /usr/local
- sudo ln -sfn /usr/local/hadoop-3.3.6 /usr/local/hadoop
- 环境变量(/etc/profile.d/hadoop.sh)
- export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
- export HADOOP_HOME=/usr/local/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- source /etc/profile
- 关键配置($HADOOP_HOME/etc/hadoop/)
- hadoop-env.sh:显式设置 JAVA_HOME
- core-site.xml
- fs.defaultFShdfs://master:9000
- hadoop.tmp.dir/opt/hadoop/tmp
- hdfs-site.xml
- dfs.replication3
- dfs.namenode.name.dir/opt/hadoop/hdfs/name
- dfs.datanode.data.dir/opt/hadoop/hdfs/data
- mapred-site.xml
- mapreduce.framework.nameyarn
- mapreduce.jobhistory.addressmaster:10020
- mapreduce.jobhistory.webapp.addressmaster:19888
- yarn-site.xml
- yarn.nodemanager.aux-servicesmapreduce_shuffle
- yarn.nodemanager.aux-services.mapreduce.shuffle.classorg.apache.hadoop.mapred.ShuffleHandler
- yarn.resourcemanager.hostnamemaster
- 初始化与启动
- 仅在 NameNode 执行:hdfs namenode -format
- 启动 HDFS:start-dfs.sh
- 启动 YARN:start-yarn.sh
- 启动历史服务(可选):mapred --daemon start historyserver
- 验证
- jps 应看到:NameNode/DataNode/SecondaryNameNode/ResourceManager/NodeManager/JobHistoryServer
- CLI:hdfs dfs -ls /
- Web:http://master:9870(HDFS NameNode)、http://master:8088(YARN RM)、http://master:19888(MR History)
三、与 Debian 生态及常见工具的集成
- 存储与数据格式
- 在 HDFS 上使用 列式格式(Parquet/ORC) 与 Snappy/ ZSTD 压缩,提升 I/O 与存储效率
- 计算引擎与作业
- MapReduce:已集成于 YARN
- Apache Spark:部署于 Debian,配置 HADOOP_CONF_DIR 与 YARN 支持,提交 spark-submit --master yarn
- Apache Hive:使用 Hive on MR/Tez/Spark;将 Hive Metastore 置于 MySQL/PostgreSQL,HiveServer2 通过 JDBC/Beeline 访问
- Apache HBase:基于 HDFS 的列式数据库,RegionServer 与 HDFS DataNode 协同部署
- 调度与队列
- YARN Capacity/Fair Scheduler:按业务划分队列与配额,保障 SLA
- 监控与可视化
- Prometheus + Grafana:采集 JMX(NameNode/DataNode/ResourceManager/NodeManager),构建容量与延迟面板
- 日志与审计:Hadoop 日志落盘至 /opt/hadoop/logs,结合 rsyslog/ELK 做集中检索
- 安全与合规
- 启用 Kerberos 做身份鉴别,HDFS ACL/Sentry/Ranger 做细粒度授权(按等保/合规要求)
- 运维与自动化
- 使用 Ansible 批量分发配置、启停服务与滚动升级;配置 systemd unit 管理守护进程(可选)
四、生产化要点与故障排查
- 高可用
- HDFS HA:部署 QJM/ZKFC 与 JournalNode,避免单点故障
- YARN RM HA:启用 ZooKeeper 故障转移
- 数据与元数据备份
- NameNode 元数据:定期 fsimage 与 EditLog 备份;启用 Checkpointing
- Hive Metastore:定期 DB 备份与恢复演练
- 性能与容量
- 合理设置 dfs.replication(如 3)、YARN 容器内存/核数、Map/Reducer 数量;结合数据倾斜做 分区/分桶
- 常见问题速查
- 节点无法互通:检查 /etc/hosts、防火墙、安全组
- DataNode 未注册:核对 dfs.datanode.data.dir 权限与磁盘空间
- 作业卡在 ACCEPTED:查看 YARN 队列配额 与 NodeManager 资源
- 端口冲突:确认 9000/8088/9870/19888 未被占用或改用自定义端口