Ubuntu上Hadoop的分布式计算如何实现
导读:在 Ubuntu 上实现 Hadoop 分布式计算 一、架构与组件 存储层:HDFS(NameNode + DataNode),负责数据分块、多副本存储与容错。 计算调度层:YARN(ResourceManager + NodeManag...
在 Ubuntu 上实现 Hadoop 分布式计算
一、架构与组件
- 存储层:HDFS(NameNode + DataNode),负责数据分块、多副本存储与容错。
- 计算调度层:YARN(ResourceManager + NodeManager),负责资源管理与任务调度。
- 计算模型:MapReduce,将作业拆分为 Map 与 Reduce 阶段在多节点并行执行。
- 典型拓扑:至少 1 个 NameNode + 多个 DataNode,以及 1 个 ResourceManager + 多个 NodeManager;生产环境建议 NameNode 高可用(QJM/NFS)。
二、环境准备与集群规划
- 节点与网络:准备 3 台 Ubuntu(示例:ubuntu1/ubuntu2/ubuntu3),配置 主机名解析 与 SSH 免密登录(主节点可免密登录所有从节点)。
- Java:安装 JDK 8(所有节点版本一致),并正确设置 JAVA_HOME。
- Hadoop:下载解压至统一路径(如 /usr/local/hadoop),配置环境变量 HADOOP_HOME/PATH。
- 目录规划:为 NameNode/DataNode 指定本地数据目录(如 /data/hdfs/namenode、/data/hdfs/datanode),并确保目录存在且权限正确。
三、关键配置步骤
- 配置 SSH 免密登录(主节点执行)
- 生成密钥:ssh-keygen -t rsa
- 分发公钥:ssh-copy-id user@ubuntu2;ssh-copy-id user@ubuntu3
- 配置 Hadoop 环境变量(所有节点)
- 在 /etc/profile 或 ~/.bashrc 中添加:
- export HADOOP_HOME=/usr/local/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 使生效:source /etc/profile
- 在 /etc/profile 或 ~/.bashrc 中添加:
- 核心配置文件($HADOOP_HOME/etc/hadoop)
- core-site.xml
- fs.defaultFShdfs://ubuntu1:9000
- hdfs-site.xml
- dfs.replication3
- dfs.namenode.name.dir/data/hdfs/namenode
- dfs.datanode.data.dir/data/hdfs/datanode
- mapred-site.xml(若不存在先 cp mapred-site.xml.template)
- mapreduce.framework.nameyarn
- yarn-site.xml
- yarn.nodemanager.aux-servicesmapreduce_shuffle
- yarn.nodemanager.aux-services.mapreduce.shuffle.classorg.apache.hadoop.mapred.ShuffleHandler
- workers(Hadoop 3.x)或 slaves(Hadoop 2.x)
- 写入工作节点主机名:ubuntu2、ubuntu3
- core-site.xml
- 分发与权限
- 将 Hadoop 目录与 /etc/profile 分发至各节点(如 scp -r …),统一 JAVA_HOME 与路径。
- 在 hadoop-env.sh 中显式设置 JAVA_HOME,并按需设置 HDFS/YARN 运行用户 与 日志目录(示例:root;生产建议专用用户)。
四、启动与验证
- 首次启动前格式化 HDFS(仅一次)
- 主节点执行:hdfs namenode -format
- 启动集群
- 方式一:start-all.sh
- 方式二:start-dfs.sh 与 start-yarn.sh 分别启动
- 进程校验
- 主节点 jps:NameNode、ResourceManager、SecondaryNameNode
- 从节点 jps:DataNode、NodeManager
- 集群状态
- HDFS:hdfs dfsadmin -report(查看 Live datanodes、容量、副本等)
- YARN:yarn node -list
- Web UI
- HDFS NameNode:http://< 主节点IP> :9870
- YARN ResourceManager:http://< 主节点IP> :8088
- 运行测试作业(WordCount)
- 上传数据:hdfs dfs -mkdir -p /input;hdfs dfs -put sample.txt /input
- 提交作业:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input /output
- 查看结果:hdfs dfs -cat /output/part-r-00000。
五、常见问题与优化建议
- 常见故障
- JAVA_HOME 未设置:在 hadoop-env.sh 显式导出正确的 JDK 路径。
- 端口访问拒绝:确认防火墙放行 9870/8088 等端口,或临时关闭防火墙测试。
- 集群 ID 不匹配:异常关机/多次格式化导致,清理 DataNode 数据目录后重启,或确保只格式化一次。
- SSH 免密失败:检查 ~/.ssh/authorized_keys 权限与内容,确保主节点能无密登录所有从节点。
- 优化与安全
- 资源与堆内存:在 hadoop-env.sh 设置 HADOOP_HEAPSIZE(如 1024),按节点内存合理分配。
- 生产建议:启用 NameNode HA(QJM)、启用 Kerberos 认证、为 HDFS/YARN 配置专用系统用户与最小权限、开启审计日志与监控告警。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上Hadoop的分布式计算如何实现
本文地址: https://pptw.com/jishu/748698.html
