ubuntu

Ubuntu HDFS接口怎么使用

小樊
48
2025-10-27 08:17:50
栏目: 智能运维

Ubuntu下HDFS接口使用指南

一、前置准备:安装与配置Hadoop

在使用HDFS接口前,需完成Hadoop环境的搭建,主要包括以下步骤:

  1. 安装Java环境:Hadoop依赖Java,需先安装OpenJDK 8(或更高版本)。执行以下命令安装并验证:
    sudo apt update
    sudo apt install openjdk-8-jdk
    java -version  # 验证安装(需显示Java版本信息)
    
  2. 下载并解压Hadoop:从Apache官网下载最新稳定版Hadoop(如3.3.4),解压至指定目录(如/usr/local/):
    wget https://downloads.apache.org/hadoop/core/hadoop-3.3.4/hadoop-3.3.4.tar.gz
    tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
    
  3. 配置环境变量:编辑~/.bashrc文件,添加Hadoop路径:
    export HADOOP_HOME=/usr/local/hadoop-3.3.4
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
    执行source ~/.bashrc使配置生效。
  4. 配置HDFS核心文件:进入$HADOOP_HOME/etc/hadoop目录,修改以下文件:
    • core-site.xml:设置HDFS默认文件系统地址:
      <configuration>
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://localhost:9000</value>
          </property>
      </configuration>
      
    • hdfs-site.xml:配置NameNode和DataNode目录及副本数(单机模式副本数为1):
      <configuration>
          <property>
              <name>dfs.replication</name>
              <value>1</value>
          </property>
          <property>
              <name>dfs.namenode.name.dir</name>
              <value>/usr/local/hadoop-3.3.4/hdfs/namenode</value>
          </property>
          <property>
              <name>dfs.datanode.data.dir</name>
              <value>/usr/local/hadoop-3.3.4/hdfs/datanode</value>
          </property>
      </configuration>
      
  5. 格式化NameNode:首次启动前需格式化NameNode(会清除原有数据):
    hdfs namenode -format
    
  6. 启动HDFS服务:执行以下命令启动HDFS:
    start-dfs.sh
    
    启动后可通过jps命令查看NameNode、DataNode进程是否运行,或通过浏览器访问http://localhost:9870(Hadoop 3.x版本)查看Web界面。

二、常用HDFS命令接口

HDFS提供hdfs dfs命令(推荐,仅适用于HDFS)和hadoop fs命令(适用于本地及HDFS等文件系统)进行操作,常用命令如下:

  1. 目录操作
    • 创建目录(-p参数递归创建父目录):
      hdfs dfs -mkdir -p /user/hadoop/input
      
    • 列出目录内容:
      hdfs dfs -ls /user/hadoop  # 列出指定目录
      hdfs dfs -ls /             # 列出根目录
      
    • 删除目录/文件(-r递归删除目录,-f强制删除):
      hdfs dfs -rm -r /user/hadoop/input  # 删除目录
      hdfs dfs -rm /user/hadoop/test.txt  # 删除文件
      
  2. 文件操作
    • 上传本地文件到HDFS:
      hdfs dfs -put /home/hadoop/localfile.txt /user/hadoop/input/
      
    • 下载HDFS文件到本地:
      hdfs dfs -get /user/hadoop/input/localfile.txt /home/hadoop/
      
    • 查看文件内容:
      hdfs dfs -cat /user/hadoop/input/localfile.txt
      
    • 移动/重命名文件:
      hdfs dfs -mv /user/hadoop/input/file1.txt /user/hadoop/input/file2.txt
      
  3. 其他实用命令
    • 创建空文件:
      hdfs dfs -touchz /user/hadoop/empty.txt
      
    • 查看文件大小:
      hdfs dfs -du -h /user/hadoop/input/  # -h显示人类可读格式
      
    • 统计目录下文件数量、总大小:
      hdfs dfs -count /user/hadoop/input/
      

以上命令覆盖了HDFS日常操作的核心需求,可根据实际情况组合使用。

三、Java API访问HDFS(可选)

若需通过程序操作HDFS,可使用Java API。以下是简单示例:

  1. 添加依赖:在项目中引入Hadoop相关JAR包(如hadoop-commonhadoop-hdfs),或通过Maven配置:
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>3.3.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdfs</artifactId>
        <version>3.3.4</version>
    </dependency>
    
  2. 示例代码(检查文件是否存在)
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    
    public class HDFSExample {
        public static void main(String[] args) throws Exception {
            // 1. 配置HDFS连接信息
            Configuration conf = new Configuration();
            conf.set("fs.defaultFS", "hdfs://localhost:9000");
            
            // 2. 获取FileSystem对象
            FileSystem fs = FileSystem.get(conf);
            
            // 3. 执行操作(检查文件是否存在)
            Path filePath = new Path("/user/hadoop/input/test.txt");
            boolean exists = fs.exists(filePath);
            System.out.println("文件是否存在:" + exists);
            
            // 4. 关闭资源
            fs.close();
        }
    }
    
    编译运行后,若HDFS中存在/user/hadoop/input/test.txt,则输出true

四、注意事项

0
看了该问题的人还看了