jdbc 연결 테이프 kerbeos 인증 hiv 사용

12710 단어 빅 데이터
이 문 제 를 처리 하 는 과정 에서 몇 가지 문제 에 부 딪 혔 다.
HADOOP_HOME or hadoop.home.dir are not set
이 문 제 는 코드 가 실행 되 는 환경 에 환경 변수 가 설정 되 어 있 지 않다 는 것 입 니 다. HADOOPHOME 또는 hadop. home. dir 를 지정 합 니 다. windoss 에서 실 행 될 경우 Liux 서버 에 원 격 으로 연결 할 경우 windos 에 환경 변 수 를 설정 해 야 합 니 다 $HADOOPHOME, path 에 Hadoop 의 bin 디 렉 터 리 를 추가 합 니 다.구체 적 인 해결 방법: HADOOPHOME and hadop. home. dir are unset 오류 로 인 한 window 환경 연결 디 버 깅 원 격 hadop 의 일련의 문제
그러나 제 코드 는 앞으로 windows 에서 실 행 될 것 이 아니 라 Linux 에서 실 행 될 것 입 니 다. Liux 에 CDH 플랫폼 이 설치 되 어 있 습 니 다.포 장 된 jar 를 명령 으로 실행 할 지, HADOOP 가 나타 날 지HOME or hadop. home. dir are not set, see / etc / profile 에서 hadop홈 관련 환경 변수
export  HADOOP_HOME=/opt/cloudera/parcels/CDH/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR= ${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path= ${HADOOP_HOME}/lib/"

여기 HADOOPHOME, 자신의 운영 환경 에 따라 설정 하 세 요.
GSS initiate failed
일반적으로 이 오류 가 발생 하 는 것 은 jdbc url 에 문제 가 발생 하 는 것 입 니 다. kerbeos 가 없 는 jdbc 가 hive 를 연결 하 는 url 은?
jdbc:hive2://****:10000/database

* * * * 호스트 이름 또는 ip, database 는 라 이브 러 리 이름 입 니 다. 어떤 데이터 베 이 스 를 사용 할 지 선택 하지 않 으 면
jdbc:hive2://****:10000/

마지막 "/" 잃 어 버 리 면 안 돼!kerbeos 인증 이 있 는 url 은
 jdbc:hive2://*****:10000/database;principal=hive/****@DWSP.COM

여기 있 는 두 곳 의 * * * 는 내용 을 똑 같이 유지 해 야 합 니 다. 또한 hive 가 있 는 서버 의 ip 또는 호스트 이름 이기 도 합 니 다. 그리고 principal = 뒤에 있 는 것 은 반드시 3 부분 이 hive, * * * *, DWSP. COM, 2 부분, 3 부분 은 자신의 상황 에 따라 바 뀌 어야 합 니 다.코드 는 자바 api 에서 클 러 스 터 hive 데이터 (kerbeos 인증) 를 읽 고 고 고 친 것 입 니 다.
import jodd.util.PropertiesUtil;
import org.apache.hadoop.security.UserGroupInformation;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class hiveUtil {
    private static Properties props=null;
    static {
        props=new Properties();
        InputStream in = PropertiesUtil.class.getClassLoader().getResourceAsStream("cdhConfig.properties");
        try {
            props.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
//    private static String hiveJDBCurl = "jdbc:hive2://**:10000/;principal=hive/**@DWSP.COM";// hive   +  

    private static void authKrb5() throws IOException {
        //   jvm   krb5       
        System.setProperty("java.security.krb5.conf", (String) props.get("java.security.krb5.conf"));
        //   kerberos  
        org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();
//        conf.setBoolean("hadoop.security.authorization", true);
        conf.set("hadoop.security.authentication", (String) props.get("hadoop.security.authentication"));
        //      kerberos   ,     keytab     
        UserGroupInformation.setConfiguration(conf);
        try {
            UserGroupInformation.loginUserFromKeytab(
                    (String) props.get("kerberos.principal"),
                    (String) props.get("kerberos.keytab"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConn() throws ClassNotFoundException,
            SQLException, IOException {
        //  kerberos
        authKrb5();
        Class.forName("org.apache.hive.jdbc.HiveDriver");
        Connection conn = DriverManager.getConnection((String) props.get("hive.JDBC.url"));
        return conn;
    }
}

좋은 웹페이지 즐겨찾기