복붙노트

[HADOOP] Spark에서 Hdfs에 액세스하면 토큰 캐시 오류가 발생 함 마스터 Kerberos 원칙을 갱신 자로 사용할 수 없음

HADOOP

Spark에서 Hdfs에 액세스하면 토큰 캐시 오류가 발생 함 마스터 Kerberos 원칙을 갱신 자로 사용할 수 없음

Spark를 hadoop에 연결하기 위해 Spark 스크립트를 테스트하려고합니다. 스크립트는 다음과 같습니다.

from pyspark import SparkContext

sc = SparkContext("local", "Simple App")
file = sc.textFile("hdfs://hadoop_node.place:9000/errs.txt")
errors = file.filter(lambda line: "ERROR" in line)
errors.count()

내가 pyspark로 실행할 때 나는 얻는다.

이것은 사실에도 불구하고 일어난다.

spark / conf 및 hadoop / conf 폴더의 core-site.xml은 다음과 같습니다 (hadoop 노드 중 하나에서 가져옴)

<configuration>
    <property>

        <name>hadoop.security.auth_to_local</name>
        <value>
            RULE:[1:$1](.*@place)s/@place//
            RULE:[2:$1/$2@$0](.*/node1.place@place)s/^([a-zA-Z]*).*/$1/
            RULE:[2:$1/$2@$0](.*/node2.place@place)s/^([a-zA-Z]*).*/$1/
            RULE:[2:$1/$2@$0](.*/node3.place@place)s/^([a-zA-Z]*).*/$1/
            RULE:[2:$1/$2@$0](.*/node4.place@place)s/^([a-zA-Z]*).*/$1/
            RULE:[2:$1/$2@$0](.*/node5.place@place)s/^([a-zA-Z]*).*/$1/
            RULE:[2:$1/$2@$0](.*/node6.place@place)s/^([a-zA-Z]*).*/$1/
            RULE:[2:$1/$2@$0](.*/node7.place@place)s/^([a-zA-Z]*).*/$1/
            RULE:[2:nobody]
            DEFAULT
        </value>
    </property>
    <property>
        <name>net.topology.node.switch.mapping.impl</name>
        <value>org.apache.hadoop.net.TableMapping</value>
    </property>
    <property>
        <name>net.topology.table.file.name</name>
        <value>/etc/hadoop/conf/topology.table.file</value>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://server.place:9000/</value>
    </property>
    <property>
      <name>hadoop.security.authentication</name>
      <value>kerberos</value>
    </property>

    <property>
      <name>hadoop.security.authorization</name>
      <value>true</value>
    </property>

    <property>
      <name>hadoop.proxyuser.hive.hosts</name>
      <value>*</value>
    </property>

    <property>
      <name>hadoop.proxyuser.hive.groups</name>
      <value>*</value>
    </property>

</configuration>

누군가 내가 누락 된 부분을 지적 할 수 있습니까?

해결법

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

    1.hadoop 작동 방식을 더 잘 이해하기 위해 자체적 인 hadoop 클러스터를 만든 후. 나는 그것을 고쳤다.

    hadoop 작동 방식을 더 잘 이해하기 위해 자체적 인 hadoop 클러스터를 만든 후. 나는 그것을 고쳤다.

    적어도 hadoop 클러스터에 대한 읽기 권한이있는 계정에 대해 생성 된 유효한 .keytab 파일을 Spark에 제공해야합니다.

    또한 hdfs 클러스터의 hdfs-site.xml을 사용하여 spark를 제공해야합니다.

    그래서 제 경우에는 키탭 (keytab) 파일을 만들어야했습니다.

    그것에 당신은 다음과 같은 항목을 얻을

    필자의 경우 호스트는 변수가 아닌 리터럴 단어 호스트였습니다. 또한 hdfs-site.xml에서 keytab 파일의 경로를 제공하고

    귀하의 계정이됩니다.

    Cloudera는 그것을하는 방법에 대한 꽤 상세한 글을 가지고 있습니다.

    편집하다 다른 구성으로 조금 연주 한 후 다음 사항을주의해야한다고 생각합니다. hadoop 클러스터의 정확한 hdfs-site.xml과 core-site.xml을 spark에 제공해야합니다. 그렇지 않으면 작동하지 않을 것이다.

  2. from https://stackoverflow.com/questions/23238443/accesing-hdfs-from-spark-gives-tokencache-error-cant-get-master-kerberos-princi by cc-by-sa and MIT license