快看 | Java连接集成Kerberos的HA HDFS方案

2024-09-06 20:38

本文主要是介绍快看 | Java连接集成Kerberos的HA HDFS方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方蓝色字体,选择“设为星标

回复”资源“获取更多资源

来源:http://suo.im/5SGnSD

大数据技术与架构

点击右侧关注,大数据开发领域最强公众号!

暴走大数据

点击右侧关注,暴走大数据!

在实施方案前,假设读者已经基本熟悉以下技术  (不细说)
  • Java,maven

  • hdfs,kerberos

方案实施
  • 最后目录大概如下

  • 新建maven工程,pom.xml配置, 添加以下

  <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.6.5</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.6.5</version></dependency>
  • 拷贝kdc下的krb5.conf文件

[libdefaults]
default_realm = W.COMdns_lookup_realm = falsedns_lookup_kdc = falseticket_lifetime = 24hrenew_lifetime = 7dforwardable = true[realms]W.COM = {kdc = node1:88admin_server = node1:749default_domain = W.COMkdc = bi-slave1}#这里的kdc做了HA,需要把从kdc也加进realm里面
#默认的端口号也可以去掉
  • 生成keytab文件

kadmin.local:  xst -norandkey -k deng_yb.keytab deng_yb@W.COM
  • 下载core-site.xml文件

拿到core-site.xml文件

HDFSUtils

package deng.yb.hdfsUtils;import java.io.IOException;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.security.UserGroupInformation;public class HDFSUtils {/*** 加载hdfs客户端配置* @return*/public static Configuration initConfiguration() {Configuration configuration = new Configuration();configuration.addResource(new Path(getPath("core-site.xml")));return configuration;}/*** 初始化Kerberos环境*/public static void initKerberosENV(Configuration conf) {System.setProperty("java.security.krb5.conf",getPath("krb5.conf"));System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");// System.setProperty("sun.security.krb5.debug", "true");try {UserGroupInformation.setConfiguration(conf);UserGroupInformation.loginUserFromKeytab("deng_yb@W.COM",getPath("deng_yb.keytab"));System.out.println(UserGroupInformation.getCurrentUser());} catch (IOException e) {e.printStackTrace();}}public static String getPath(String file) {if (null == file) {return null;}return Thread.currentThread().getContextClassLoader().getResource(file).getPath();}
}

测试

package deng.yb.hdfsUtils;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;/*** 链接HA,kerberos 集群**/
public class App 
{public static void main( String[] args ){//初始化HDFS Configuration 配置Configuration configuration = HDFSUtils.initConfiguration();//初始化Kerberos环境HDFSUtils.initKerberosENV(configuration);try {//其中nameservice1是HA别名Path dstPath = new Path("hdfs://nameservice1/");FileSystem fileSystem = FileSystem.get(configuration);FileStatus[] listStatus = fileSystem.listStatus(dstPath);for (FileStatus fileStatus : listStatus) {Path path = fileStatus.getPath();System.out.println(path);}} catch (Exception e){e.printStackTrace();}}
}

执行main方法,结果如下

欢迎点赞+收藏+转发朋友圈素质三连

文章不错?点个【在看】吧! ????

这篇关于快看 | Java连接集成Kerberos的HA HDFS方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143064

相关文章

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B