您正在查看9.7 -版本的RapidMiner Radoop文档点击这里查看最新版本
已知的Hadoop错误
本节列出可能影响RapidMiner Radoop进程执行的Hadoop组件中的错误。如果有解决问题的方法,也会在这里描述。
一般Hadoop错误
当使用Radoop Proxy或SOCKS Proxy时,HDFS操作可能会失败
- 原因是hdfs - 3068
- 影响:可能是更新的Hadoop版本,目前仍未解决
- 错误信息(在完整测试或文件上传期间):
java.lang.IllegalStateException:不能在InputStream API中使用直接缓冲区
- 解决方法是将此属性添加到高级Hadoop参数中:
dfs.client.use.legacy.blockreader
值为true - 在Radoop 9.5中,这应该不是一个问题。
Windows客户端不能与Hadoop 2.2 (YARN)上的Linux集群一起工作
- 原因是纱- 1824
- 影响:Hadoop 2.2 - YARN, Windows客户端和Linux集群
- 导入测试失败,日志中只有一行:
/bin/bash: /bin/java:没有这样的文件或目录
- 设置
mapreduce.app-submission.cross-platform
来假
将错误消息更改为“没有工作控制”
- 没有解决这个问题的方法,建议升级到Hadoop 2.4+。
- 原因是hadoop - 11808
- 警告信息为
连接到服务器时遇到异常:org.apache.hadoop.security.AccessControlException:客户端不能通过[TOKEN, KERBEROS]进行身份验证
- 此消息不会影响流程的执行或结果。
由org.codehaus.jackson.JsonParseException引起的YarnRuntimeException:非法的未引号字符
- 这是由于jobhistory服务的最新版本中的一个错误造成的,如果历史文件处于文本模式,该错误可能会损坏历史文件。
错误消息示例:
java.io.IOException: org.apache.hadoop.yarn.exceptions.YarnRuntimeException: org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Could not parse history file hdfs://cluster:123/mr-history/done/2019/[…]default-1563。jhist……由:org.codehaus.jackson.JsonParseException:非法未引号字符((CTRL-CHAR,代码10)):必须使用反斜杠转义以包含在[Source: org.apache.hadoop.hdfs.client.]HdfsDataInputStream@233a323d: org.apache.hadoop.hdfs.DFSInputStream@3daaf42b;第19行,第3999列]
解决方法:将如下键值对添加到Hadoop高级参数列出您的连接:键
mapreduce.jobhistory.jhist.format
与价值二进制
。
Hive一般错误
SocketTimeoutException:使用Hive-on-Spark时抛出读取超时
- 当Hive-on-Spark使用时,禁用Spark动态分配,解析HiveQL命令可能会启动一个SparkSession,在此期间其他请求可能会失败。看到蜂巢- 17532。
- 影响:Hive与Hive-on- spark启用
- 解决方法:在Hive服务中启用Spark Dynamic Allocation,可以避免此问题。请注意,SocketTimeoutException可能仍然会因为其他原因抛出,在这种情况下,请咨询您的Hadoop支持。
在进程执行期间抛出IllegalMonitorStateException
- 原因可能是蜂巢- 9598。通常发生在Studio界面长时间不活动之后,或者HiveServer2服务被更改或重新启动时。
- 影响:Hive 0.13(可能会影响早期版本),据说在Hive 0.14中被修复
- 错误消息示例:
java.lang.RuntimeException: java.lang.IllegalMonitorStateException at eu.radoop.datahandler.hive.HiveHandler.runFastScriptTimeout(HiveHandler.java:761) at eu.radoop.datahandler.hive.HiveHandler.runFastScriptsNoParams(HiveHandler.java:727) at eu.radoop.datahandler.hive.HiveHandler.runFastScript(HiveHandler.java:654) at eu.radoop.datahandler.hive.HiveHandler.dropIfExists(HiveHandler.java:1853)…导致:java.lang.IllegalMonitorStateException at java.util.concurrent.locks.ReentrantLock$Sync。在java.util.concurrent.locks.AbstractQueuedSynchronizer中尝试释放(未知来源)。在java.util.concurrent.locks.ReentrantLock上释放(未知来源)。在org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:239)
- 解决方法:在Studio中重新打开进程可能会解决这个问题。如果没有,重新启动Studio应该可以解决这个问题。如果这个问题在您的集群上一直存在,请升级到这个问题已经修复的Hive版本(参见上面的ticket)。
- Hive可能会启动一个所谓的本地任务执行JOIN。如果在此本地工作期间出现错误(通常是内存不足错误),它可能只返回错误代码,而不是正确的错误消息。
- 影响:Hive 0.13.0, Hive 1.0.0, Hive 1.1.0和潜在的其他版本
- 错误消息示例(返回代码可能不同):
从org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask返回代码3
- 完整的错误信息见/ tmp /蜂巢默认情况下,执行任务的集群节点上的本地目录。
- 解决方法:检查加入操作符使用适当的键,因此结果集不会爆炸。如果Join定义正确,则将以下键值对添加到Hive高级参数列出您的连接:键
hive.auto.convert.join
与价值假
。
- 原因可能和……一样蜂巢- 7711
- 影响:Hive 1.1.0和其他版本
- 错误信息:
kryo. kryoexception:无法找到class:[…]
- 解决方法:重新运行进程可能会有所帮助。将以下键值对添加到Hive高级参数连接列表可以防止这种类型的错误:key
hive.plan.serialization.format
与价值javaXML
。请注意,从Hive 2.0开始,kryo
是唯一支持的序列化格式。看到蜂巢- 12609和Hive Configuration属性了解更多信息。 - 手动安装RapidMiner Radoop函数防止这种类型的错误。
Hive作业失败,错误提示NoClassDefFoundError
- 原因在蜂巢- 2573,这个补丁是包含在CDH 5.4.3中
- 影响:CDH 5.4.0至CDH 5.4.2
- 错误信息:
java.sql.SQLException: java.lang.NoClassDefFoundError:[…]
- HiveServer2日志中的错误信息:
java.lang.RuntimeException: java.lang.NoClassDefFoundError:[…]
- 解决方案:重新运行进程可能会有所帮助,但升级到CDH 5.4.3才是永久的解决方案。
- 手动安装RapidMiner Radoop函数也可以防止这种类型的错误。
- 原因可能是蜂巢- 4605
- 影响:Hive 0.13.1及以下
- 错误信息:
执行错误,从org.apache.hadoop.hive.ql.exe .mr. mapredtask返回代码2
- HiveServer2日志中的错误信息:
org.apache.hadoop.hive.ql.metadata.HiveException: Unable to rename output from[…]] .hive-staging_hive_[…到:.hive-staging_hive…
- 没有已知的解决方案,请重新运行进程,最好不要从同一个Hive表并发读取任何数据。
JOIN可能导致CDH中的NullPointerException
- 原因可能是蜂巢- 3872,但是没有MAP JOIN提示
- 通常复杂视图的某种自连接会导致此错误
- 解决方法:在Join操作符之前使用Materialize Data(或Multiply)(在多个Join的情况下,您可能必须准确地找出导致此错误的第一个Join是哪个,并在它之前实现)
- 原因是每个HiveServer2“客户端”创建一个到Zookeeper的新连接:蜂巢- 4132,蜂巢- 6375
- 影响Hive 0.10和几个更新的版本。
- 在达到最大数量(默认为60,Radoop可以轻松达到)之后,HiveServer2变得不可访问,因为它尝试连接Zookeeper失败。在这种情况下,需要重新启动HiveServer2或Zookeeper。
- 解决方法:增加Zookeeper的maxClientCnxns属性,例如为500。
非latin1字符在过滤器子句或脚本中使用时可能会导致编码问题
- 原因是RapidMiner Radoop严重依赖于Hive VIEW对象。VIEW的代码存储在Hive Metastore数据库中,这是一个任意的关系数据库,通常在Hadoop集群安装期间创建。如果这个数据库不能很好地处理字符编码,那么RapidMiner Radoop接口也会有问题。
- 影响:默认MySQL脚本创建的Hive Metastore DB,也可能影响其他数据库
- 解决方法:您的Hadoop管理员可以测试您的Hive Metastore数据库是否可以处理所需的编码。通过Beeline创建的Hive VIEW,如果包含一个非拉丁字符的过滤子句,在SELECT查询中作为源对象使用时,应该返回预期的结果集。关于Hive的编码问题,请联系您的Hadoop支持。
置信度值缺失或预测标签可能显示不正确(例如,在离散操作符之后)
- 只有当Hive Metastore安装在MySQL关系数据库上,数据库默认设置为latin1字符集,并且标签包含特殊的多字节UTF-8字符,如离散操作符使用的无穷大符号(∞)时,才会出现这个问题。
- 影响:默认MySQL脚本创建的Hive Metastore DB,也可能影响其他数据库
- 解决方法:您的Hadoop管理员可以测试您的Hive Metastore数据库是否可以处理所需的编码。通过Beeline创建的Hive VIEW,如果包含一个非拉丁字符的过滤子句,在SELECT查询中作为源对象使用时,应该返回预期的结果集。关于Hive的编码问题,请联系您的Hadoop支持。
在非默认格式的Hive表中存储时,可能会丢失属性角色和二名映射
- 原因是蜂巢- 6681
- 可能会在Hive 0.13中修复
- 由于角色和二项式映射存储在列注释中,当用“from deserializer”替换它们时,角色将丢失。
- 有几个相关的问题,其中之一是蜂巢- 6375
- 影响:Hive 0.13据说已经修复,但可能仍然有问题,比如蜂巢- 6938
- CREATE TABLE AS SELECT语句失败,MapRedTask返回代码2;或者我们得到
NullPointerException
;或者我们得到ArrayIndexOutOfBoundsException
因为列名问题 - 解决方法是使用不同的格式。Materialize Data操作符可能还不够,因为CTAS语句会给出错误。
- 当向Hive解析器提交大型查询时,执行可能会停止,然后失败或永远无法恢复。
- 解决方案:此问题通常发生在应用模型具有非常大的模型(如树)的操作符。设置使用普通喷雾器参数设置为true以避免大型查询,但会得到相同的结果。
- 原因是蜂巢- 13626
- 如果在提交查询后立即取消查询,YARN应用程序可能会在集群上停留在RUNNING状态。
- 当使用Hive-on-Spark的进程被停止时,可能会偶然遇到这个问题。
- 要解决这种情况,可以手动终止作业。
- 的
hive.spark.client.server.connect.timeout
属性默认设置为90000ms。这可能是Hive-on-Spark作业启动的缩写,特别是当多个作业等待执行时(例如并行执行进程)。 - 一个专门的错误消息解释了这个问题。
- 属性值只能在中修改
hive-site.xml
集群配置文件。
SemanticException视图xxx对应于LIMIT,而不是SelectOperator
- 原因是蜂巢- 17415
- 影响:Hive 2.3 - 2.4,似乎在Hive 2.5及以上版本中被修复
- 用户试图创建一个带有LIMIT参数的VIEW,这在hive版本中是不允许的
- 这在使用时最常见过滤器示例范围操作符中指定LIMIT时蜂巢脚本操作符
黑斑羚的一般错误
当使用DISTINCT或COUNT(DISTINCT ..)表达式时,Impala可能返回空结果
- 有很多类似的bug票。
- 似乎只有当使用INSERT时才会出现(存储在Hive操作符中)。DISTINCT表达式可用于聚合或删除重复项操作符。
- 一个相关的问题:Impala仍然不支持多个COUNT(DISTINCT…)表达式黑斑羚- 110
一般Spark错误
启用用户模拟时,Spark Script访问Hive失败,提示“GSS initiate failed”
- 当使用火花1.5或火花1.6版本和Radoop连接中的用户模拟火花脚本具有启用Hive访问设置为true可能会因安全错误而失败。
- 原因是火星- 13478。
- 解决方法是更新集群上的Spark。
- 在Spark 2.0.1中,执行失败,出现以下异常:
"无法创建数据库默认值,因为创建目录hdfs失败://"…
- 原因是火星- 17810。
- 只影响Spark 2.0.1。请使用Spark 2.0.0或升级到Spark 2.0.2及以上版本。
- 解决方法是添加
spark.sql.warehouse.dir
作为高级Spark参数,路径以"file:/"开头。这并不适用于Windows。
- 错误信息是
"大小超过整数。MAX_VALUE”
- 原因是火星- 1476
- 解决方法是使用文本输入格式。如果HDFS块很大,文本格式也可能出现错误。
如果DataFrame中null值过多,旧版本Hive可能会导致Spark Script读取失败
- Spark作业成功,但是读取输出拼花表失败,出现NullPointerException。
- 影响Hive 1.1及以下版本。原因是拼花- 136。
- 解决方法是使用
fillna ()
函数在输出DataFrame (Python API,R API)
如果没有定义输出连接,Spark job中的异常可能不会使进程失败。
- Spark脚本异常,但Spark作业成功。如果操作符没有输出,则说明操作成功。
- 原因是火星- 7736和火星- 10851。
- 影响Spark 1.5.x。修复于Spark 1.5.1 for Python, Spark 1.6.0 for r。该异常可在资源管理器web界面的ApplicationMaster日志中检查。
- 解决方法是升级到Spark 1.5.1/1.6.0或创建一个虚拟输出连接并返回一个(小的)虚拟数据集。
引发错误InvalidAuxServiceException: auxService:spark_shuffle不存在
- 通常是由于连接的Spark资源分配策略选择为动态,但运行Spark的Hadoop集群没有设置为动态资源分配。
- 要么调整Hadoop集群,使其具有相应的动态资源分配功能,要么进行更改Spark资源分配策略用于连接编辑器中的连接。
引发错误java.lang.StackOverflowError
在遗嘱执行人方面
这是一个常见的错误,可能由多种问题引起,但在可能的原因中有一个已知的Spark问题。它可以通过非常大的Java反序列化堆栈跟踪来识别,其中包含许多ObjectInputStream调用。随机森林和决策树会受到影响,但您在使用其他Spark操作符时也可能遇到此问题。示例错误片段:
java.lang.StackOverflowError java.io.ObjectInputStream BlockDataInputStream.peekByte美元(ObjectInputStream.java: 2956) java.io.ObjectInputStream.readClassDesc (ObjectInputStream.java: 1736) java.io.ObjectInputStream.readOrdinaryObject (ObjectInputStream.java: 2040) java.io.ObjectInputStream.readObject0 (ObjectInputStream.java: 1571) java.io.ObjectInputStream.defaultReadFields (ObjectInputStream.java: 2285) java.io.ObjectInputStream.readSerialData (ObjectInputStream.java: 2209)java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: 1571) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2285) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2209) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: 1571) at .io. objectinputstream . readobject0 (ObjectInputStream.java:1571)java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) at scala.collection.immutable.List$SerializationProxy.readObject(List.scala:479) at sun.reflect.GeneratedMethodAccessor2。在java.lang.reflect.Method.invoke(Method.java:498)处调用(未知来源)
- 该问题是由于反序列化进程超出了执行程序进程内部的可用堆栈大小而引起的。一个可能的解决方案是增加执行程序堆栈大小,方法是将以下键值对添加到高级火花参数
spark.executor.extraJavaOptions
的值-Xss4m
,并确保spark.driver.extraJavaOptions
具有相同的值。xss值是用于设置java运行时线程堆栈大小的参数,请参见basicjava文件。
现象描述从yarn请求的Spark Job日志显示如下异常:
信息纱。ApplicationMaster: unregistered ApplicationMaster with FAILED[…]退出状态:143。诊断:容器在请求时被杀死。退出代码为143,退出代码为非零
一般来说,YARN杀死了应用程序,因为它试图扩展超出其限制的YARN资源,这些限制可以是vCore,内存或其他资源类型。乐鱼体育安装
- 最常出现在Radoop连接设置为使用Spark动态资源分配内存设置要么保留为集群默认值(可能太小而无法执行任何有意义的操作)
- 增加驱动程序的可用内存通常可以解决这个问题。进一步的补救措施是启用Spark作业的GC日志记录,并开始微调Spark作业提交相关的资源设置Radoop连接->高级火花参数。记忆微调的好人选是
火花。[司机|执行人]。[核心内存| | memoryOverhead]
。请检查火花的文档有关详细信息(请参考您的集群上可用的版本,因为默认值可能不同)
火花作业失败java.lang.IllegalArgumentException
升级Spark版本后
- 容器日志上的以下内容是由Spark解析驱动程序和执行程序内存设置的行为变化引起的。与将纯数字视为MiB的早期版本相反,最近的版本将纯数字视为字节。
错误消息示例:
java.lang.IllegalArgumentException: Executor内存3000必须至少为471859200。请在Spark配置中使用——executor-memory选项或Spark .executor.memory增加执行器内存。
在执行Spark内存相关的微调时,建议明确给定的数量,并始终使用单位后缀(例如“m”表示兆字节)Radoop连接->高级Spark参数。