Hadoop 学习成长:从环境搭建到 MapReduce 实战的 5 个核心步骤(附踩坑记录)
·
Hadoop学习路径:从环境搭建到MapReduce实战
(含5大核心步骤及避坑指南)
步骤1:环境搭建
核心操作:
- 安装Java环境(推荐JDK8)
sudo apt install openjdk-8-jdk # Ubuntu示例
- 下载Hadoop二进制包(官网下载)
- 配置环境变量(
~/.bashrc):
export HADOOP_HOME=/path/to/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
⚠️ 踩坑记录:
坑点:SSH免密登录失败
现象:启动时报错Connection refused
解决:
- 生成密钥:
ssh-keygen -t rsa- 拷贝公钥:
ssh-copy-id -i ~/.ssh/id_rsa.pub localhost- 验证:
ssh localhost
步骤2:HDFS配置与启动
核心配置(etc/hadoop/core-site.xml):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- 端口冲突时更换 -->
</property>
</configuration>
启动命令:
hdfs namenode -format # 首次需格式化
start-dfs.sh # 启动HDFS
jps # 验证进程:NameNode/DataNode
⚠️ 踩坑记录:
坑点:端口被占用(如9000)
解决:
- 查看占用:
netstat -tunlp | grep 9000- 修改
core-site.xml中的端口值
步骤3:YARN资源管理配置
关键配置(etc/hadoop/mapred-site.xml):
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 启用YARN模式 -->
</property>
启动命令:
start-yarn.sh
⚠️ 踩坑记录:
坑点:
NodeManager未启动
原因:内存分配不足(默认配置过高)
解决:
修改etc/hadoop/yarn-site.xml:<property> <name>yarn.nodemanager.resource.memory-mb</name> <value>2048</value> <!-- 根据机器配置调整 --> </property>
步骤4:MapReduce开发实战
示例:词频统计(WordCount)
- Java代码(
WordCount.java):
public class WordCount extends Configured implements Tool {
@Override
public int run(String[] args) throws Exception {
Job job = Job.getInstance(getConf(), "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setReducerClass(IntSumReducer.class);
// ... 完整代码见Hadoop示例
}
}
- 打包与提交:
hadoop com.sun.tools.javac.Main WordCount.java # 编译
jar cf wc.jar WordCount*.class # 打包
hadoop jar wc.jar WordCount /input /output # 提交任务
步骤5:监控与调试
核心工具:
- Web UI:
- HDFS:
http://localhost:9870 - YARN:
http://localhost:8088
- HDFS:
- 日志排查:
# 查看任务日志 yarn logs -applicationId <app_id>
⚠️ 踩坑记录:
坑点:任务卡在
ACCEPTED状态
原因:资源不足或队列阻塞
解决:
- 检查
yarn-site.xml中yarn.scheduler.capacity.maximum-am-resource-percent(建议≤0.8)- 增加集群资源或清理队列
关键总结
- 环境隔离:优先使用虚拟机/Docker避免系统污染
- 配置检查:80%的启动失败源于端口冲突或路径错误
- 资源分配:伪分布式模式需显式调低内存配置
- 日志优先:遇故障先查
logs/目录下的错误日志
附:完整配置模板见Hadoop官方文档
更多推荐
所有评论(0)