温馨提示×

Ubuntu与Hadoop的集成方法

小樊
43
2025-09-27 19:37:48
栏目: 智能运维

Ubuntu与Hadoop集成的详细步骤

1. 安装Java环境(Hadoop前置依赖)

Hadoop是基于Java开发的,需先安装Java运行环境(推荐OpenJDK 8或11)。在Ubuntu终端执行以下命令:

sudo apt update
sudo apt install openjdk-8-jdk  # 或openjdk-11-jdk

验证安装是否成功:

java -version

输出应显示Java版本信息(如openjdk version "1.8.0_392")。

2. 配置SSH无密码登录(集群通信必备)

Hadoop集群中的节点(如NameNode与DataNode)需要通过SSH无密码登录实现安全通信。

  • 生成SSH密钥对:
    ssh-keygen -t rsa
    
    按回车键接受默认路径(~/.ssh/id_rsa),无需设置密码。
  • 将公钥复制到本地授权文件:
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys  # 设置文件权限为仅用户可读写
    
  • 测试无密码登录:
    ssh localhost
    
    若无需输入密码即可登录,则配置成功。

3. 下载并解压Hadoop

从Apache Hadoop官网下载稳定版本(如3.3.6),解压至/usr/local目录(系统级安装路径):

wget https://downloads.apache.org/hadoop/core/hadoop-3.3.6/hadoop-3.3.6.tar.gz
sudo tar -xzf hadoop-3.3.6.tar.gz -C /usr/local/
sudo chown -R $USER:$USER /usr/local/hadoop-3.3.6  # 修改目录所有者为当前用户

为方便使用,可重命名解压后的目录:

sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop

4. 配置Hadoop环境变量

编辑用户级环境变量文件(~/.bashrc~/.profile),添加Hadoop相关路径:

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使配置生效:

source ~/.bashrc

验证环境变量是否配置成功:

echo $HADOOP_HOME  # 应输出/usr/local/hadoop
hadoop version     # 应显示Hadoop版本信息

5. 配置Hadoop核心文件

Hadoop的主要配置文件位于$HADOOP_HOME/etc/hadoop目录下,需修改以下文件:

(1) core-site.xml(HDFS默认文件系统)

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>  <!-- 单机模式下指向本地NameNode -->
    </property>
</configuration>

(2) hdfs-site.xml(HDFS存储配置)

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>  <!-- 单机模式下副本数为1,集群模式需调整为≥3 -->
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/data/namenode</value>  <!-- NameNode元数据存储路径 -->
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/data/datanode</value>  <!-- DataNode数据存储路径 -->
    </property>
</configuration>

(3) mapred-site.xml(MapReduce框架配置)

若文件不存在,需复制模板生成:

cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml

编辑内容:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>  <!-- 使用YARN作为资源管理框架 -->
    </property>
</configuration>

(4) yarn-site.xml(YARN资源管理配置)

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>  <!-- 启用MapReduce Shuffle服务 -->
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>localhost</value>  <!-- 单机模式下ResourceManager运行在本地 -->
    </property>
</configuration>

6. 格式化HDFS(首次启动必做)

HDFS的NameNode需要格式化以初始化元数据(此操作会清除已有数据,仅首次启动时执行):

hdfs namenode -format

格式化完成后,会生成data/namenodedata/datanode目录。

7. 启动Hadoop集群

通过以下命令启动HDFS和YARN服务:

start-dfs.sh    # 启动HDFS(NameNode、DataNode)
start-yarn.sh   # 启动YARN(ResourceManager、NodeManager)

验证服务是否启动成功:

jps  # 应显示NameNode、DataNode、ResourceManager、NodeManager等进程

8. 验证Hadoop功能

  • 访问Web界面
    打开浏览器,输入以下地址查看集群状态:
    • HDFS NameNode:http://localhost:9870(Hadoop 3.x版本端口)
    • YARN ResourceManager:http://localhost:8088
  • 测试文件操作
    向HDFS上传测试文件,验证存储功能:
    hadoop fs -mkdir -p /user/$USER/input  # 创建输入目录
    hadoop fs -put $HADOOP_HOME/etc/hadoop/*.xml /user/$USER/input  # 上传配置文件作为测试数据
    hadoop fs -ls /user/$USER/input        # 查看上传的文件
    

9. 可选:关闭Hadoop集群

若需停止服务,执行以下命令:

stop-yarn.sh    # 停止YARN
stop-dfs.sh     # 停止HDFS

常见问题解决

  • 权限问题:确保Hadoop相关目录(如data/namenodedata/datanode)的所有者为当前用户,避免使用root用户操作。
  • 端口冲突:若端口被占用(如9000、50070),可修改core-site.xml中的fs.defaultFS端口或关闭占用进程。
  • 配置文件错误:检查hadoop-env.sh中的JAVA_HOME是否指向正确的Java路径,各配置文件中的路径是否一致。

0