简单的使用java操作hdfs

一:创建maven项目

导入maven

org.apache.hadoop
            hadoop-hdfs
            2.7.6

            org.apache.hadoop
            hadoop-common
            2.7.6

            org.apache.hadoop
            hadoop-client
            2.7.6

            junit
            junit
            4.13.2

junit是测试块的包
其他三个是hdfs连接需要的包

二:winuti处理(如果有就不需要处理)

1.解压hadoop-2.6.1到D盘

2.配置环境变量

配置变量的(https://jingyan.baidu.com/article/47a29f24610740c0142399ea.html)

二:相关操作

1:目录操作

相关操作:1:mkdirs 创建目录。

2:delete 删除文件或目录。

3:listStatus 列出目录的内容。

4:getFileStatus 显示文件系统的目录和文件的元数据信息。

5:getFileBlockLocations 显示文件存储位置

(1:创建一个目录

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import org.junit.Before;
import org.junit.Test;

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

public class Test1 {
    FileSystem fs;

    @Before
    public void conn() throws URISyntaxException, IOException {
        //hadoop配置文件,自动获取hadoop的hdfs配置文件
        Configuration conf = new Configuration();
        conf.set("dfs.replication", "1");//设置副本数为一
        //创建url 9000是端口号配置文件中有,master是主机名,如果没有配置映射可以是ip地址
        URI uri = new URI("hdfs://master:9000");
        //等同于客户端
        fs = FileSystem.get(uri, conf);
    }
    @Test
    public  void mkdir() throws IOException {
        //创建一个Path对象传入想要创建hdfs的路径
        Path path = new Path("/data1");
        //判断是否存在要是存在就删除,以免报错
        if(fs.exists(path)){
         fs.delete(path);
        }
        //创建目录
        fs.mkdirs(path);
    }

}

可以通过web界面查看有没有创建成功(master:50070)

(2:获取获取文件列表

@Test
    public void filestatus() throws IOException {
        //获取根目录下的文件列表
        FileStatus[] fileStatuses = fs.listStatus(new Path("/"));
        //遍历 fileStatuses
        for (FileStatus fileStatus : fileStatuses) {
            System.out.println(fileStatus);
        }

简单的使用java操作hdfs

三:关于测试包

我用的junit测试,可以不用main方法需要运行哪个就运行哪个,每个@Test前面都有一个运行的一个@Test对应一个方法(函数),还有@Before,@After等。@Before是运行每个@Test之前都会运行,常用来做连接。@After相反是运行每个@Test之后都会运行常用在关闭连接的方法前面。

(原文链接:https://blog.csdn.net/weixin_50691399/article/details/121955946)

四:连接不上的问题

1.删除tmp

简单的使用java操作hdfs

2.修改配置

修改namenode的地址为具体IP (之前写的localhost)

简单的使用java操作hdfs

修改slaves文件,为具体IP

简单的使用java操作hdfs
  1. 格式化hdfs

hadoop namenode –format

4.启动HDFS

start-dfs.sh

Original: https://www.cnblogs.com/komorebiZjh/p/16187322.html
Author: 搁浅的小鲸鱼
Title: 简单的使用java操作hdfs

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599473/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 23种设计模式之访问者模式(Visitor Pattern)

    文章目录 概述 访问者模式的优缺点 访问者模式的使用场景 访问者模式的结构和实现 * 模式结构 模式实现 总结 概述 访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可…

    数据库 2023年6月6日
    082
  • MySQL实战45讲 18

    18 | 为什么这些SQL语句逻辑相同,性能却差异巨大? 在 MySQL 中,有很多看上去逻辑相同,但性能却差异巨大的 SQL 语句。对这些语句使用不当的话,就会不经意间导致整个数…

    数据库 2023年6月14日
    072
  • PHP array_values()

    array_values array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。 示例: function arrayValues() { $dat…

    数据库 2023年6月14日
    0115
  • MIT 6.824 Llab2B Raft之日志复制

    书接上文Raft Part A | MIT 6.824 Lab2A Leader Election。 实验准备 实验代码: git://g.csail.mit.edu/6.824-…

    数据库 2023年6月14日
    059
  • MySQL事务

    事务用于保证数据的一致性,由一组相关的dml语句组成,该组的dml语句要么全部成功后提交,要么全部失败。进行一个事物操作时,也可以防止其它用户修改表的数据。 举个例子:转账这个操作…

    数据库 2023年6月16日
    072
  • 模板语法之标签

    语法 {% 开始标签 %} …. {% 结束…

    数据库 2023年6月14日
    0122
  • 2022-8-27 vue 第一天

    什么是vue? Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建…

    数据库 2023年6月14日
    067
  • mysql基本数据类型

    概述 要想学好mysql,了解其支持的基本数据类型以及内部原理是极为重要的,只有这样,我们才能根据不同的业务要求来选择不同的数据类型,实现最佳的存储效果和查询性能,因而本文就着重总…

    数据库 2023年5月24日
    0128
  • VUE项目开发报错:Error in render: “TypeError: Cannot read property ‘country’ of undefined”

    VUE项目开发中遇到的问题记录一下 如题,vue页面开发中控制台报如上错误,但是页面展示是有数据的,展示正常,具体错误如下图 对页面展示没有影响,但是控制台一直报这个错,看着就不舒…

    数据库 2023年6月9日
    070
  • Background process terminated with code 1.

    使用vscode过程中,刷新maven依赖过程中,出现了如下错误信息: Background process terminated with code 1. 图1. maven插件…

    数据库 2023年6月14日
    068
  • 1_Html

    一. 引言 1.1 HTML概念 网页, 是网站中的一个页面, 是构成网站的基本元素, 是承载各种网站应用的平台. 通俗的说, 网站就是由网页组成的, 通常我们看到的网页都是以ht…

    数据库 2023年6月11日
    065
  • MySQL备份迁移之mydumper

    简介 mydumper 是一款开源的 MySQL 逻辑备份工具,主要由 C 语言编写。与 MySQL 自带的 mysqldump 类似,但是 mydumper 更快更高效。mydu…

    数据库 2023年5月24日
    0112
  • 14 在 Java 中,如何跳出当前的多重嵌套循环

    在最外层添加一个标记如A,然后用breakA,即可跳出多重循环 关键字break 使用范围:switch-case,循环结构中 break在循环结构中的作用:结束 当前循环 bre…

    数据库 2023年6月6日
    085
  • leetcode 148. Sort List 排序链表(中等)

    给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head = [4,2,1,3]输出:[1,2,3,4] 示例 2: 输入:head …

    数据库 2023年6月16日
    077
  • Nginx进阶篇—web模块及proxy代理

    server { #在server{下面输入 sub_filter n…

    数据库 2023年6月14日
    099
  • 设计 | ClickHouse 分布式表实现数据同步

    作者:吴帆 青云数据库团队成员主要负责维护 MySQL 及 ClickHouse 产品开发,擅长故障分析,性能优化。 在多副本分布式 ClickHouse 集群中,通常需要使用 D…

    数据库 2023年5月24日
    094
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球