복붙노트

[HADOOP] 어떻게 FLINK 독립 실행 형 설치에 Kerberos 인증을 할까?

HADOOP

어떻게 FLINK 독립 실행 형 설치에 Kerberos 인증을 할까?

나는 내가 HDFS 설치에 데이터를 쓰고 스트리밍 작업을 실행할의 상단에 독립 FLINK 설치가 있습니다. HDFS 설치는 클라우 데라 배치의 일부이며 HDFS를 판독 및 기록하기 위해 Kerberos 인증을 요구한다. 나는 FLINK가 Kerberos를 보호 HDFS와 연결하는 방법에 어떤 문서를 찾을 수 없기 때문에 나는 과정에 대한 몇 가지 교육을 추측했습니다. 여기에 내가 지금까지했던 것입니다 :

나는이 작업을 실행할 때, 나는 다음과 같은 오류를 받고 있어요 :

org.apache.hadoop.security.AccessControlException: SIMPLE authentication is not enabled.  Available:[TOKEN, KERBE
ROS]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106)
        at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:73)
        at org.apache.hadoop.hdfs.DFSOutputStream.newStreamForCreate(DFSOutputStream.java:1730)
        at org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:1668)
        at org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:1593)
        at org.apache.hadoop.hdfs.DistributedFileSystem$6.doCall(DistributedFileSystem.java:397)
        at org.apache.hadoop.hdfs.DistributedFileSystem$6.doCall(DistributedFileSystem.java:393)
        at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
        at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:393)
        at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:337)
        at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:908)
        at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:889)
        at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:786)
        at org.apache.flink.runtime.fs.hdfs.HadoopFileSystem.create(HadoopFileSystem.java:405)

어떤 이상한 이유로, FLINK 내가 loginUserFromKeytab라고하더라도, SIMPLE 인증을 시도 할 것으로 보인다. 그것을 설명하는 대답을했다 (YARN 클러스터 (클라우 데라)에 FLINK 예제 코드를 실행하는 경우 Kerberos 인증에 오류) I에 유래에 다른 유사한 문제를 발견 :

그게 내가 OS 수준의 예에서 몇 가지 인증을해야한다는 것을 의미 할 수있다 kinit를 가진. 커버 로스의 내 지식이 매우 제한되어 있기 때문에 나는 그것을 할 것입니다 방법을 모르겠어요. 또한 나는 kinit를 한 후 실행 프로그램이 실제로이에 대한 어떠한 구성이없는 경우 Kerberos 티켓이 로컬 캐시에서 선택되는 아는 방법을 이해하고 싶습니다.

해결법

  1. ==============================

    1.나는 FLINK 사용자가 아닌,하지만 난이 스파크 및 친구와 함께 본 적이 무엇을 기반으로, 내 생각 "모든 작업자 노드에서 인증이"각 작업자 프로세스가 있음을 의미한다는 것입니다

    나는 FLINK 사용자가 아닌,하지만 난이 스파크 및 친구와 함께 본 적이 무엇을 기반으로, 내 생각 "모든 작업자 노드에서 인증이"각 작업자 프로세스가 있음을 의미한다는 것입니다

    FLINK이 구성에서 HDFS 클라이언트를 시작하려고 시도하기 전에이 참으로 불렸다 그래서 만약 그 상부 위장관 "로그인"방법은 매우 장황, 당신은 알 수 있습니다. 당신은 자세한 물건을 볼 수없는 경우 반면에, 당신의 시도가 개인의 Kerberos TGT가 FLINK에 의해 바이 패스 작성하려면, 당신은 FLINK을 우회 할 수있는 방법을 찾을 수있다 : - /

  2. ==============================

    2.독립 FLINK 설치에서 보안 HDFS 또는 HBase를 설치에 액세스하려면 다음을 수행해야합니다 :

    독립 FLINK 설치에서 보안 HDFS 또는 HBase를 설치에 액세스하려면 다음을 수행해야합니다 :

    나의 이해에서, kinit를 현재 사용자로 로그인하는 일부 로그인 데이터를 / tmp를 어딘가에 파일을 생성. 그 처음로드 할 때 주로 정적 클래스 UserGroupInformation은 로그인 데이터를 해당 파일을 찾고 있습니다. 현재 사용자의 Kerberos로 인증되는 경우, 정보는 HDFS에 대한 인증을 위해 사용된다.

  3. ==============================

    3.당신은 또한 당신의 작업에 추가 코드없이 당신을 위해 인증을 처리하는 독립 실행 형 클러스터를 구성 할 수 있습니다.

    당신은 또한 당신의 작업에 추가 코드없이 당신을 위해 인증을 처리하는 독립 실행 형 클러스터를 구성 할 수 있습니다.

    security.kerberos.login.use-ticket-cache: false
    security.kerberos.login.keytab: <path to keytab>
    security.kerberos.login.principal: <principal>
    env.java.opts: -Djava.security.krb5.conf=<path to krb5 conf>
    

    당신이 당신의 작업에 필요합니다 유일한 종속 관계 :

    compile "org.apache.flink:flink-java:$flinkVersion"
    compile "org.apache.flink:flink-clients_2.11:$flinkVersion"
    compile 'org.apache.hadoop:hadoop-hdfs:$hadoopVersion'
    compile 'org.apache.hadoop:hadoop-client:$hadoopVersion'
    
  4. from https://stackoverflow.com/questions/34596165/how-to-do-kerberos-authentication-on-a-flink-standalone-installation by cc-by-sa and MIT license