2017-11-21 1 views
0

스파크 스트리밍 응용 프로그램을 빌드합니다.이 응용 프로그램은 데이터 형식 소켓을 읽고 계산 한 다음 결과를 hdfs에 씁니다. 그러나 응용 프로그램은 hadoop 클러스터에서 실행되고, hdfs는 B hadoop 클러스터에서 실행됩니다.이 HDFS입니다[SPARK] : java.lang.IllegalArgumentException : java.net.UnknownHostException : 배관공

java.lang.IllegalArgumentException: java.net.UnknownHostException:plumber 
at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:377) 
at org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:310) 
at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:176) 
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:678) 
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:619) 
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:149) 
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2653) 
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:92) 
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2687) 
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2669) 
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:371) 
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295) 
at org.apache.hadoop.yarn.util.FSDownload.copy(FSDownload.java:251) 
at org.apache.hadoop.yarn.util.FSDownload.access$000(FSDownload.java:63) 
at org.apache.hadoop.yarn.util.FSDownload$2.run(FSDownload.java:361) 
at org.apache.hadoop.yarn.util.FSDownload$2.run(FSDownload.java:359) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:422) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657) 
at org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:358) 
at org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:62) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:748) 
Caused by: java.net.UnknownHostException: plumber 

는 B 하둡 클러스터의 fs.defaultFS : // 배관공

클러스터에서이 appplication을 실행
if (args.length < 2) { 
    System.out.println("Usage: StreamingWriteHdfs hostname port") 
    System.exit(-1) 
} 

val conf = new SparkConf() 
conf.setAppName("StreamingWriteHdfs") 

val ssc = new StreamingContext(conf, Durations.seconds(10)) 
ssc.checkpoint("/tmp") 

val hostname: String = args(0) 
val port :Int = Integer.parseInt(args(1)) 

val lines = ssc.socketTextStream(hostname, port) 
val words = lines.flatMap(_.split(" ")) 
val pairs = words.map(word => (word, 1)) 
val wordCounts = pairs.reduceByKey(_ + _) 

wordCounts.print() 

//TODO write to hdfs 
wordCounts.saveAsHadoopFiles("hdfs://plumber/tmp/test/streaming", 
    "out", 
    classOf[Text], 
    classOf[IntWritable], 
    classOf[TextOutputFormat[Text, IntWritable]]) 

ssc.start() 
ssc.awaitTermination() 

는이 execption을 얻을 : 다음은 내 코드입니다.

나를 도와 줄 수있는 사람이 있습니다. thxs.

답변

0

난 당신이

같은 호스트 이름을 수정할 필요가 있다고 생각 "HDFS : // 배관공 : 8020/tmp를/테스트/스트리밍".

관련 문제