web-dev-qa-db-ja.com

ツェッペリンのハローワールドが失敗しました

Apache zeppelin(git repoの最新のソースからビルド)をインストールしたところ、ポート10008で稼働していることが確認できました。1行のコードで新しいノートブックを作成しました

val a = "Hello World!"

そして、この段落を実行して、以下のエラーを見ました

Java.net.ConnectException:接続がJava.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.Java:350)でJava.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.Java:206)でJava.net.PlainSocketImpl.socketConnect(Native Method)で拒否されましたJava.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.Java:188)at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:392)Java.net.Socket.connect(Socket.Java:589)at org.Apache thrift.transport.TSocket.open(TSocket.Java:182)org.Apache.zeppelin.interpreter.remote.ClientFactory.create(ClientFactory.Java:51)at org.Apache.zeppelin.interpreter.remote.ClientFactory.create( ClientFactory.Java:37)org.Apache.commons.pool2.BasePooledObjectFactory.makeObject(BasePooledObjectFactory.Java:60)at org.Apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.Java:861)at org.Apache .commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.Java:435)org.Apache.commons.pool2.impl.GenerでicObjectPool.borrowObject(GenericObjectPool.Java:363)at org.Apache.zeppelin.interpreter.remote.RemoteInterpreterProcess.getClient(RemoteInterpreterProcess.Java:139)at org.Apache.zeppelin.interpreter.remote.RemoteInterpreter.init(RemoteInterpreter.Java: 137)org.Apache.zeppelin.interpreter.remote.RemoteInterpreter.getFormType(RemoteInterpreter.Java:257)at org.Apache.zeppelin.interpreter.LazyOpenInterpreter.getFormType(LazyOpenInterpreter.Java:104)at org.Apache.zeppelin.notebook .Paragraph.jobRun(Paragraph.Java:197)at org.Apache.zeppelin.scheduler.Job.run(Job.Java:170)at org.Apache.zeppelin.scheduler.RemoteScheduler $ JobRunner.run(RemoteScheduler.Java:304 )Java.util.concurrent.Executors $ RunnableAdapter.call(Executors.Java:511)at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)at Java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201 (ScheduledThreadPoolExecutor.Java:180)at Java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run (ScheduledThreadPoolExecutor.Java:293)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:745

どんな手掛かり?

私のバックエンドはspark 1.5であり、インタープリターのWebインターフェースによって、ツェッペリンがsparkの適切なバージョンと適切なspark.homeを指していることを確認しました。

12
Bala

エラーは、ツェッペリンがインタープリターを作成しようとしたときに発生したエラーによっても停止される場合があります。

Zeppelinは別のプロセスでinterpretterを開始し、Thriftプロトコルを使用して接続しようとします

私の場合、spark driver in spark-defaults.confに5GBを割り当てようとしたときにこのエラーが発生しました。この行にコメントを付けると解決されます(または4g以下を割り当てると)

#spark.driver.memory              5g

このJIRAをご覧ください ZEPPELIN-305

