2016-08-19 5 views
1

Alluxio에서 Spark와 이상한 오류가 발생했습니다. Alluxio에서 Spark로 20,000 개의 파일을 읽었습니다. 하지만 Alluxio에서 Spark로 40,000 개의 파일을 읽었습니다. 작동하지 않습니다. 내가 Alluxio 1.2을 사용, 1.6.0 스파크 내가 파일 API와 데이터를 읽어 FileSystem fs = FileSystem.Factory.get(); AlluxioURI path = new AlluxioURI(/partition0); ...Alluxio 프레임 크기()가 max()보다 크다.

16/08/19 16:08:40 INFO logger.type: Client registered with FileSystemMasterClient master @ master/127.0.0.1:19998 
16/08/19 16:08:41 ERROR logger.type: Frame size (17277505) larger than max length (16777216)! 
org.apache.thrift.transport.TTransportException: Frame size (17277505) larger than max length (16777216)! 
     at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) 
     at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) 
     at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86) 
     at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:429) 
     at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:318) 
     at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:219) 
     at org.apache.thrift.protocol.TProtocolDecorator.readMessageBegin(TProtocolDecorator.java:135) 
     at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) 
     at alluxio.thrift.FileSystemMasterClientService$Client.recv_listStatus(FileSystemMasterClientService.java:503) 
     at alluxio.thrift.FileSystemMasterClientService$Client.listStatus(FileSystemMasterClientService.java:489) 
     at alluxio.client.file.FileSystemMasterClient$8.call(FileSystemMasterClient.java:220) 
     at alluxio.client.file.FileSystemMasterClient$8.call(FileSystemMasterClient.java:216) 
     at alluxio.AbstractClient.retryRPC(AbstractClient.java:324) 
     at alluxio.client.file.FileSystemMasterClient.listStatus(FileSystemMasterClient.java:216) 
     at alluxio.client.file.BaseFileSystem.listStatus(BaseFileSystem.java:195) 
     at alluxio.client.file.BaseFileSystem.listStatus(BaseFileSystem.java:186) 
     at Main.main(Main.java:119) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731) 
     at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181) 
     at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206) 
     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) 
     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 
Exception in thread "main" java.io.IOException: Failed after 32 retries. 
     at alluxio.AbstractClient.retryRPC(AbstractClient.java:334) 
     at alluxio.client.file.FileSystemMasterClient.listStatus(FileSystemMasterClient.java:216) 
     at alluxio.client.file.BaseFileSystem.listStatus(BaseFileSystem.java:195) 
     at alluxio.client.file.BaseFileSystem.listStatus(BaseFileSystem.java:186) 
     at Main.main(Main.java:119) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731) 
     at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181) 
     at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206) 
     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) 
     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 

내가 올바른 지역 및 Alluxio 마스터 주소 Alluxio를 실행하기 때문에 그것은 alluxio.security.authentication.type 문제가되지 않습니다. 20,000 개의 파일이있는 반면 40.000 개의 파일에서는 작동하지 않는 이유를 이해할 수 없습니다.

나는 또한 alluxio.network.thrift.frame.size.bytes.max을 수정되었지만 발생하지 않은 ..

답변

0

이 문제는 여러 가지 원인에 의해 발생할 수 있습니다 Alluxio 마스터 주소의 포트가 올바른지

  • 는 제발 한 번 확인합니다. Alluxio 마스터의 기본 청취 포트는 포트 19998이며,이 오류 메시지를 유발하는 일반적인 실수는 마스터 주소에 잘못된 포트를 사용하는 것입니다 (예 : Alluxio 마스터의 기본 웹 UI 포트 인 포트 19999 사용).

  • Alluxio 클라이언트와 마스터의 보안 설정이 일치하는지 확인하십시오. Alluxio는 alluxio.security.authentication.type을 구성하여 사용자를 인증하는 다양한 접근 방식을 제공합니다. 이 속성은 서버 및 클라이언트에서 다른 값으로이 속성을 구성한 경우 발생합니다 (예 : 기본값은 NOSASL이고 다른 하나는 SIMPLE로 맞춤 설정 됨). Alluxio 클러스터 및 응용 프로그램을 사용자 정의하는 방법은 Configuration-Settings를 읽으십시오.

  • Apache-Spark와 Alluxio 사이의 구성입니다. alluxio/conf/alluxio-site.properties에서 alluxio.network.thread.frame.size.bytes.max를 작업하도록 Spark의 JVM 환경을 변경해야합니다. 그렇게하려면, 당신은 수출 SPARK_CLASSPATH = $ {ALLUXIO_HOME}/conf의를 추가해야합니다 spark-env.sh에 $ {SPARK_CLASSPATH을} 또는 스파크 제출 명령을 --driver 클래스 경로 pathAlluxio/conf의 추가

저에게 제 3의 해결책이었습니다