java 连接 kerberos 认证的 HBase 和 HDFS

这是两个功能,都很简单就写一块了。。

简单到什么程度呢,简单到只贴代码就可以了。。。

HBase

package com.miras.data;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.security.UserGroupInformation;

import java.io.IOException;

/**
 * @author sunzq
 * @since 2017/8/30
 */
public class HbaseMain {
    public static void main(String[] args) throws IOException {
        System.setProperty("java.security.krb5.conf", "/app/conf/krb5.conf");
        Configuration conf = HBaseConfiguration.create();
        conf.set("hadoop.security.authentication", "Kerberos");
        UserGroupInformation.setConfiguration(conf);
        UserGroupInformation.loginUserFromKeytab("storm-miras", "/app/conf/storm.headless.keytab");
        Connection connection = ConnectionFactory.createConnection(conf);
        Table table = connection.getTable(TableName.valueOf("hbase_krb"));
        Put put = new Put(Bytes.toBytes(2));
        put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("name"), Bytes.toBytes("world"));
        table.put(put);
        table.close();
        connection.close();
    }
}

HDFS

package com.miras.data;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.security.UserGroupInformation;

import java.io.IOException;

/**
 * @author sunzq
 * @since 2017/8/30
 */
public class HdfsMain {
    public static void main(String[] args) throws IOException {
        System.setProperty("java.security.krb5.conf", "/app/conf/krb5.conf");
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://node1:8020");
        conf.set("hadoop.security.authentication", "kerberos");
        UserGroupInformation.setConfiguration(conf);
        UserGroupInformation.loginUserFromKeytab("storm-miras", "/app/conf/storm.headless.keytab");
        FileSystem fs = FileSystem.get(conf);
        FileStatus[] fsStatus = fs.listStatus(new Path("/"));
        for (int i = 0; i < fsStatus.length; i++) {
            System.out.println(fsStatus[i].getPath().toString());
        }
    }
}

水了一篇

时间: 2024-10-13 00:29:46

java 连接 kerberos 认证的 HBase 和 HDFS的相关文章

java 访问 kerberos 认证的 kafka

1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4

Phoenix连接安全模式下的HBase集群

Phoenix连接安全模式下的HBase集群 HBase集群开启安全模式(即启用kerberos认证)之后,用户无论是用HBase shell还是Phoenix去连接HBase都先需要通过kerberos认证.如果没有通过kerberos认证,则hbase shell或phoenix都会报找不到kerberos tgt的错误而无法访问HBase(以下以phoenix为例): 对于HBase shell来说,用户可以在命令行先用kinit命令(kinit -kt <user keytab> &l

Java连接Hbase异常

Exception in thread "main" org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=36, exceptions:Wed Mar 27 22:11:07 CST 2019, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=76606: Connection refu

spark 2.x在windows环境使用idea本地调试启动了kerberos认证的hive

1 概述 开发调试spark程序时,因为要访问开启kerberos认证的hive/hbase/hdfs等组件,每次调试都需要打jar包,上传到服务器执行特别影响工作效率,所以调研了下如何在windows环境用idea直接跑spark任务的方法,本文旨在记录配置本地调试环境中遇到的问题及解决方案. 2 环境 Jdk 1.8.0 Spark 2.1.0 Scala 2.11.8 Hadoop 2.6.0-cdh5.12.1 Hive 1.1.0-cdh5.12.1 环境搭建略,直接看本地调试spar

kafka kerberos 认证访问与非认证访问共存下的ACL问题

在一个正在运行的kafka集群中添加kerberos认证和ACL权限控制,同时保证以前所有的producer\consumer服务不中断 解决方式: 使kafka集群监听两个端口,一个为无认证连接,另一个为kerberos的认证连接 这时候在配置ACL的时候出了问题: 假如我以kerberos认证的方式连接kafka集群,那么我的用户名是principal的primary部分.例如principal是  kafka/[email protected] ,那么我的用户名就是kafka. 这时候我只

java连接redis,实现订阅发布遇到的问题

我在使用的时候redis是安装在本机虚拟机上,使用java连接时遇到一些错误,归纳需要改动的地方如下: 1.redis的配置文件默认是绑定了127.0.0.1的ip,需要到redis.conf中找到这一行,注释掉 2.redis默认不允许非本机客户端连接,本身又是没有密码的,需要设置一个登录密码,用密码连接 设置密码命令:config set requirepass xxx,密码设置之后需要认证一下才能正常使用get获取数据:auth xxx,后面是刚才设置的密码 3.java程序连接redis

JAVA连接ACCESS、MYSQL、SQLSEVER、ORACLE数据库

. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity)是Java语言为了支持SQL功能而提供的与数据库连接的用户的接口,JDBC中包括了一组由(Java)语言书写的接口和类,它们都是独立于特定的DBMS,或者说他们可以和各种数据库相关联. 1.2 JDBC用途 JDBC由一组Java语言编写的类和接口组成,使用内嵌式的SQL,主要实现三方面功能:建立于数据库的链接,执行SQL声明以及处理SQL执行结果:JDBC支持基本的SQL功能,使用它可以方便地与不同

实战:在Java Web 项目中使用HBase

在此之前我们使用Mysql作为数据源,但发现这数据增长速度太快,并且由于种种原因,因此必须使用HBase,所以我们要把Mysql表里面的数据迁移到HBase中,在这里我就不讲解.不争论为什么要使用HBase,HBase是什么了,喜欢的就认真看下去,总有些地方是有用的 我们要做的3大步骤: 新建HBase表格. 把MYSQL数据迁移到HBase中. 在Java Web项目中读取HBase的数据. 先介绍一下必要的一些环境: HBase的版本:0.98.8-hadoop2 所需的依赖包: commo

hadoop KerberosUtil 做Kerberos认证

网上找了一下,自己写了个KerberosUtil工具类,测试过可以用. 注意这个不是 org.apache.hadoop.security.authentication.util.KerberosUtil类. public class KerberosUtil { /** * 通过Kerberos认证用户的,注意keytabPath为本地路径不是HDFS路径 * @param conf * @param user user为运行jar的hadoop用户 * @param keytabPath *