温馨提示×

如何在Ubuntu HDFS上部署应用

小樊
41
2025-09-29 22:11:20
栏目: 智能运维

在Ubuntu上部署HDFS应用的基础步骤

1. 环境准备

  • 更新系统:运行sudo apt update && sudo apt upgrade -y确保系统软件包最新。
  • 安装基础工具:安装编译工具和SSH服务(用于集群通信),命令:sudo apt install -y build-essential openssh-server

2. 安装Java环境

Hadoop依赖Java运行,推荐安装OpenJDK 8或11(兼容性更好)。

  • 安装OpenJDK 8:sudo apt install -y openjdk-8-jdk
  • 验证安装:java -version,输出应包含Java版本信息(如openjdk version "1.8.0_221")。

3. 下载并解压Hadoop

  • 从Apache官网下载稳定版Hadoop(如3.3.4):wget https://downloads.apache.org/hadoop/core/hadoop-3.3.4/hadoop-3.3.4.tar.gz
  • 解压到指定目录(如/usr/local):sudo tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
  • 重命名目录(可选):sudo mv /usr/local/hadoop-3.3.4 /usr/local/hadoop

4. 配置Hadoop环境变量

  • 编辑~/.bashrc文件(用户级配置)或/etc/profile(系统级配置),添加以下内容:
    export HADOOP_HOME=/usr/local/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
  • 使配置生效:source ~/.bashrc(或source /etc/profile)。

5. 配置HDFS核心文件

进入Hadoop配置目录($HADOOP_HOME/etc/hadoop),修改以下文件:

  • core-site.xml(定义HDFS默认文件系统):

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value> <!-- 单机模式为localhost,集群模式替换为NameNode IP -->
        </property>
    </configuration>
    
  • 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>
    
  • (可选)yarn-site.xml(若启用YARN资源管理):

    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
            <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
    </configuration>
    
  • (可选)workers文件(集群模式下指定DataNode节点):
    编辑$HADOOP_HOME/etc/hadoop/workers,添加DataNode主机名(如slave1slave2),每行一个。

6. 创建HDFS数据目录

  • 创建NameNode和DataNode的存储目录:
    sudo mkdir -p /usr/local/hadoop/data/namenode
    sudo mkdir -p /usr/local/hadoop/data/datanode
    
  • 修改目录权限(确保Hadoop用户拥有所有权):
    sudo chown -R $USER:$USER /usr/local/hadoop/data
    

7. 格式化NameNode

首次启动HDFS前,必须格式化NameNode(初始化元数据):

hdfs namenode -format

注意:格式化会清除所有HDFS数据,仅首次启动时执行一次。

8. 启动HDFS服务

  • 启动HDFS服务(包含NameNode和DataNode):
    start-dfs.sh
    
  • 验证进程是否启动:jps,输出应包含NameNodeDataNode(单机模式)或SecondaryNameNode(可选)。

9. 验证HDFS状态

  • 命令行验证
    • 查看HDFS根目录:hdfs dfs -ls /
    • 创建测试目录:hdfs dfs -mkdir -p /user/$USER
    • 上传本地文件到HDFS:hdfs dfs -put ~/test.txt /user/$USER/
    • 下载HDFS文件到本地:hdfs dfs -get /user/$USER/test.txt ~/test_downloaded.txt
  • Web界面验证: 打开浏览器访问http://localhost:9870(HDFS NameNode Web界面),查看集群状态和文件系统。

10. 可选:配置SSH免密码登录(集群模式必需)

若部署HDFS集群,需配置主节点(NameNode)到从节点(DataNode)的SSH免密登录:

  • 生成SSH密钥:ssh-keygen -t rsa -P ''(直接回车,默认保存到~/.ssh/id_rsa)。
  • 分发公钥到从节点:ssh-copy-id slave1(替换为从节点主机名)。
  • 测试免密登录:ssh slave1,无需输入密码即可登录。

常见问题排查

  • NameNode无法启动:检查dfs.namenode.name.dir路径是否存在且权限正确,或尝试删除/usr/local/hadoop/data/namenode/current目录(重新格式化)。
  • DataNode未注册:检查dfs.datanode.data.dir路径是否正确,或查看DataNode日志($HADOOP_HOME/logs/hadoop-*-datanode-*.log)。
  • 端口冲突:修改core-site.xml中的fs.defaultFS端口(如9001),确保未被其他服务占用。

通过以上步骤,可在Ubuntu系统上完成HDFS的基础部署。如需扩展为集群模式,需重复“环境准备”至“启动HDFS服务”步骤在从节点执行,并同步配置文件(通过scp命令分发$HADOOP_HOME/etc/hadoop目录到所有从节点)。

0