복붙노트

[HADOOP] 하둡 kerberos 티켓 자동 갱신

HADOOP

하둡 kerberos 티켓 자동 갱신

다음 명령을 사용하여 HDFS에서 큰 폴더를 다운로드 할 때 문제가 있습니다.

hadoop fs -get /path/to/hdfs/big/folder .

폴더가 크고 (거의 3TB) kerberos 티켓의 유효 기간은 10 시간이며 수명은 7 일입니다.

다운로드가 10 시간 이상 걸리므로 작업을 완료 할 수 없습니다 (kerberos 보안 예외). get 조작을 위해 티켓의 자동 갱신을 설정할 수있는 방법이 있습니까?

해결법

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

    1."재생 가능 기간 (7 일)"은 7 일 동안 비밀번호를 제공하지 않고 티켓을 명시 적으로 갱신 할 수 있음을 의미합니다. 각 갱신은 당신에게 10h 더 가기를 제공합니다.

    "재생 가능 기간 (7 일)"은 7 일 동안 비밀번호를 제공하지 않고 티켓을 명시 적으로 갱신 할 수 있음을 의미합니다. 각 갱신은 당신에게 10h 더 가기를 제공합니다.

    Linux에 번들로 제공되는 단일 자동 갱신 (및 자동 휴양) 메커니즘을 알고 있으며 SSSD의 일부입니다. 따라서 Linux 인증을 OpenLDAP 또는 Microsoft AD 서비스에 위임하려면 몇 주간의 디버깅 후 (... 성공하려면 운이 좋다면 ...) Kerberos 티켓을 관리해야합니다 (선택 사항). OS에 의해 당신을 위해.

    또한 Hadoop Kerberos 라이브러리에 의해 시작된 자동 갱신 스레드가 있지만 연결 전에 캐시에서 발견 된 티켓에만 적용됩니다. 라이브러리 (및 키탭)를 사용하여 티켓을 직접 작성하면 Java의 Kerberos 구현이 잘 처리하지 못하는 많은 것들 중 하나 인 재생 가능하지 않으며 주기적으로 다시 만들어야합니다.

    요점 : 전송이 완료된 후 "잠금"을 해제 할 때까지 백그라운드에서 티켓을 갱신하려면 이런 종류의 트릭을 시도 할 수 있습니다.

    touch lock.txt
    kinit *************
    {
      while [[ -f lock.txt ]]
      do
        kinit -R
        sleep 5m
      done
    } &
    
    hdfs dfs ***************
    rm -f lock.txt
    # backround process will terminate within 5m
    
  2. ==============================

    2.나는 다음과 같이 내 문제를 해결했다.

    나는 다음과 같이 내 문제를 해결했다.

    1 부

    #set the kerberos ticket cache location
    export KRB5CCNAME=/tmp/my_krbtkt
    
    #create a renewable ticket (10 hours lifetime + renewable for 7 days)
    kinit -r7d -l10h
    
    #execute the long time command 
    hadoop fs -get /path/to/hdfs/big/folder .
    

    2 부

    crontab 내부에서 kerberos 티켓 갱신 (즉 6 시간마다)을 예약합니다.

    0 */6 * * * kinit -R -c /tmp/my_krbtkt
    
  3. from https://stackoverflow.com/questions/43189044/hadoop-kerberos-ticket-auto-renew by cc-by-sa and MIT license