2017-05-31 10 views
0
I am using concurrend append method from the class Core in Azure to store data to Azure Data lake.Below is the code and the exception which I got.I am getting this exception rarely not always.Could anyone guide me?... 





public void invoke(String value) { 
     BitfinexSingletonClass obj = null; 
     try { 
      obj = BitfinexSingletonClass.getInstance(); 
     } catch (IOException e1) { 
      slf4jLogger.info(e1.getMessage()); 
     } 
     ADLStoreClient client = obj.getADLStoreClient(); 
     byte[] myBuffer = (value + "\n").getBytes(); 

     RequestOptions opts = new RequestOptions(); 

     opts.retryPolicy = new ExponentialBackoffPolicy(); 

     OperationResponse resp = new OperationResponse(); 
     slf4jLogger.info("" + value); 
     slf4jLogger 
       .info("...............Writing.........above......BITFINEX_DSHBTC_ORDER..Data............................ToADLake............"); 
     Core.concurrentAppend(BITFINEX_DSHBTC_ORDER, myBuffer, 0, myBuffer.length, true, client, opts, resp); 
     slf4jLogger.info("...............BITFINEX_DSHBTC_ORDER...Data...Successfully....written.....to...AzureDataLake............"); 
     if (!resp.successful) { 
      try { 
       throw client.getExceptionFromResponse(resp, "BITFINEX_DSHBTC_ORDER data is not written to ADL"); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

    } 

com.microsoft.azure.datalake.store.ADLException:操作CONCURRENTAPPENDは例外java.net.SocketTimeoutExceptionで失敗しました:読む最終が5回の試行[java.net.UnknownHostExceptionを発行、java.net後にスローされた例外が発生した タイムアウトになりました。 java.net.SocketTimeoutException、java.net.SocketTimeoutException] com.microsoft.azure.datalake.store.ADLStoreClient.getExceptionFromResponse(ADLStoreClient.java:1124) at co.biz.yobit。 sync.YobitLtcbtcTickerADLSink.invoke(YobitLtcbtcTickerADLSink.41) at org.apache.flink.streaming.api.operators.StreamSink.processElement(StreamSink.java:38) at org.apache.flink.streaming.runtime.io。 Str eamInputProcessor.processInput(StreamInputProcessor.java:185) at org.apache.flink.streaming.runtime.tasks.OneInputStreamTask.run(OneInputStreamTask.java:63) at org.apache.flink.streaming.runtime.tasks.StreamTask。 (Thread.java:748) で を呼び出す(StreamTask.java:261) をorg.apache.flink.runtime.taskmanager.Task.runで呼び出す(Task.java:665) 原因: java.net.SocketTimeoutException:読み取りがタイムアウトしました java.net.SocketInputStream.socketRead0(ネイティブメソッド) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) java.net.SocketInputStream.read(SocketInputStream。 java:171) java.net.SocketInputStream.read(SocketInputStream.java:141) sun.security.ssl.InputRecord.readFully(InputRecord.java:465) at sun.security.ssl.InputRecord.read(InputRecord.java:503) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl。 java.security.ssl.AppInputStream.read(AppInputStream.java:105) at java.io.BufferedInputStream.fill(Javaの場合:973) (BufferedInputStream.java:246) (java.io.BufferedInputStream.read1(BufferedInputStream.java:286)) (java.io.BufferedInputStream.read(BufferedInputStream.java:345) at sun.net.www.http.HttpClient)。 parseHTTPHeader(HttpClient.java:735) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678) at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1569) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474) at java.net。 HttpURLConnection.getResponseCode(HttpURLConnection.java:480) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338) com.microsoft.azure.datalake.store.HttpTransport.makeSingleCall(HttpTransport。 java:292) com.microsoft.azure.datalake.store.HttpTransport.makeCall(HttpTransport.java:91) com.microsoft.azure.datalake.store.Core.concurrentAppend(Core.java:210) at co.biz.yobit.sink.YobitLtcbtcTickerADLSink.invoke(YobitLtcbtcTickerADLSink.37) ... 6もっと見るAzure Data Lakeにデータを格納するためにflinkジョブを実行しているとき、私は以下の例外を取得しています。

+0

おそらく、デバッガを使用して、不明なホストを特定することができます。私にとっては、設定やネットワークアドレス/ポートの問題が間違っているように見えます。 – twalthr

+0

上記のエラーは、通常、コードを実行しているホストとAzureデータレイクストアの間の信頼できないネットワーク状態の結果です。コードをどこで実行していますか?それは、Azure VMまたはAzureの外部で実行されていますか? –

+0

@ Amit Kulkarni。 私の会社のローカルVMのflinkスタンドアロンクラスタでこのコードを実行しています。 – Dhinesh

答えて

1

上記のエラーは、通常、コードを実行しているホストとAzureデータレイクストアの間で信頼性の低いネットワーク状況が原因で発生します。コメントで確認されているように、ホストはWANを介して接続している地理的エリアを越えて走っています。したがって、これらのエラーが予想されるため、これらのエラーが表示された場合は再試行する必要があります。

Flinkクラスタは、Azure Data Lake Storeと同じ地域のVMで実行することをお勧めします。この構成では、これらのネットワークエラーは表示されません。

関連する問題