大数据学习之javaAPI远程操作hadoop

前言:

本篇文章针对于2020秋季学期的复习操作,一是对该学期的巩固,二是让老师知道他的努力没有白费,同时,在此感谢徐老师对我们的精心教导…

本文所需材料

IntelliJ IDEA
官网→https://www.jetbrains.com/idea/
我的网盘→https://pan.baidu.com/s/1LPU4H0OcmH8NELdCwWOtIA
→t123

实操

前提:
打开hadoop集群
打开IDEA
①创建maven工程之javaAPI操作hadoop
大数据学习之javaAPI远程操作hadoop
大数据学习之javaAPI远程操作hadoop
大数据学习之javaAPI远程操作hadoop
大数据学习之javaAPI远程操作hadoop
上面的setting.xml里面可以定制成阿里云的,国内的服务器嘛,下载更快!
接着会下载maven项目的‘架子’
好了之后是这样的
大数据学习之javaAPI远程操作hadoop
接下来导入我们需要的jar包
在pom文件添加

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <!--    xml配置文件中, hdfs.version称之为“标签”, 2.7.6 称之为“标签体” →-->
    <hdfs.version>2.7.6</hdfs.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!-- 导入hdfs api所需要的jar包对应的依赖-->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <version>${hdfs.version}</version>
    </dependency>

    <!--hadoop-client hadoop的客户端,借助该模块下的api,操作远程的hadoop分布式文件系统  -->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <!--  $:el表达式,expression language的缩写  读取properties节点下指定的子节点的标签体的值-->
      <version>${hdfs.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-hdfs</artifactId>
      <version>${hdfs.version}</version>
    </dependency>

  </dependencies>

添加好了我们刷新它会自动从远程仓库下载依赖包jar到本地
或者点击download sources and documentation也可以
大数据学习之javaAPI远程操作hadoop
出现以下依赖包且没有报红说明成功了!!!
大数据学习之javaAPI远程操作hadoop
配置log4j
resources
log4j.properties
大数据学习之javaAPI远程操作hadoop

log4j.rootLogger=WARN,stdout,file,R

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n


log4j.appender.file = org.apache.log4j.FileAppender
log4j.appender.file.File = ./logs/log-infos.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=./logs/log-infos.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

创建测试Java文件
大数据学习之javaAPI远程操作hadoop

/**
 * Copyright (C), 2021-01-23
 *
 * @author 田信坤
 * Author:   TianXinKun
 * Date:     2021/1/23 19:35
 * Description: 测试JavaAPI操作远程hadoop集群
 */
package org.example;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * <功能简要> <br>
 * <测试JavaAPI操作远程hadoop集群>
 *
 * @Author TianXinKun
 * @createTime 2021/1/23 19:35
 * This program is protected by copyright laws. <br/>
 * @version : 1.0
 */
public class TestHadoop {
    /**
     * FileSystem就是对HDFS的抽取和封装
     */
    private FileSystem fileSystem;

    /**
     * 对hdfs核心配置文件的抽取和封装,如:cores-site.xml,hdfs-site.xml
     */
    Configuration conf;

    /**
     * 进行初始化
     */
    @Before
    public void init() {
        //对全局变量进行初始化
        conf = new Configuration();
        try {
            //URI: uniform resource indentifer, 统一资源标识符,如:hdfs,http,ftp等等协议所标注的远程资源
            //URL: uniform resource locator, 统一资源定位符,一般指的是http所标识的网络资源,如:https://fanyi.baidu.com/#en/zh/artifact
            //URL是URI的子集
            URI uri = new URI("hdfs://Mymaster:8020/");

            fileSystem = FileSystem.get(uri,conf);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }

    }

    /**
     * 测试环境→ 用来验证java客户端能够正常连接远程的hadoop分布式集群
     *
     * [root@master ~]# hdfs dfs -cat /input/a.txt
     * hello you
     *
     * hello kitty
     *
     * are you ok
     * 最近可好
     * 感觉如何?
     * [root@master ~]#
     */
    @Test
    public void testEnv() {
        System.out.println("fileSystem = " + fileSystem);

        try (FSDataInputStream in = fileSystem.open(new Path("hdfs://Mymaster:8020/input/Test.txt"))) {
            byte[] bytes = new byte[1024];
            int len = -1;
            while ((len = in.read(bytes)) != -1) {
                String content = new String(bytes, 0, len);
                System.out.print(content);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    /**
     * 进行资源释放
     */
    @After
    public void releaseResource() {
        if (fileSystem != null) {
            try {
                fileSystem.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

进程确认
大数据学习之javaAPI远程操作hadoop
资源确定
大数据学习之javaAPI远程操作hadoop
在测试类中执行
大数据学习之javaAPI远程操作hadoop
结果正确,maven项目创建成功!!
那么本文复习到此结束!!!
编写于2021-1-23

上一篇:vue 初始化table数据,数据闪现的问题


下一篇:RocketMQ(三)——————javaAPI(8.重试机制)