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
解决

  1. 生成密钥:ssh-keygen -t rsa
  2. 拷贝公钥:ssh-copy-id -i ~/.ssh/id_rsa.pub localhost
  3. 验证: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)
解决

  1. 查看占用:netstat -tunlp | grep 9000
  2. 修改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)

  1. 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示例
  }
}

  1. 打包与提交:
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
  • 日志排查
    # 查看任务日志
    yarn logs -applicationId <app_id>
    

⚠️ 踩坑记录

坑点:任务卡在ACCEPTED状态
原因:资源不足或队列阻塞
解决

  1. 检查yarn-site.xmlyarn.scheduler.capacity.maximum-am-resource-percent(建议≤0.8)
  2. 增加集群资源或清理队列

关键总结

  1. 环境隔离:优先使用虚拟机/Docker避免系统污染
  2. 配置检查:80%的启动失败源于端口冲突或路径错误
  3. 资源分配:伪分布式模式需显式调低内存配置
  4. 日志优先:遇故障先查logs/目录下的错误日志

附:完整配置模板见Hadoop官方文档

更多推荐