温馨提示×

如何在 Ubuntu 上进行 Hadoop 测试

小樊
52
2025-10-04 07:08:37
栏目: 智能运维

Ubuntu 上 Hadoop 测试流程(以伪分布式为例)

在 Ubuntu 上测试 Hadoop 需完成环境准备→配置验证→HDFS 操作→MapReduce 任务执行四个核心步骤,以下是详细操作指南:

1. 前提条件:安装 Java 环境

Hadoop 依赖 Java 运行,需先安装 OpenJDK(推荐 8 或 11 版本):

sudo apt update
sudo apt install default-jdk
# 验证安装
java -version  # 应输出 Java 版本信息
javac -version # 应输出 Java 编译器版本

2. 下载并解压 Hadoop

从 Apache 官网下载稳定版 Hadoop(如 3.3.4),解压至指定目录(如 /usr/local/hadoop):

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
sudo tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.4 /usr/local/hadoop
# 设置权限
sudo chown -R $USER:$USER /usr/local/hadoop

3. 配置 Hadoop 核心文件

进入 Hadoop 配置目录,修改以下文件:

cd /usr/local/hadoop/etc/hadoop
  • hadoop-env.sh:设置 Java 环境变量(找到 JAVA_HOME 行,取消注释并修改):

    export JAVA_HOME=/usr/lib/jvm/default-java  # Ubuntu 默认 Java 路径
    
  • core-site.xml:配置 HDFS 默认文件系统和临时目录:

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value> <!-- HDFS 地址 -->
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/usr/local/hadoop/tmp</value> <!-- 临时目录(避免重启丢失) -->
        </property>
    </configuration>
    
  • hdfs-site.xml:配置 NameNode 和 DataNode 数据存储路径及副本数(伪分布式副本数为 1):

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value> <!-- 副本数(单节点设为 1) -->
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/name</value> <!-- NameNode 数据目录 -->
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/data</value> <!-- DataNode 数据目录 -->
        </property>
    </configuration>
    

4. 格式化 NameNode

首次启动前需格式化 NameNode(仅一次,多次格式化会清空 HDFS 数据):

hdfs namenode -format
# 成功输出应包含 "successfully formatted"

5. 启动 Hadoop 集群

启动 HDFS 和 YARN 服务(伪分布式无需单独启动 ResourceManager 和 NodeManager,start-dfs.sh 会一并启动):

start-dfs.sh  # 启动 HDFS
start-yarn.sh # 启动 YARN(可选,但建议开启)
  • 验证进程:运行 jps 查看是否启动以下进程:

    NameNode  # HDFS 主节点
    DataNode  # HDFS 数据节点
    SecondaryNameNode  # HDFS 辅助节点(可选)
    ResourceManager  # YARN 资源管理器(可选)
    NodeManager  # YARN 节点管理器(可选)
    
  • 访问 Web 界面

    • HDFS Web 界面:http://localhost:9870(查看 NameNode、DataNode 状态)
    • YARN ResourceManager:http://localhost:8088(查看集群资源使用情况)

6. 测试 HDFS 基本操作

通过 HDFS Shell 命令验证文件系统功能:

# 在 HDFS 中创建用户目录(需替换为你的用户名)
hdfs dfs -mkdir -p /user/$USER

# 将本地文件上传至 HDFS(以 Hadoop 自带的 XML 文件为例)
hdfs dfs -mkdir /user/$USER/input
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /user/$USER/input

# 查看 HDFS 中的文件列表
hdfs dfs -ls /user/$USER/input

7. 运行 MapReduce 示例(WordCount)

Hadoop 自带 wordcount 程序,用于统计文本文件中单词出现次数:

# 删除已有输出目录(避免重复运行报错)
hdfs dfs -rm -r /user/$USER/output

# 运行 WordCount 程序(输入路径:HDFS 中的 input 目录;输出路径:HDFS 中的 output 目录)
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /user/$USER/input /user/$USER/output

# 查看输出结果(HDFS 中的 part-r-00000 文件)
hdfs dfs -cat /user/$USER/output/part-r-00000

输出示例:

hadoop  3
mapreduce   2

8. 常见问题排查

  • JAVA_HOME not set:检查 hadoop-env.sh 中的 JAVA_HOME 路径是否正确。
  • Connection refused:检查防火墙是否关闭(sudo ufw disable),或端口是否被占用。
  • Output directory already exists:删除已有输出目录后再运行任务(hdfs dfs -rm -r /user/$USER/output)。

通过以上步骤,可在 Ubuntu 上完成 Hadoop 的基本功能测试,验证 HDFS 和 MapReduce 是否正常运行。

0