public class Test {
    private static Configuration conf;
    private static FileSystem fs;
    //开启kerberos认证
    static {
        System.setProperty("java.security.krb5.conf", "D:\\HDFS-test\\krb5.conf");
        conf=new Configuration();
        conf.addResource(new Path("D:\\HDFS-test\\hdfs-site.xml"));
        conf.set("hadoop.security.authentication", "kerberos"); //配置认证方式
        conf.set("fs.default.name", "hdfs://172.20.237.112:8020");//namenode的地址和端口
        UserGroupInformation.setConfiguration(conf);
        try {
            UserGroupInformation.loginUserFromKeytab("hdfs/gz237-112", "D:\\HDFS-test\\hdfs.keytab");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
/**
* 未开启安全
*/
// static {
//      conf = new Configuration();
//      ip为Namenode master所在节点
//      conf.set("fs.default.name", "hdfs://172.20.237.112:8020");
//       FileSystem类在hadoop-hdfs包中
//       conf.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName());
// }
 
public static void main(String[] args) throws Exception {
        // mkdirCatalog("/yfb");//在hdfs上创建目录
        putfile("D:\\test.txt", "/yfb");//上传文件
        // createFile("/data.txt");//在hdfs上创建文件
        // deleteFile("/data.txt");//删除HDFS上的文件
        // downloadFile("/dddd1111.txt","D:\\");//文件下载
}
//1、创建目录
public static void mkdirCatalog(String path) throws Exception{
    //创建连接,使用开源的进行,连接报错
 

Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)

// FileSystem fs = FileSystem.get(URI.create("hdfs://172.20.237.112:9000"),conf);

    //TDH的方式
    fs = FileSystem.get(conf);
    fs.mkdirs(new Path(path));
}
//上传文件到hdfs
public static void putfile(String localfile,String hdfsfile) throws IOException {
    fs = FileSystem.get(conf);
    fs.copyFromLocalFile(new Path(localfile),new Path(hdfsfile));
}
//HDFS上创建文件
public static void createFile(String path) throws Exception {
    fs = FileSystem.get(conf);
    fs.createNewFile(new Path(path));
}
//删除HDFS上的文件
public static void deleteFile(String path) throws Exception {
    fs = FileSystem.get(conf);
    if(fs.exists(new Path(path))){
        fs.delete(new Path(path),true);
    }else {
        System.out.println("您所删除的文件不存在!");
    }
}
//下载文件到本地
public static void downloadFile(String hdfsPath,String localPath) throws Exception {
    fs = FileSystem.get(conf);
    fs.copyToLocalFile(new Path(hdfsPath),new Path(localPath));
    }
}

java操作HDFS相关demo(TDH,kerberos认证)的更多相关文章

  1. hadoop集群配置和在windows系统上运用java操作hdfs

    安装 配置 概念 hadoop常用shell命令 使用java操作hadoop 本文介绍hadoop集群配置和在windows系统上运用java操作hdfs 安装 http://mirror.bit. ...

  2. hadoop学习(三)HDFS常用命令以及java操作HDFS

    一.HDFS的常用命令 1.查看根目录下的信息:./hadoop dfs -ls 2.查看根目录下的in目录中的内容:./hadoop dfs -ls in或者./hadoop dfs -ls ./i ...

  3. hdfs/hbase 程序利用Kerberos认证超过ticket_lifetime期限后异常

    问题描述 业务需要一个长期运行的程序,将上传的文件存放至HDFS,程序启动后,刚开始一切正常,执行一段时间(一般是一天,有的现场是三天),就会出现认证错误,用的JDK是1.8,hadoop-clien ...

  4. java操作hdfs实例

    环境:window7+eclipse+vmware虚拟机+搭建好的hadoop环境(master.slave01.slave02) 内容:主要是在windows环境下,利用eclipse如何来操作hd ...

  5. 使用java操作HDFS

    新建Java Project; 1,右击项目,属性,Java Build Path,Libraries,Add External JARs(haddopp根目录下的所以jar): 2,做一下项目关联, ...

  6. java操作hdfs到数据库或者缓存

    使用hadoop工具将数据分析出来以后,须要做入库处理或者存到缓存中.不然就没了意义 一下是使用javaAPI操作hdfs存入缓存的代码: <span style="font-fami ...

  7. spark集群配置以及java操作spark小demo

    spark 安装 配置 使用java来操作spark spark 安装 tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz rm spark-2.4.0-bin-hadoo ...

  8. hadoop3自学入门笔记(3)-java 操作hdfs

    1.core-site.xml <configuration> <property> <name>fs.defaultFS</name> <val ...

  9. HBase篇--HBase操作Api和Java操作Hbase相关Api

    一.前述. Hbase shell启动命令窗口,然后再Hbase shell中对应的api命令如下. 二.说明 Hbase shell中删除键是空格+Ctrl键. 三.代码 1.封装所有的API pa ...

随机推荐

  1. js2py 的用法

    python调用js的方法 js2py的简单用法 import js2py js = """ function add(a, b) { return a + b } &q ...

  2. JQuery获取父,子,兄弟节点

    jQuery.parent(expr) // 查找父节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent ...

  3. apidoc学习(接口文档定义取代word)

    apidoc的安装,参考:https://blog.csdn.net/qq_36386771/article/details/82149848 生产文档,需要先编写一个apidoc.json对接口文档 ...

  4. MySql字符集与排序规则详解

    前段时间往MySQL中存入emoji表情或生僻字.繁体字时,报错无法添加,研究后发现这是字符集编码的问题,今天就来分析一下各个字符集与排序规则 一.字符集 先说字符,字符是各种文字和符号的总称,包括各 ...

  5. oracle 修改默认临时表空间

    --查询当前数据库默认临时表空间名 select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE'; - ...

  6. git远程仓库Github

    一.克隆项目 git clone 网址 1.配置信息 git config user.name '用户名' git config user.email '邮箱号' 2.推送项目到远程仓库 # 工作区代 ...

  7. react第二十单元(react+react-router-dom+redux综合案例2)

    第二十单元(react+react-router-dom+redux综合案例2) #课程目标 #知识点 #授课思路 #案例和作业

  8. Java源码赏析(六)Class<T> 类

    目的 Class 类是每一个程序员都必须了解的,也是使用反射机制的基础. 这篇文章将Class 类的公共方法大致介绍了一遍(省略了安全.枚举.断言.注解相关代码). 代码 package java.l ...

  9. vue原理之-神奇的Object.defineProperty

    vue2.0通过defineProperty进行数据双向绑定 例如:(他接受三个参数,都是必填!) var a= {} Object.defineProperty(a,"b",{ ...

  10. 最火的分布式调度系统 XXL-JOB 安装和简单使用

    唉,在谈文章之前先说一下自己的情况.原计划是在上周六写完这篇文章的,然而周六的时候打开电脑的,按照平常"惯例",先补一些 "黑色五叶草"/"进巨&qu ...