0

火花版本:1.6.3

我将 Spark thrift 服务器作为代理运行。但它没有像我预期的那样运行。它总是在负载高时停止。

这是我访问时的错误。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 500 Server Error</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /jobs/. Reason:
<pre>    Server Error</pre></p><h3>Caused by:</h3><pre>java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOfRange(Arrays.java:3664)
	at java.lang.String.<init>(String.java:207)
	at java.lang.StringBuilder.toString(StringBuilder.java:407)
	at scala.collection.mutable.StringBuilder.toString(StringBuilder.scala:427)
	at scala.xml.Node.buildString(Node.scala:161)
	at scala.xml.Node.toString(Node.scala:166)
	at org.apache.spark.ui.JettyUtils$$anonfun$htmlResponderToServlet$1.apply(JettyUtils.scala:55)
	at org.apache.spark.ui.JettyUtils$$anonfun$htmlResponderToServlet$1.apply(JettyUtils.scala:55)
	at org.apache.spark.ui.JettyUtils$$anon$1.doGet(JettyUtils.scala:83)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
	at org.spark-project.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
	at org.spark-project.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1507)
	at org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter.doFilter(AmIpFilter.java:179)
	at org.spark-project.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1478)
	at org.spark-project.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
	at org.spark-project.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
	at org.spark-project.jetty.servlet.ServletHandler.doScope(ServletHandler.java:427)
	at org.spark-project.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
	at org.spark-project.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
	at org.spark-project.jetty.server.handler.GzipHandler.handle(GzipHandler.java:301)
	at org.spark-project.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
	at org.spark-project.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
	at org.spark-project.jetty.server.Server.handle(Server.java:370)
	at org.spark-project.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
	at org.spark-project.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:973)
	at org.spark-project.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1035)
	at org.spark-project.jetty.http.HttpParser.parseNext(HttpParser.java:641)
	at org.spark-project.jetty.http.HttpParser.parseAvailable(HttpParser.java:231)
	at org.spark-project.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
	at org.spark-project.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
	at org.spark-project.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
</pre>
<hr /><i><small>Powered by Jetty://</small></i><br/>                                                
</body>
</html>

我看到错误是java.lang.OutOfMemoryError: Java heap space

但我不知道我需要增加什么内存:

  • 运行 SPARK 的服务器内存
  • 使用 SPARK 配置执行器的内存
  • 其他内存配置...

更新:我的 SPARK 配置

我的 SPARK 配置

4

2 回答 2

0

Thrift 服务器在它自己的内存空间中运行。您可以通过执行程序内存属性指定。

例如

./sbin/start-thriftserver.sh --executor-memory 512m

我认为默认是1g,因为spark-env.sh

于 2017-12-05T02:59:27.320 回答
0

根据集群中的节点数量,可以启动 Spark thrift 服务器(例如,在 AWS EMR 上),您可以使用 1 个小型 r3.2xlarge 节点

sudo /usr/lib/spark/sbin/start-thriftserver.sh --driver-memory 10g --verbose --master yarn-client --executor-memory 15g --num-executors 6 --executor-cores 2

还要确保监控或清理 hdfs dfs -ls /var/log/spark/apps/EMR上的 Spark History 文件夹

如果文件夹中有多个作业处于.inprogress状态,则查询将被卡住

有一种方法可以设置 Spark 历史文件夹的自动清理

于 2018-04-26T19:18:34.207 回答