Debian如何定制Hadoop环境
小樊
40
2025-12-23 03:35:55
在 Debian 上定制 Hadoop 环境
一 环境准备与基础安装
- 安装 Java(推荐 OpenJDK 8 或 11):sudo apt update && sudo apt install -y openjdk-11-jdk;验证:java -version。
- 创建专用用户(可选但推荐):groupadd hadoop && useradd -g hadoop -m hadoop && passwd hadoop;按需加入 sudo。
- 配置主机名与解析:编辑 /etc/hosts,为所有节点添加 IP 与主机名映射,确保节点互通。
- 配置 SSH 免密:在主节点执行 ssh-keygen -t rsa,随后 ssh-copy-id 到所有节点(含本机),便于脚本化启停。
- 下载并解压 Hadoop(示例版本 3.3.6):wget https://downloads.apache.org/hadoop/core/hadoop-3.3.6/hadoop-3.3.6.tar.gz && tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local && mv /usr/local/hadoop-3.3.6 /usr/local/hadoop。
- 设置环境变量(/etc/profile 或 ~/.bashrc):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 使其生效。
- 基础校验:hadoop version 应返回已安装版本号。
二 核心配置与目录规划
- 配置 hadoop-env.sh:显式设置 export JAVA_HOME;如使用 root 运行守护进程,可同时设置 HDFS/YARN 相关 *_USER 变量(生产建议以专用用户运行)。
- 配置 core-site.xml:设置默认文件系统与本地临时目录。示例:
fs.defaultFShdfs://namenode:8020
hadoop.tmp.dir/export/data/hadoop
- 配置 hdfs-site.xml:设置副本数与数据目录。示例:
dfs.replication3
dfs.namenode.name.dirfile:///export/data/hadoop/dfs/name
dfs.datanode.data.dirfile:///export/data/hadoop/dfs/data
- 配置 mapred-site.xml:启用 YARN 并开启历史服务器。示例:
mapreduce.framework.nameyarn
mapreduce.jobhistory.addressnamenode:10020
mapreduce.jobhistory.webapp.addressnamenode:19888
- 配置 yarn-site.xml:指定 ResourceManager 与 Shuffle 服务。示例:
yarn.resourcemanager.hostnamenamenode
yarn.nodemanager.aux-servicesmapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.classorg.apache.hadoop.mapred.ShuffleHandler
- 配置 workers(或 slaves):逐行写入所有 DataNode/NodeManager 主机名。
- 目录准备与权限:提前创建上述数据目录并赋予运行用户(如 hadoop:hadoop)读写权限。
三 启动与验证
- 首次启动前格式化 HDFS(仅一次):hdfs namenode -format。
- 启动服务:start-dfs.sh 与 start-yarn.sh(或使用 start-all.sh)。
- 进程校验:jps 应能看到 NameNode、DataNode、ResourceManager、NodeManager 等进程。
- Web 界面:
- HDFS NameNode:http://namenode:9870(Hadoop 3 默认端口)
- YARN ResourceManager:http://namenode:8088
- MapReduce JobHistory:http://namenode:19888
- 运行示例:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output(确保 /input 存在且包含文本)。
四 常见定制与优化
- 资源分配(示例,按节点内存调整):
- yarn.nodemanager.resource.memory-mb:节点可分配给容器的总内存(如 8192 MB)
- yarn.scheduler.minimum-allocation-mb:容器最小内存(如 512 MB)
- yarn.scheduler.maximum-allocation-mb:容器最大内存(如 4096 MB)
- 系统调优:提升文件描述符与网络参数(如 fs.file-max、net.core.somaxconn),以支持更多并发连接与文件句柄。
- 安全与权限:避免使用 root 运行生产守护进程;为 Hadoop 目录设置最小权限;必要时启用 Kerberos、启用 HDFS 权限检查。
- 高可用与扩展:规划 JournalNode、ZooKeeper、HA NameNode 等组件;按数据增长横向扩展 DataNode。
- 端口规划:避免与系统服务冲突,必要时在 yarn-site.xml/hdfs-site.xml 中调整 HTTP/RPC 端口。
五 故障排查要点
- 配置与权限:核对 core-site.xml/hdfs-site.xml/mapred-site.xml/yarn-site.xml 的键名与值;确保数据目录存在且属主正确。
- SSH 连通:主节点到所有节点(含本机)需免密;/etc/hosts 解析正确;必要时用 ssh nodeX 验证。
- 端口占用:检查 8020/9870/8088/19888 等端口是否被占用(ss -lntp | grep 端口)。
- 日志定位:查看 $HADOOP_HOME/logs 下对应角色的 .log 与 .out 文件,优先从异常堆栈定位问题。
- 常见症状:未格式化导致启动失败、临时目录被清理需重新 format、未配置 workers 导致从节点未启动、内存参数过小导致容器申请失败。