【问题标题】:'new HiveContext' is wanting an X11 display? com.trend.iwss.jscan?'new HiveContext' 想要一个 X11 显示器? com.trend.iwss.jscan?
【发布时间】:2017-02-01 08:16:11
【问题描述】:

Spark 1.6.2(YARN 主机)

包名:com.example.spark.Main


基本 SparkSQL 代码

val conf = new SparkConf()
conf.setAppName("SparkSQL w/ Hive")
val sc = new SparkContext(conf)

val hiveContext = new HiveContext(sc)
import hiveContext.implicits._

// val rdd = <some RDD making>
val df = rdd.toDF()
df.write.saveAsTable("example")

还有堆栈跟踪...

No X11 DISPLAY variable was set, but this program performed an operation which requires it.
         at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
         at java.awt.Window.<init>(Window.java:536)
         at java.awt.Frame.<init>(Frame.java:420)
         at java.awt.Frame.<init>(Frame.java:385)
         at com.trend.iwss.jscan.runtime.BaseDialog.getActiveFrame(BaseDialog.java:75)
         at com.trend.iwss.jscan.runtime.AllowDialog.make(AllowDialog.java:32)
         at com.trend.iwss.jscan.runtime.PolicyRuntime.showAllowDialog(PolicyRuntime.java:325)
         at com.trend.iwss.jscan.runtime.PolicyRuntime.stopActionInner(PolicyRuntime.java:240)
         at com.trend.iwss.jscan.runtime.PolicyRuntime.stopAction(PolicyRuntime.java:172)
         at com.trend.iwss.jscan.runtime.PolicyRuntime.stopAction(PolicyRuntime.java:165)
         at com.trend.iwss.jscan.runtime.NetworkPolicyRuntime.checkURL(NetworkPolicyRuntime.java:284)
         at com.trend.iwss.jscan.runtime.NetworkPolicyRuntime._preFilter(NetworkPolicyRuntime.java:164)
         at com.trend.iwss.jscan.runtime.PolicyRuntime.preFilter(PolicyRuntime.java:132)
         at com.trend.iwss.jscan.runtime.NetworkPolicyRuntime.preFilter(NetworkPolicyRuntime.java:108)
         at org.apache.commons.logging.LogFactory$5.run(LogFactory.java:1346)
         at java.security.AccessController.doPrivileged(Native Method)
         at org.apache.commons.logging.LogFactory.getProperties(LogFactory.java:1376)
         at org.apache.commons.logging.LogFactory.getConfigurationFile(LogFactory.java:1412)
         at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:455)
         at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:657)
         at org.apache.hadoop.hive.shims.HadoopShimsSecure.<clinit>(HadoopShimsSecure.java:60)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Class.java:264)
         at org.apache.hadoop.hive.shims.ShimLoader.createShim(ShimLoader.java:146)
         at org.apache.hadoop.hive.shims.ShimLoader.loadShims(ShimLoader.java:141)
         at org.apache.hadoop.hive.shims.ShimLoader.getHadoopShims(ShimLoader.java:100)
         at org.apache.spark.sql.hive.client.ClientWrapper.overrideHadoopShims(ClientWrapper.scala:116)
         at org.apache.spark.sql.hive.client.ClientWrapper.<init>(ClientWrapper.scala:69)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
         at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
         at org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:249)
         at org.apache.spark.sql.hive.HiveContext.metadataHive$lzycompute(HiveContext.scala:345)
         at org.apache.spark.sql.hive.HiveContext.metadataHive(HiveContext.scala:255)
         at org.apache.spark.sql.hive.HiveContext.setConf(HiveContext.scala:459)
         at org.apache.spark.sql.hive.HiveContext.defaultOverrides(HiveContext.scala:233)
         at org.apache.spark.sql.hive.HiveContext.<init>(HiveContext.scala:236)
         at org.apache.spark.sql.hive.HiveContext.<init>(HiveContext.scala:101)
         at com.example.spark.Main1$.main(Main.scala:52)
         at com.example.spark.Main.main(Main.scala)
         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:738)
         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)
 ivysettings.xml file not found in HIVE_HOME or HIVE_CONF_DIR,/etc/hive/2.5.3.0-37/0/ivysettings.xml will be used

