1

Alluxio と Spark で奇妙なエラーが発生しました。Alluxio の Spark で 20.000 個のファイルを読み込んだところ、動作しました。しかし、Alluxio の Spark で 40.000 ファイルを読みましたが、うまくいきません。Alluxio 1.2、Spark 1.6.0 を使用し、ファイル API でデータを読み取ります。FileSystem fs = FileSystem.Factory.get(); AlluxioURI path = new AlluxioURI(/partition0); ...

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.security.authentication.type私はローカルで Alluxio を実行しており、Alluxio のマスター アドレスは正しいので問題ありません。20.000 ファイルでは機能するのに、40.000 ファイルでは機能しない理由がわかりません。

私も変更alluxio.network.thrift.frame.size.bytes.maxしましたが、結果はありません..

4

1 に答える 1

0

この問題は、さまざまな理由で発生する可能性があります。

  • Alluxio マスター アドレスのポートが正しいか再確認してください。Alluxio マスターのデフォルトのリッスン ポートはポート 19998 ですが、このエラー メッセージの原因となるよくある間違いは、マスター アドレスで間違ったポートを使用することです (たとえば、Alluxio マスターのデフォルトの Web UI ポートであるポート 19999 を使用する)。

  • Alluxio クライアントとマスターのセキュリティ設定が一致していることを確認してください。Alluxio は、alluxio.security.authentication.type を構成することにより、ユーザーを認証するためのさまざまなアプローチを提供します。このエラーは、このプロパティがサーバーとクライアントで異なる値で構成されている場合に発生します (たとえば、一方がデフォルト値の NOSASL を使用し、他方が SIMPLE にカスタマイズされている場合)。Alluxio クラスタとアプリケーションをカスタマイズする方法については、Configuration-Settings をお読みください。

  • Apache-Spark と Alluxio の間の構成。alluxio/conf/alluxio-site.properties で、Spark の JVM 環境を alluxio.network.thrift.frame.size.bytes.max が機能するように変更する必要があります。これを行うには、spark-env.sh に export SPARK_CLASSPATH=${ALLUXIO_HOME}/conf:${SPARK_CLASSPATH} を追加するか、spark-submit コマンドで --driver-class-path pathAlluxio/conf を追加する必要があります。

私にとって、それは3番目の解決策でした

于 2016-09-06T12:13:36.490 に答える