[HADOOP] Spark에서 Hdfs에 액세스하면 토큰 캐시 오류가 발생 함 마스터 Kerberos 원칙을 갱신 자로 사용할 수 없음
HADOOPSpark에서 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.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에 제공해야합니다. 그렇지 않으면 작동하지 않을 것이다.
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
'HADOOP' 카테고리의 다른 글
[HADOOP] 임베디드 모드에서 스파크 - 사용자 / 하이브 /웨어 하우스를 찾을 수 없음 (0) | 2019.08.05 |
---|---|
[HADOOP] 하이브의지도 수집 (0) | 2019.08.05 |
[HADOOP] Spark 어플리케이션에 Yarn 클러스터 구성 추가 (0) | 2019.08.05 |
[HADOOP] 하이브에서 'load data inpath'와 'location'의 차이점은 무엇입니까? (0) | 2019.08.05 |
[HADOOP] json 문서의 Avro 직렬화에 문제가 누락되었습니다. (0) | 2019.08.05 |