同样的代码一周前在一个新的 HDP 集群上运行,它在沙箱中运行良好......我记得做的唯一一件事是试图改变 JAVA_HOME 变量,但我很确定我解开了那些变化。
我不知所措 - 不知道如何开始追踪问题。

集群是无头的,所以当然它没有X11显示,但是new HiveContext的哪一块甚至需要弹出任何JFrame

根据日志,我会说这是我搞砸的 Java 配置问题,org.apache.hadoop.hive.shims.HadoopShimsSecure.&lt;clinit&gt;(HadoopShimsSecure.java:60) 中的某些内容被触发,因此出现了 Java 安全对话框,但我不知道。

无法进行 X11 转发,并尝试在 spark-submit 之前进行 export SPARK_OPTS="-Djava.awt.headless=true",但没有帮助。

尝试了这些,但又一次,无法转发并且没有显示

在两个 Spark 客户端上似乎可以重现该错误。
我只在一台机器上尝试更改JAVA_HOME

进行了 Ambari Hive 服务检查。没修好。
可以通过 Hive/Beeline CLI 很好地连接到 Hive 数据库

【问题讨论】:

  • com.trend.iwss.jscan 看起来很可疑,就像一个趋势科技防病毒探针插入到您的 JVM 中,认为您正在运行恶意代码,并试图弹出警告消息框...
  • 我也在想类似的事情...这导致我来到这里...postgresql.org/message-id/flat/… Maven 包正在通过公司防火墙下载...不知道我能做些什么。

标签: scala hadoop apache-spark hive apache-spark-sql


【解决方案1】:

就 Spark 代码而言,这似乎减轻了错误。

val conf = SparkConf()
conf.set("spark.executor.extraJavaOptions" , "-Djava.awt.headless=true")

原答案

找到这篇文章。 Spring 3.0.5 - java.awt.HeadlessException - com.trend.iwss.jscan

基本上,趋势科技将一些com.trend.iwss.jscan 包插入到通过公司防火墙通过 Maven 下载的 JAR 文件中,我无法控制。

(链接失效)http://esupport.trendmicro.com/Pages/IWSx-3x-Some-files-and-folders-are-added-to-the-Jar-files-after-passin.aspx

Wayback Machine 来救援...

如果其他人有意见,我也想听听。

问题
通过 IWSA 下载一些 .JAR 文件时,会在 jar 文件中添加一个充满 .class 文件的目录,该目录与正在下载的内容无关(com\trend\iwss\jscan\runtime\)。

解决方案
发生这种情况是因为如果 JAR 文件最初是未签名的,IWSA 会在小程序中插入一些代码来监控和限制潜在的有害操作。

对于 IWSS/IWSA,每个“获取”请求都是相同的,因此它不会知道您是在尝试下载档案还是小程序,这将由您的浏览器执行。

出于安全原因添加此代码是为了监控“可能”小程序的行为,以确保它不会对机器及其环境造成任何损害。

为防止出现此问题,请按以下步骤操作:

  1. 登录到 IWSS Web 控制台。

  2. 转到 HTTP > Applet 和 ActiveX > 策略 > Java Applet 安全规则。

  3. 在 Java Applet Security 下,将“无签名”的值更改为“通过”或“阻止”,具体取决于您要对未签名的 .JAR 文件执行的操作。

  4. 点击保存。

【讨论】:

  • 毕竟,未签名的 JAR 只是一个 ZIP 存档。如果防病毒软件可以添加内容,那么您可以删除该内容,即zip -d tainted-with-stuff.jar '/com/trend/*'
  • 当然,但事实上我有 spark-sql、spark-streaming、spark-core……你明白了……如果我无法避免它
  • 你害怕Trend IWSS是濒危物种吗?!我赞成根除,即for J in *.jar; do if [[ $(unzip -l $J | grep -c com/trend/) -ne 0 ]]; then zip -d $J 'com/trend/*'; fi; done »:-0
  • 哈。我的意思是,是的,这在理论上可行。我的意思是,我不想为每个下载的新 JAR 文件都这样做。
猜你喜欢
  • 2010-10-04
  • 2013-04-18
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 2011-10-10
  • 1970-01-01
相关资源
最近更新 更多