本地配置hadoop客户端操作HDFS

  • Post author:
  • Post category:其他




HDFS文件管理方式

对大数据HDFS文件的管理一般有如下几种方式:

  • 通过服务器端linux命令行
  • 通过HDFS Web端
  • 通过本地客户端

使用linux命令行抑或Web端来管理HDFS文件系统,固而简单方便,但通过在客户端使用脚本语言能够实现对Hadoop更加灵活多样的操作,比如实时参数配置(脚本语言里的参数配置优先级最高),循环处理文件等。



前置准备

  1. 在准备Hadoop客户端API之前,需要有已搭建好的

    完全分布式集群

    ,集群的搭建可以参考


    Hadoop完全分布式服务器集群搭建

  2. zookeeper、hadoop集群已经启动并正常运行

  3. 电脑(以mac为例)已安装配置jdk环境,要求1.8版本或以上

  4. 已安装

    IntelliJ IDEA

    软件


    IDEA官方下载

    下载专业版,可以临时使用下面提供的激活码进行学习,IDEA使用体验超好,推荐大家购买支持正版软件


    IDEA临时激活码

  5. 安装配置好的maven环境,参考


    maven的安装配置以及在IDEA中的使用

  6. 主机名配置

    #在终端里修改hosts
    vi /etc/hosts
    #添加主机名,比如我的集群有三个节点:node1、node2、node3
    172.19.0.3 node1
    172.19.0.4 node2
    172.19.0.5 node3
    



HDFS的API操作

Mac的Hadoop客户端无需下载Hadoop及配置环境变量,在IDEA中maven会下载连接需要的依赖包。

  1. 打开IDEA,点击

    文件-新建-项目

    ,选择

    Maven

在这里插入图片描述

  1. 填写

    GroupId



    ArtifactId

    ,完成Maven项目的创建

    在这里插入图片描述

  2. 项目创建后,一般会自动打开

    pom.xml

    文件

    在这里插入图片描述

  3. 注意按上面maven配置文章里在idea的

    偏好设置

    里完成对maven环境的配置

    在这里插入图片描述

  4. 依赖包的配置:在

    pom.xml

    文件中的

    properties

    标签下面添加以下依赖包代码。代码添加后会自动联网下载所需的依赖包,可以在上面maven

    本地仓库

    配置的路径下查看,成功下载所有依赖包后,

    pom.xml

    文件代码中将没有红色字体

    <!-- 注意代码里面的Hadoop版本3.3.0要和服务器上部署的版本一致,按实际情况修改 -->
    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.30</version>
        </dependency>
    </dependencies>
    
  5. 在IDEA的

    src-main-resources

    路径下创建一个文件

    log4j.properties

    ,填入以下代码

    log4j.rootLogger=INFO, stdout  
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n  
    log4j.appender.logfile=org.apache.log4j.FileAppender  
    log4j.appender.logfile.File=target/spring.log  
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout  
    log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
    
  6. 在IDEA的

    src-main-java

    路径下创建包

    com.axl.hdfs

    ,然后在这个包里创建类

    HdfsClient

    ,在类文件里面填入以下代码

    package com.axl.hdfs;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.junit.Test;
    import java.io.IOException;
    import java.net.URI;
    import java.net.URISyntaxException;
    
    public class HdfsClient {
        @Test
        public void testMkdirs() throws IOException, URISyntaxException, InterruptedException {
            //连接集群的namenode地址,node1要修改成自己集群的节点名称
            URI uri = new URI("hdfs://node1:8020");
            //创建配置文件
            Configuration configuration = new Configuration();
            //指定用户
            String user = "root";
            //获取客户端对象
            FileSystem fs = FileSystem.get(uri,configuration,user);
            //创建测试文件夹
            fs.mkdirs(new Path("/test"));
            //关闭
            fs.close();
        } 
    } 
    
  7. 执行以上代码,在

    http://node1:9870

    Web文件系统里查看,可以看到文件夹通过客户端成功创建

在这里插入图片描述

  1. 除了创建文件夹以外,还可以在客户端对文件进行上传下载、增删改查等操作,大家可以自己尝试



版权声明:本文为weixin_41878387原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。