ubuntu

如何在Ubuntu上运行Hadoop作业

小樊
45
2025-07-11 22:51:34
栏目: 智能运维

在Ubuntu上运行Hadoop作业涉及多个步骤,包括安装和配置Hadoop环境、编写和提交Hadoop作业、以及监控作业的执行。以下是详细的步骤指南:

一、在Ubuntu上安装和配置Hadoop

  1. 准备工作
  1. 安装Java
sudo apt-get update
sudo apt-get install openjdk-8-jdk
java -version
  1. 下载并解压Hadoop
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -zxvf hadoop-3.3.4.tar.gz -C /opt/
sudo mv /opt/hadoop-3.3.4 /opt/hadoop
  1. 配置环境变量
echo 'export HADOOP_HOME=/opt/hadoop' >> ~/.bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc
source ~/.bashrc
  1. 配置Hadoop配置文件
  1. 格式化HDFS
hdfs namenode -format
  1. 启动Hadoop服务
start-dfs.sh
start-yarn.sh
  1. 验证Hadoop环境

二、编写Hadoop作业

Hadoop作业通常以Java编写,但也可以使用其他支持的编程语言如Python(通过Hadoop Streaming)。以下是一个简单的MapReduce作业示例:

Mapper (mapper.py):

#!/usr/bin/env python
import sys

for line in sys.stdin:
    print(line.strip().split()[0], '1')

Reducer (reducer.py):

#!/usr/bin/env python
import sys

current_word = None
current_count = 0

for line in sys.stdin:
    word, count = line.strip().split('\t')
    if current_word == word:
        current_count += int(count)
    else:
        if current_word:
            print(current_word, current_count)
        current_word = word
        current_count = int(count)

if current_word == word:
    print(current_word, current_count)

三、提交Hadoop作业

  1. 打包作业
zip my_job.zip mapper.py reducer.py
  1. 提交作业
hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount my_job.zip input_directory output_directory

其中,input_directory是作业要处理的数据目录,output_directory是输出目录。

四、监控作业执行

使用YARN资源管理器Web界面(http://localhost:8088)监控作业的执行状态和性能。

通过以上步骤,您可以在Ubuntu上成功运行Hadoop作业。请根据具体需求和环境调整配置和作业代码。

0
看了该问题的人还看了