[〜#〜]編集[〜#〜]

このエラーは、Spark=インタープリタープロセスの開始を妨げる何らかの理由が原因である可能性があります。最近、ZEPPELIN_Java_OPTSにJMXオプションを追加しようとすると、インタープリタープロセスがZeppelinプロセスと同じJMXポート。「Port Already in Use」エラーが発生する

Zeppelinのログを確認してください(デフォルトではZEPPELIN_DIR/logs /にあり、Zeppelinが起動しようとしたときに何が起こっているかを確認しますSpark Interpreter

5
user1314742

$SPARK_HOMEが正しく設定されていません

3
LK__

以下の[1]のようなエラースタックは、さまざまなことを意味します。 Zeppelin Serverは、起動または停止しなかったため、ローカルインタープリターに接続できませんでした。 Zeppelinインタープリタープロセスを作成せずにinterpreter.shが終了するとキャッチできないため、送信された https://issues.Apache.org/jira/browse/ZEPPELIN-1984 追跡するため、Zeppelinのバグのようです。それ。

根本的な原因が異なるすべてのケースで、実際のエラーは、

LOG="/tmp/interpreter.sh-$$.log"
date >> $LOG
set -x
exec >> $LOG
exec 2>&1

$ ZEPPELIN_HOME/bin/interpreter.shに移動すると、/ tmp/interpreter.sh-*。logファイルに実際の問題が表示されます。

[1]

エラー[2017-01-18 16:54:38,533]({pool-2-thread-2} NotebookServer.Java [afterStatusChange]:1645)-エラーorg.Apache.zeppelin.interpreter.InterpreterException:org.Apache.zeppelin。 interpreter.InterpreterException:org.Apache.zeppelin。org.Apache.thrift.transport.TTransportException:Java.net.ConnectException:org.Apache.zeppelin.interpreter.remote.RemoteInterpreter.init(RemoteInterpreter.Java:232)で接続が拒否されましたinterpreter.remote.RemoteInterpreter.getFormType(RemoteInterpreter.Java:400)at org.Apache.zeppelin.interpreter.LazyOpenInterpreter.getFormType(LazyOpenInterpreter.Java:105)at org.Apache.zeppelin.notebook.Paragraph.jobRun(Paragraph.Java: 316)org.Apache.zeppelin.scheduler.Job.run(Job.Java:176)at org.Apache.zeppelin.scheduler.RemoteScheduler $ JobRunner.run(RemoteScheduler.Java:329)at Java.util.concurrent.Executors $ RunnableAdapter.call(Executors.Java:471)at Java.util.concurrent.FutureTask.run(FutureTask.Java:262)

編集。真の根本原因を明らかにするもう1つの方法は、log4jを変更して、sparkインタープリタープロセスの出力を確認することです。ZEPPELIN-1984のJeffが示唆しています。ZEPPELIN_HOME/ conf/log4j.properiesを次のように変更します。

log4j.rootLogger = INFO, dailyfile

log4j.appender.stdout = org.Apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.Apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%d] ({%t} %F[%M]:%L) - %m%n

log4j.appender.dailyfile.DatePattern=.yyyy-MM-dd
log4j.appender.dailyfile.Threshold = DEBUG
log4j.appender.dailyfile = org.Apache.log4j.DailyRollingFileAppender
log4j.appender.dailyfile.File = ${zeppelin.log.file}
log4j.appender.dailyfile.layout = org.Apache.log4j.PatternLayout
log4j.appender.dailyfile.layout.ConversionPattern=%5p [%d] ({%t} %F[%M]:%L) - %m%n

log4j.logger.org.Apache.zeppelin.interpreter.InterpreterFactory=DEBUG
log4j.logger.org.Apache.zeppelin.notebook.Paragraph=DEBUG
log4j.logger.org.Apache.zeppelin.scheduler=DEBUG
log4j.logger.org.Apache.zeppelin.livy=DEBUG
log4j.logger.org.Apache.zeppelin.flink=DEBUG
log4j.logger.org.Apache.zeppelin.spark=DEBUG
log4j.logger.org.Apache.zeppelin.python=DEBUG
log4j.logger.org.Apache.zeppelin.interpreter.util=DEBUG
log4j.logger.org.Apache.zeppelin.interpreter.remote=DEBUG
log4j.logger.org.Apache.zeppelin.interpreter.remote.RemoteInterpreterServer=DEBUG

ツェッペリンを再起動します。注:過剰なログが生成される可能性があります。 interpreter.shに数行を追加するという私の最初のアドバイスでは、Zeppelinを再起動する必要はありません。

また、この問題を(部分的に)修正するプルリクエストを作成しました: https://github.com/Apache/zeppelin/pull/1921

2017年1月24日更新。 https://issues.Apache.org/jira/browse/ZEPPELIN-1984 はマスターで修正されており、Zeppelin 0.8リリースに含まれる予定です。 ZEPPELIN-1984には、2つの重要な修正が含まれています。

  • インタプリタプロセスが開始できない場合は、「接続が拒否されました」と表示されません。
  • ツェッペリンは、根本的な原因が何であるかをパラグラフ出力に示します。
1
Tagar

$ YARN_QUEUEが正しく設定されていないときに同じ問題が発生した

0
thepolina

Amazon ECSのマイクロインスタンスの同じDockerコンテナーでSparkを指定してZeppelinを実行しようとしたときに、まったく同じエラーが発生しました。

エラーソースは%ZEPPELIN_HOME%/ logs/*。outの出力ログに表示され、Zeppelinがメモリ不足のためにSparkインタプリタが起動に失敗したことを示していたため、Dockerイメージをより多くのメモリを持つインスタンス。

0
Igor Bljahhin

Zepplin/conf/defalt.shで設定されているように、spark-modle yarn-clusterをyarn-clientに変更して、このバグを修正しました

0
Jary zhen

この質問は1年間開かれていますが、問題の解決が実現したかどうかはわかりません。最近、Amazon EMRでYarn-Sparkを使用して同様のエラーに遭遇しました。私がデバッグしたとき、私は次のことに気づき、同様の靴で自分を見つけた場合は試してみることをお勧めします(ソリューションはEMRに基づいていますが、他の製品でも同様であるべきです

1. kill -9 `ps -ef | grep zeppelin | grep -v grep | awk '{print $2}'`( *will make sure zombie processes are taken care of*)
2. kill -9 `ps -ef | grep hadoop-yarn-resourcemanager | grep -v grep | awk '{print $2}'`
3. Sudo /sbin/restart hadoop-yarn-resourcemanager
4. At times, simply starting the resource-manager does not start the name-node `Sudo start hadoop-hdfs-namenode`
5. Sudo /usr/lib/zeppelin/bin/zeppelin-daemon.sh start 
6. Use telnet to make sure that the default ports are open for required service.

同じように、エンドでは、有効なSparkContextでzeppelinを適切に実行できるはずです。これが役に立てば幸い

0
Pramit

sparkを指すURLが正しくないことに気づきました。一度修正すると、正常に動作します。ありがとうございます。

0
Bala

私の場合、クラスターに3つのノードがあります。そのうち3つにspark=がインストールされていましたが、zeppelinはそのうちの1つにのみインストールされていました。

したがって、ツェッペリンインタープリターメニュー-> Spark->編集->プロパティ->マスター

そのパラメーターをyarn-clientからlocal [*]に変更すると、問題が修正されました。

0
neverwinter

私の場合、 (project-root)/node_modules/zeppelin/spark-2.0.2-bin-hadoop2.7は、不明な理由によりインストールされませんでした。 rm -rf node_modules; npm cache clear; npm i修正しました。

0
christopherbalz

問題

ZeppelinはローカルホストでカスタムSparkアプリケーションを実行します。VPNなどの複数のネットワークがある場合)、127.0.0.1を使用できません。

このソースコードのため: https://github.com/Apache/zeppelin/blob/v0.8.1/zeppelin-interpreter/src/main/Java/org/Apache/zeppelin/interpreter/remote/RemoteInterpreterUtils.Java #L104

public static String findAvailableHostAddress() throws UnknownHostException, SocketException {
    InetAddress address = InetAddress.getLocalHost();
    if (address.isLoopbackAddress()) {
      for (NetworkInterface networkInterface : Collections
          .list(NetworkInterface.getNetworkInterfaces())) {
        if (!networkInterface.isLoopback()) {
          for (InterfaceAddress interfaceAddress : networkInterface.getInterfaceAddresses()) {
            InetAddress a = interfaceAddress.getAddress();
            if (a instanceof Inet4Address) {
              return a.getHostAddress();
            }
          }
        }
      }
    }
    return address.getHostAddress();
  }

Sparkインタープリターが実行されており、「奇妙な」IP上でリッスンしていることがわかります。

ps aux | grep spark
zep/bin/interpreter.sh -d zep/interpreter/spark -c 10.100.37.2 -p 50778 -r : -l /zep/local-repo/spark -g spark

ただし、Zeppelin UIはlocalhostに接続しようとします。これにより、127.0.0.1が解決され、Connection refusedが解決されます。

解決

  • 実行する前にVPNから切断Sparkインタープリター
  • 新しい環境変数ZEPPELIN_LOCAL_IPで修正するv0.8.2を使用します
0
Thomas Decaux