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. PyQt(Python+Qt)学习随笔:QTreeWidgetItem项中列数据的访问方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件QTreeWidget中的QTreeWidgetItem项中可以有多列数据,每列数据可以根据 ...

  2. PyQt(Python+Qt)学习随笔:QListView的uniformItemSizes属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListView的uniformItemSizes属性用于控制视图中所有项是否具有相同大小,只有在 ...

  3. PyQt(Python+Qt)学习随笔:Qt Designer中部件的 baseSize和sizeIncrement

    1.baseSize 部件的 baseSize是部件的基础大小(单位:像素),如果部件设定了sizeIncrement,该属性用于在调整部件尺寸时计算部件应该调整到的合适值,但这个属性缺省值是QSiz ...

  4. 基础篇——怎么使用PowerDesigner进行数据库初始化

    1.使用PowerDesigner打开设计好的 .pdm文件 2.点击工具栏中的Database-->Database Generation-->Preview,就可以看到生成的创建数据库 ...

  5. GBK宽字节注入SQL

    SQL注入:宽字节注入(GBK双字节绕过) 2015-06-09lyiang 宽字节注入的作用是非常大的,实际上在代码层的防御一般不外乎两种,一是反斜杠转义,而就是replace替换成空字节,之前的替 ...

  6. 在Centos7下docker配置自动化环境镜像(python3.7+selenium 3.11+firefox 62+geckodriver 0.21)

    最近在学习Docker,准备做自动化测试代码集成的功能.如下文章的前提是已经安装好linux系统,且成功安装好Docker. 接下来我会按步骤一步一步的对自动化需要的一些环境进行安装,如果没有特别说明 ...

  7. 团队作业4-Day3

    团队作业4-Day3 项目git地址 1. 站立式会议 2. 项目燃尽图 3. 适当的项目截图 今日暂无较大代码更新 4. 代码/文档签入记录(部分) 5. 每人每日总结 吴梓华:今天未进行开发,学习 ...

  8. 学习笔记:插头DP

    基于连通性的状压DP问题. 一般是给你一个网格,有一些连通性的限制. 例题 插头DP模板 链接 题意:网格图,去掉一些点,求哈密顿回路方案数. 一般按格递推(从上到下,从左到右). 每个格子要从四个方 ...

  9. idea 最好用的插件

    1.lombok 不用写get,set方法 2.MyBatisCodeHelperPro 3.Rainbow Brackets 彩虹括号 5.activate-power-mode 动感打字 7.Ba ...

  10. 面试 09-02.js运行机制:异步和单线程

    09-02.js运行机制:异步和单线程 #前言 面试时,关于同步和异步,可能会问以下问题: 同步和异步的区别是什么?分别举一个同步和异步的例子 一个关于 setTimeout 的笔试题 前端使用异步的 ...