在 Debian 上部署 Hadoop 并运行应用的完整流程
一 环境准备与规划
- 节点与角色
- NameNode ×1:管理 HDFS 元数据
- DataNode ×N:存储实际数据
- ResourceManager ×1:管理 YARN 资源
- NodeManager ×N:管理容器与任务
- 软件与版本
- Java 8 或更高版本(推荐 OpenJDK 8/11 或 Eclipse Temurin 8)
- Hadoop 3.3.x(如 3.3.6)稳定版
- 基础配置
- 所有节点间可 SSH 互通(建议主节点到各节点免密)
- 配置 /etc/hosts 映射各节点 IP ↔ 主机名
- 创建专用 hadoop 用户并加入 sudo(可选但推荐)
- 规划数据与日志目录(如 /usr/local/hadoop/dfs/{name,data}),并预先创建与赋权
二 安装与配置 Hadoop
- 安装 Java
- OpenJDK 8
- sudo apt update && sudo apt install -y openjdk-8-jdk
- Eclipse Temurin 8(推荐)
- wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /etc/apt/keyrings/adoptium.asc
- echo “deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://mirrors.tuna.tsinghua.edu.cn/Adoptium/deb $(lsb_release -rs) main” | sudo tee /etc/apt/sources.list.d/adoptium.list
- sudo apt update && sudo apt install -y temurin-8-jdk
- 下载并解压 Hadoop
- wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
- sudo tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local
- sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop
- 环境变量(所有节点)
- 编辑 ~/.bashrc 或 /etc/profile
- export JAVA_HOME=/usr/lib/jvm/temurin-8-jdk-amd64 # 若用 OpenJDK 8:/usr/lib/jvm/java-8-openjdk-amd64
- export HADOOP_HOME=/usr/local/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 使生效:source ~/.bashrc 或 source /etc/profile
- 关键配置(路径:$HADOOP_HOME/etc/hadoop)
- core-site.xml
-
- fs.defaultFShdfs://**namenode**:**9000**
-
- hdfs-site.xml
-
- dfs.replication**3**
- dfs.namenode.name.dir/usr/local/hadoop/dfs/name
- dfs.datanode.data.dir/usr/local/hadoop/dfs/data
-
- mapred-site.xml(如文件不存在先 cp mapred-site.xml.template mapred-site.xml)
-
- mapreduce.framework.name**yarn**
-
- yarn-site.xml
-
- yarn.nodemanager.aux-services**mapreduce_shuffle**
- yarn.nodemanager.aux-services.mapreduce.shuffle.classorg.apache.hadoop.mapred.**ShuffleHandler**
-
- hadoop-env.sh
- 显式设置:export JAVA_HOME=…(与上一致)
- 目录与权限
- sudo mkdir -p /usr/local/hadoop/dfs/{name,data}
- sudo chown -R hadoop:hadoop /usr/local/hadoop
- sudo chmod -R 755 /usr/local/hadoop/dfs
三 启动与验证
- 格式化 HDFS(仅在 NameNode 执行一次)
- 启动服务
- 在 NameNode 执行:start-dfs.sh
- 在 ResourceManager 执行:start-yarn.sh
- 进程与连通性检查
- jps 应看到:NameNode、DataNode、ResourceManager、NodeManager
- 本地验证:hadoop version
- Web UI:ResourceManager 8088,NameNode 9870(若浏览器访问,请确认主机名/IP 与端口可达)
- 常见问题速查
- 节点不通:检查 /etc/hosts、SSH 免密、防火墙/安全组
- 权限错误:检查 Hadoop 目录属主/权限
- 配置错误:核对 core-site.xml/hdfs-site.xml/mapred-site.xml/yarn-site.xml 的 key/value 与路径
四 部署与运行示例应用
- 准备数据到 HDFS
- hdfs dfs -mkdir -p /user/hadoop/input
- hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /user/hadoop/input
- 运行内置 WordCount
- hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount
/user/hadoop/input /user/hadoop/output
- 查看结果
- hdfs dfs -cat /user/hadoop/output/part-r-00000
- 作业状态与日志
- 浏览器访问 ResourceManager 8088 查看应用详情与日志
- 或在 CLI:yarn application -list / yarn logs -applicationId <app_id>
五 生产部署与安全加固建议
- 高可用与规模
- 引入 JournalNode/ZooKeeper 实现 HDFS HA;YARN ResourceManager HA 提升容错
- 结合数据量与并发度调整 副本数(dfs.replication)、容器内存与 vcore
- 操作系统与 JVM
- 提升文件句柄与网络参数(如 fs.file-max、net.core.somaxconn)
- 合理设置 JVM 堆大小 与 GC 策略,避免 Full GC 抖动
- 安全
- 启用 Kerberos 认证、HDFS 权限/ACL、YARN 队列与配额
- 启用 TLS/HTTPS 保护 Web 与 RPC 通信
- 数据与运维
- 使用 Parquet/ORC 等列式格式,配合 分区/分桶 提升性能
- 规范目录结构、备份关键配置与元数据,完善监控与告警(如 Prometheus + Grafana)