Zeppelin 扩展了多个 JAVA 进程

Posted

技术标签:

【中文标题】Zeppelin 扩展了多个 JAVA 进程【英文标题】:Zeppelin sprawls multiple JAVA processes 【发布时间】:2017-04-05 23:46:10 【问题描述】:

我目前在 HDP 2.5 的主服务器上运行最新的 zeppelin 源,我还有一个工作服务器。

在主服务器下,我检测到过去 12 天内生成了几个 JAVA 进程,它们没有完成并且正在消耗内存。有一次,内存已满,无法在其 Yarn 队列下运行 Zeppelin。我在 Yarn 中有一个队列系统,一个用于 JobServer,另一个用于 Zeppelin。 Zeppelin 当前使用 root 运行,但将更改为每个自己的服务帐户。系统为 CENTOS 7.2

日志显示了以下过程,为了便于阅读,我开始区分它们: 进程1到3好像是zeppelin,不知道进程4和5是什么。 这里的问题是:是否存在配置问题?为什么 zeppelin-daemon 没有杀死这个 JAVA 进程?有什么办法可以避免这个问题?

<p><strong>PROCESS #1</strong>
/usr/java/default/bin/java 
-Dhdp.version=2.4.2.0-258 
-cp /usr/hdp/2.4.2.0-258/zeppelin/local-repo/2BXMTZ239/*
:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/*
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/lib/*
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/classes/
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/test-classes/
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-zengine/target/test-classes/
:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/zeppelin-spark_2.10-0.7.0-SNAPSHOT.jar
:/usr/hdp/current/spark-thriftserver/conf/:/usr/hdp/2.4.2.0-258/spark/lib/spark-assembly-1.6.1.2.4.2.0-258-hadoop2.7.1.2.4.2.0-258.jar
:/usr/hdp/2.4.2.0-258/spark/lib/datanucleus-api-jdo-3.2.6.jar
:/usr/hdp/2.4.2.0-258/spark/lib/datanucleus-core-3.2.10.jar
:/usr/hdp/2.4.2.0-258/spark/lib/datanucleus-rdbms-3.2.9.jar
:/etc/hadoop/conf/ 
-Xms1g 
-Xmx1g 
-Dfile.encoding=UTF-8 
-Dlog4j.configuration=file:///usr/hdp/2.4.2.0-258/zeppelin/conf/log4j.properties 
-Dzeppelin.log.file=/var/log/zeppelin/zeppelin-interpreter-spark-root-cool-server-name1.log org.apache.spark.deploy.SparkSubmit --conf spark.driver.extraClassPath=::/usr/hdp/2.4.2.0-258/zeppelin/local-repo/2BXMTZ239/*:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/*:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/lib/*
:
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/classes
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/test-classes
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-zengine/target/test-classes
:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/zeppelin-spark_2.10-0.7.0-SNAPSHOT.jar 
--conf spark.driver.extraJavaOptions= 
-Dfile.encoding=UTF-8 
-Dlog4j.configuration=file:///usr/hdp/2.4.2.0-258/zeppelin/conf/log4j.properties 
-Dzeppelin.log.file=/var/log/zeppelin/zeppelin-interpreter-spark-root-cool-server-name1.log 
--class org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer 
/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/zeppelin-spark_2.10-0.7.0-SNAPSHOT.jar 44001

</p><p><strong>PROCESS #2 </strong>
/usr/java/default/bin/java -Dhdp.version=2.4.2.0-258 
-cp /usr/hdp/2.4.2.0-258/zeppelin/local-repo/2BXMTZ239/*
:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/*
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/lib/*
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/classes/
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/test-classes/
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-zengine/target/test-classes/
:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/zeppelin-spark_2.10-0.7.0-SNAPSHOT.jar
:/usr/hdp/current/spark-thriftserver/conf/
:/usr/hdp/2.4.2.0-258/spark/lib/spark-assembly-1.6.1.2.4.2.0-258-hadoop2.7.1.2.4.2.0-258.jar
:/usr/hdp/2.4.2.0-258/spark/lib/datanucleus-api-jdo-3.2.6.jar
:/usr/hdp/2.4.2.0-258/spark/lib/datanucleus-core-3.2.10.jar
:/usr/hdp/2.4.2.0-258/spark/lib/datanucleus-rdbms-3.2.9.jar
:/etc/hadoop/conf/ 
-Xms1g 
-Xmx1g 
-Dfile.encoding=UTF-8 
-Dlog4j.configuration=file:///usr/hdp/2.4.2.0-258/zeppelin/conf/log4j.properties 
-Dzeppelin.log.file=/var/log/zeppelin/zeppelin-interpreter-spark-root-cool-server-name1.log 
org.apache.spark.deploy.SparkSubmit 
--conf spark.driver.extraClassPath=
:
:/usr/hdp/2.4.2.0-258/zeppelin/local-repo/2BXMTZ239/*
:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/*
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/lib/*
:
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/classes
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/test-classes
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-zengine/target/test-classes
:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/zeppelin-spark_2.10-0.7.0-SNAPSHOT.jar 
--conf spark.driver.extraJavaOptions= 
-Dfile.encoding=UTF-8 
-Dlog4j.configuration=file:///usr/hdp/2.4.2.0-258/zeppelin/conf/log4j.properties 
-Dzeppelin.log.file=/var/log/zeppelin/zeppelin-interpreter-spark-root-cool-server-name1.log 
--class org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer 
/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/zeppelin-spark_2.10-0.7.0-SNAPSHOT.jar 
40641

</p><p><strong>PROCESS #3</strong>
/usr/java/default/bin/java 
-Dhdp.version=2.4.2.0-258 
-cp /usr/hdp/2.4.2.0-258/zeppelin/local-repo/2BXMTZ239/*
:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/*
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/lib/*
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/classes/
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/test-classes/
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-zengine/target/test-classes
:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/zeppelin-spark_2.10-0.7.0-SNAPSHOT.jar
:/usr/hdp/current/spark-thriftserver/conf/
:/usr/hdp/2.4.2.0-258/spark/lib/spark-assembly-1.6.1.2.4.2.0-258-hadoop2.7.1.2.4.2.0-258.jar
:/usr/hdp/2.4.2.0-258/spark/lib/datanucleus-api-jdo-3.2.6.jar
:/usr/hdp/2.4.2.0-258/spark/lib/datanucleus-core-3.2.10.jar
:/usr/hdp/2.4.2.0-258/spark/lib/datanucleus-rdbms-3.2.9.jar
:/etc/hadoop/conf/ 
-Xms1g 
-Xmx1g 
-Dfile.encoding=UTF-8 
-Dlog4j.configuration=file:///usr/hdp/2.4.2.0-258/zeppelin/conf/log4j.properties 
-Dzeppelin.log.file=/var/log/zeppelin/zeppelin-interpreter-spark-root-cool-server-name1.log 
org.apache.spark.deploy.SparkSubmit 
--conf spark.driver.extraClassPath=::/usr/hdp/2.4.2.0-258/zeppelin/local-repo/2BXMTZ239/*
:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/*
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/lib/*
:
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/classes
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/test-classes
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-zengine/target/test-classes
:/usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/zeppelin-spark_2.10-0.7.0-SNAPSHOT.jar 
--conf spark.driver.extraJavaOptions= 
-Dfile.encoding=UTF-8 -Dlog4j.configuration=file:///usr/hdp/2.4.2.0-258/zeppelin/conf/log4j.properties 
-Dzeppelin.log.file=/var/log/zeppelin/zeppelin-interpreter-spark-root-cool-server-name1.log 
--class org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer /usr/hdp/2.4.2.0-258/zeppelin/interpreter/spark/zeppelin-spark_2.10-0.7.0-SNAPSHOT.jar 60887

</p><p><strong>PROCESS #4</strong>
/usr/java/default/bin/java 
-Dfile.encoding=UTF-8 
-Dlog4j.configuration=file:///usr/hdp/2.4.2.0-258/zeppelin/conf/log4j.properties 
-Dzeppelin.log.file=/var/log/zeppelin/zeppelin-interpreter-cassandra-root-cool-server-name1.log 
-Xms1024m 
-Xmx1024m 
-XX:MaxPermSize=512m 
-cp ::/usr/hdp/2.4.2.0-258/zeppelin/interpreter/cassandra/*
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/lib/*
:
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/classes
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/test-classes
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-zengine/target/test-classes org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer

</p><p><strong>PROCESS #5</strong>
/usr/java/default/bin/java 
-Dfile.encoding=UTF-8 
-Dlog4j.configuration=file:///usr/hdp/2.4.2.0-258/zeppelin/conf/log4j.properties 
-Dzeppelin.log.file=/var/log/zeppelin/zeppelin-interpreter-cassandra-root-cool-server-name1.log 
-Xms1024m -Xmx1024m -XX:MaxPermSize=512m 
-cp ::/usr/hdp/2.4.2.0-258/zeppelin/interpreter/cassandra/*
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/lib/*
::/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/classes
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-interpreter/target/test-classes
:/usr/hdp/2.4.2.0-258/zeppelin/zeppelin-zengine/target/test-classes org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer </p>

【问题讨论】:

【参考方案1】:

Apache Zeppelin 使用multi-process architecture,其中每个解释器都作为至少一个单独的 JVM 进程运行,通过 Apache Thrift 协议与 ZeppelinServer 通信。

在您的情况下,4 和 5 看起来像 Cassandra 解释器进程。

您始终可以从 Zeppelin UI 的解释器菜单中关闭\重新启动它们。在Zeppelin official docs查看更多关于这个和其他与解释器相关的功能

【讨论】:

很好的答案,2 个问题:当我停止 zeppelin 进程时,我注意到解释器进程仍在运行,为什么?我应该只使用 Zeppelin UI 来关闭它们吗?为什么脚本不关闭它们?我一个正在运行的 .\zeppelin-daemon stop 为什么 cassandra 解释器会产生超过 1 个进程,如果它是 1 个解释器?

以上是关于Zeppelin 扩展了多个 JAVA 进程的主要内容,如果未能解决你的问题,请参考以下文章

Apache Zeppelin - 断开连接状态

Apache zeppelin 进程死亡

Zeppelin 错误:部署到 Kubernetes 集群后出现“解释器进程未运行”

在 zeppelin 中完成一个进程后,有啥方法可以运行单独的笔记本?

WSL 上的齐柏林飞艇。 java.io.IOException:无法启动解释器进程

openzeppelin-solidity