[HADOOP] 인 IntelliJ를 사용하여 HDFS Kerberos를 클러스터에 로컬로 연결할 수 없습니다
HADOOP인 IntelliJ를 사용하여 HDFS Kerberos를 클러스터에 로컬로 연결할 수 없습니다
스피 에지 노드와 Kerberos를 연결하려는 내 laptop.The 클러스터 I'am에 설치 IntelliJ를 통해 로컬 HDFS에 연결하려고합니다. I는 에지 노드의 키 테이블을 생성하고 다음 코드를 그 구성. 이제 edgenode에 로그인 할 수 스피. 하지만 지금은 오류가 발생합니다 네임 노드에있는 HDFS 데이터에 액세스하려고 할 때. 다음은 HDFS에 연결을 시도 스칼라 코드는 다음과 같습니다
import org.apache.spark.sql.SparkSession
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.hadoop.security.{Credentials, UserGroupInformation}
import org.apache.hadoop.security.token.{Token, TokenIdentifier}
import java.security.{AccessController, PrivilegedAction, PrivilegedExceptionAction}
import java.io.PrintWriter
object DataframeEx {
def main(args: Array[String]) {
// $example on:init_session$
val spark = SparkSession
.builder()
.master(master="local")
.appName("Spark SQL basic example")
.config("spark.some.config.option", "some-value")
.getOrCreate()
runHdfsConnect(spark)
spark.stop()
}
def runHdfsConnect(spark: SparkSession): Unit = {
System.setProperty("HADOOP_USER_NAME", "m12345")
val path = new Path("/data/interim/modeled/abcdef")
val conf = new Configuration()
conf.set("fs.defaultFS", "hdfs://namenodename.hugh.com:8020")
conf.set("hadoop.security.authentication", "kerberos")
conf.set("dfs.namenode.kerberos.principal.pattern","hdfs/_HOST@HUGH.COM")
UserGroupInformation.setConfiguration(conf);
val ugi=UserGroupInformation.loginUserFromKeytabAndReturnUGI("m12345@HUGH.COM","C:\\Users\\m12345\\Downloads\\m12345.keytab");
println(UserGroupInformation.isSecurityEnabled())
ugi.doAs(new PrivilegedExceptionAction[String] {
override def run(): String = {
val fs= FileSystem.get(conf)
val output = fs.create(path)
val writer = new PrintWriter(output)
try {
writer.write("this is a test")
writer.write("\n")
}
finally {
writer.close()
println("Closed!")
}
"done"
}
})
}
}
edgenode에 로그인 할 수 스피. 스피 HDFS에 쓰기를 시도하지만합니다 (의 doAs 메소드는) 다음과 같은 오류가 발생합니다 :
WARN Client: Exception encountered while connecting to the server : java.lang.IllegalArgumentException: Server has invalid Kerberos principal: hdfs/namenodename.hugh.com@HUGH.COM
18/06/11 12:12:01 ERROR UserGroupInformation: PriviledgedActionException m12345@HUGH.COM (auth:KERBEROS) cause:java.io.IOException: java.lang.IllegalArgumentException: Server has invalid Kerberos principal: hdfs/namenodename.hugh.com@HUGH.COM
18/06/11 12:12:01 ERROR UserGroupInformation: PriviledgedActionException as:m12345@HUGH.COM (auth:KERBEROS) cause:java.io.IOException: Failed on local exception: java.io.IOException: java.lang.IllegalArgumentException: Server has invalid Kerberos principal: hdfs/namenodename.hugh.com@HUGH.COM; Host Details : local host is: "INMBP-m12345/172.29.155.52"; destination host is: "namenodename.hugh.com":8020;
Exception in thread "main" java.io.IOException: Failed on local exception: java.io.IOException: java.lang.IllegalArgumentException: Server has invalid Kerberos principal: hdfs/namenodename.hugh.com@HUGH.COM; Host Details : local host is: "INMBP-m12345/172.29.155.52"; destination host is: "namenodename.hugh.com":8020
나는 edgenode에 로그인하고 kinit를 수행하고 HDFS에게 그것의 벌금에 액세스하는 경우. 그래서 내가 왜 할 수 스피가 edgenode에 로그인 할 때 HDFS의 네임 노드에 액세스 할 수 없습니다 무엇입니까?
더 자세한 사항은 내 옆에서 필요한 경우 알려주세요.
해결법
-
==============================
1.스파크의 conf의 개체가 잘못 설정되었다. 다음은 나를 위해 일한 것입니다 :
스파크의 conf의 개체가 잘못 설정되었다. 다음은 나를 위해 일한 것입니다 :
val conf = new Configuration() conf.set("fs.defaultFS", "hdfs://namenodename.hugh.com:8020") conf.set("hadoop.security.authentication", "kerberos") conf.set("hadoop.rpc.protection", "privacy") ***---(was missing this parameter)*** conf.set("dfs.namenode.kerberos.principal","hdfs/_HOST@HUGH.COM") ***---(this was initially wrongly set as dfs.namenode.kerberos.principal.pattern)***
from https://stackoverflow.com/questions/50951656/cannot-connect-locally-to-hdfs-kerberized-cluster-using-intellij by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하둡과 하나의 기록과 같은 텍스트 파일에서 처리 paraphragraphs (0) | 2019.09.17 |
---|---|
[HADOOP] 하이브에서 모든 N-그램을 생성하는 방법 (0) | 2019.09.17 |
[HADOOP] 하이브로 JSON 배열을 가져 (0) | 2019.09.17 |
[HADOOP] 하둡 하이브 바닐라에서이 오류를 수정하는 방법 (0) | 2019.09.17 |
[HADOOP] 하이브에서 파티션 컬럼으로 정상 열을 변환 (0) | 2019.09.17 |