如何在Ubuntu上高效运行Hadoop
导读:在 Ubuntu 上高效运行 Hadoop 的实用指南 一 基础环境准备 选择 Ubuntu Server 20.04/22.04 LTS,更新系统并安装依赖:sudo apt update && sudo apt ins...
在 Ubuntu 上高效运行 Hadoop 的实用指南
一 基础环境准备
- 选择 Ubuntu Server 20.04/22.04 LTS,更新系统并安装依赖:sudo apt update & & sudo apt install -y openjdk-8-jdk openssh-server。
- 配置 SSH 免密登录(单机或集群管理节点到各节点的免密),便于脚本化启停与作业提交流程。
- 下载并解压 Hadoop 3.3.x(稳定、生态完善),移动到如 /usr/local/hadoop;设置环境变量:JAVA_HOME(如 /usr/lib/jvm/java-8-openjdk-amd64)、HADOOP_HOME、PATH(含 $HADOOP_HOME/bin 与 $HADOOP_HOME/sbin)。
- 验证环境:java -version、ssh localhost、echo $JAVA_HOME/$HADOOP_HOME 均返回预期路径。
二 高效配置 Hadoop 与 YARN
- 核心配置建议(示例为最小可用,可按资源扩展):
- core-site.xml:设置默认文件系统为 hdfs://namenode:9000。
- hdfs-site.xml:副本数 dfs.replication=3(生产建议≥3);数据目录使用独立磁盘或 SSD(如 /data/hdfs/name, /data/hdfs/data)。
- mapred-site.xml:MapReduce 运行在 YARN 上(mapreduce.framework.name=yarn)。
- yarn-site.xml:启用 mapreduce_shuffle;按节点资源设置 yarn.nodemanager.resource.memory-mb 与 yarn.nodemanager.resource.cpu-vcores。
- hadoop-env.sh / mapred-site.xml:显式导出 HADOOP_MAPRED_HOME,避免 AM/Map/Reduce 找不到类。
- workers(或旧版 slaves):列出所有 DataNode/NodeManager 主机名,一行一个。
- 快速验证:
- 格式化 NameNode:hdfs namenode -format(仅首次)。
- 启动集群:start-dfs.sh & & start-yarn.sh;用 jps 检查进程(NameNode、DataNode、ResourceManager、NodeManager)。
- 访问 HDFS Web UI:http://:9870,YARN Web UI:http://:8088。
三 性能优化要点
- 存储与 I/O:
- 将 dfs.datanode.data.dir 指向 SSD/NVMe 或多盘条带化目录,提高吞吐。
- 根据作业与数据规模调整 dfs.blocksize(如 256MB 或 512MB),减少小文件与元数据压力。
- 资源与并行:
- 合理设置 yarn.nodemanager.resource.memory-mb / cpu-vcores,避免超卖;结合队列与调度策略提升利用率。
- 提升并行度:合理设置 mapreduce.job.maps/reduces 或使用 Combiner、合理分区,减少数据倾斜。
- 网络与数据本地化:
- 保证节点间 低时延高带宽;优化 数据本地化(如 mapreduce.job.locality.wait),减少跨节点网络传输。
- 中间数据与压缩:
- 启用中间与输出压缩(如 mapreduce.map.output.compress=true、mapreduce.output.fileoutputformat.compress=true),降低 I/O 与网络开销。
- JVM 与容器:
- 调整 mapreduce.{ map|reduce} .java.opts 与容器内存,避免 OOM 与频繁 GC。
四 集群管理与稳定性
- 安全与网络:
- 配置 静态 IP 与 防火墙放行(如 9000/9870/8088 及数据端口范围),确保节点互通与 UI/作业访问稳定。
- 监控与日志:
- 常态化查看 NameNode/DataNode/ResourceManager/NodeManager 日志;必要时引入 Ambari/Cloudera Manager 做可视化监控与告警。
- 运维要点:
- 避免频繁 NameNode 格式化(会导致 ClusterID 不一致);需要重建时先清理数据目录并统一 ClusterID。
- 变更配置后按顺序重启相关守护进程,保持 HADOOP_CONF_DIR 一致,确保各节点配置同步。
五 快速验证与常见故障排查
- 快速验证:
- 运行示例:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 10 100;或 wordcount 小数据集。
- 观察 YARN UI 的队列、容器分配与任务进度,核对数据本地化比例与 GC 时间。
- 常见故障:
- “找不到或加载 MRAppMaster 类” → 检查 HADOOP_MAPRED_HOME 与 yarn.app.mapreduce.am.env/mapreduce.{ map|reduce} .env 是否正确导出。
- ClusterID 不匹配 → 清理 NameNode 与 DataNode 数据目录后统一 ClusterID 再格式化。
- 端口不通或访问异常 → 核对 防火墙/安全组、主机名解析与 workers 配置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上高效运行Hadoop
本文地址: https://pptw.com/jishu/764755.html
