已知的Hadoop错误
本节列出了Hadoop组件中可能影响RapidMiner Radoop进程执行的错误。如果有解决问题的方法,也会在这里描述。
一般Hadoop错误
当使用Radoop Proxy或SOCKS Proxy时,HDFS操作可能会失败
- 的原因是hdfs - 3068
- 影响:可能是较新的Hadoop版本,并且仍未解决
- 错误消息(在完全测试或文件上传期间):
illegalstateexception:不能在InputStream API中使用直接缓冲区
- 解决方法是将此属性添加到高级Hadoop参数:
dfs.client.use.legacy.blockreader
值为true - 在Radoop 9.5中,这应该不是一个问题。
Windows客户端不能与Hadoop 2.2上的Linux集群一起工作(YARN)
- 的原因是纱- 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. codehouse .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. error: Could not parse history file hdfs://cluster:123/mr-history/done/2019/[…]jhist……由:org.codehaus.jackson.JsonParseException:非法的不加引号的字符((CTRL-CHAR,代码10)):必须使用反斜杠转义,以包含在[来源:org.apache.hadoop.hdfs.client.]的名称中。HdfsDataInputStream@233a323d: org.apache.hadoop.hdfs.DFSInputStream@3daaf42b;行:19,列:3999]
处理步骤:将以下键值对添加到先进的Hadoop参数您的连接列表:键
mapreduce.jobhistory.jhist.format
与价值二进制
.
蜂巢一般错误
SocketTimeoutException:在使用Hive-on-Spark时抛出读超时
- 当Hive-on-Spark在禁用Spark Dynamic Allocation的情况下使用时,对HiveQL命令的解析可能会启动SparkSession,在此期间其他请求可能会失败。看到蜂巢- 17532.
- 影响:Hive与Hive-on- spark启用
- 解决方法:在Hive服务中启用Spark Dynamic Allocation,可以避免此问题。请注意,SocketTimeoutException仍然可能因为其他原因被抛出,在这种情况下请咨询您的Hadoop支持。
在进程执行期间抛出IllegalMonitorStateException
- 原因可能是蜂巢- 9598.通常发生在Studio界面长时间不活动后,或者HiveServer2服务被更改或重新启动时。
- 影响:Hive 0.13(可能会影响早期版本),据说在Hive 0.14中修复
- 错误消息的例子:
at eu.radoop.datahandler.hive.HiveHandler.runFastScriptTimeout(HiveHandler.java:761) at eu.radoop.datahandler.hive.HiveHandler.runFastScriptTimeout(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。tryRelease(未知源)在java.util.concurrent.locks.AbstractQueuedSynchronizer。在java.util.concurrent.locks.ReentrantLock. release(未知源)。unlock(Unknown Source) at org.apache.hive.jdbc. hivestement .execute(hivestement .java:239)
- 解决方法:在Studio中重新打开进程可能会解决这个问题。如果不是,重新启动Studio应该可以解决这个问题。如果这是一个持续的问题在您的集群上,请升级到一个Hive版本,该问题已经修复(参见上面的票据)。
- 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.auto.convert.join
与价值假
.
- 原因可能与for相同蜂巢- 7711
- 影响:Hive 1.1.0和可能的其他版本
- 错误信息:
kryoexception:无法找到类:[…]
- 解决方法:重新运行进程可能有帮助。添加以下键值对先进的蜂巢参数列表可以防止这种类型的错误:key
hive.plan.serialization.format
与价值javaXML
.请注意,从Hive 2.0开始,kryo
是唯一受支持的序列化格式。看到蜂巢- 12609而且蜂巢配置属性为更多的信息。 - 手动安装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.exec.mr.MapRedTask返回代码2
- HiveServer2日志错误信息:
无法重命名[…]的输出] .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。
- 原因是RapidMiner Radoop严重依赖Hive VIEW对象。VIEW的代码存储在Hive Metastore数据库中,这是一个任意的关系数据库,通常在Hadoop集群安装期间创建。如果这个数据库不能很好地处理字符编码,那么RapidMiner Radoop接口也会有问题。
- 影响:默认MySQL脚本创建的Hive Metastore DB,可能会影响其他数据库
- 解决方法:你的Hadoop管理员可以测试你的Hive Metastore数据库是否可以处理所需的编码。通过Beeline创建的Hive VIEW包含一个非拉丁1字符的筛选子句,当它被用作SELECT查询中的源对象时,应该返回预期的结果集。关于Hive的编码问题,请联系您的Hadoop支持。
- 只有当Hive Metastore安装在MySQL关系数据库上,数据库默认为latin1字符集,并且标签包含特殊的多字节UTF-8字符,比如离散操作符使用的无穷符号(∞)时,才会出现这个问题。
- 影响:默认MySQL脚本创建的Hive Metastore DB,可能会影响其他数据库
- 解决方法:你的Hadoop管理员可以测试你的Hive Metastore数据库是否可以处理所需的编码。通过Beeline创建的Hive VIEW包含一个非拉丁1字符的筛选子句,当它被用作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 View xxx对应于LIMIT,而不是SelectOperator
- 的原因是蜂巢- 17415
- 影响:Hive 2.3 - 2.4,在Hive 2.5及以上版本中修复
- 用户试图创建一个带有LIMIT参数的视图,这在hive版本中是不允许的
- 的时候最常见滤波器的例子范围操作符或当在蜂巢脚本操作符
一般的黑斑羚错误
当使用DISTINCT或COUNT(DISTINCT ..)表达式时,Impala可能返回空结果
- 有很多类似的bug罚单。
- 似乎只有在使用INSERT(存储在Hive操作符)时才会出现。DISTINCT表达式可以在聚合或删除重复项操作符中使用。
- 一个相关的问题:Impala仍然不支持多个COUNT(DISTINCT ..)表达式黑斑羚- 110
一般引发错误
当启用用户模拟时,带有Hive访问的Spark Script失败,提示“GSS initiate failed”
- 当使用火花1.5或火花1.6版本和用户模拟火花脚本操作符,使蜂巢访问设置为true可能会失败,出现安全错误。
- 原因是火星- 13478.
- 解决方法是在集群上更新Spark。
- Spark 2.0.1执行失败,出现以下异常:
"Unable to create database default as failed to create its directory 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的块比较大,这个错误也可能发生在Text格式中。
对于较旧的Hive版本,如果DataFrame包含太多空值,则读取Spark Script的输出可能会失败
- Spark作业成功,但读取输出拼花表失败,导致NullPointerException异常。
- 影响Hive 1.1及以下版本。的原因是拼花- 136.
- 解决方法是使用
fillna ()
函数输出DataFrame (Python API,R API)
如果没有定义输出连接,Spark作业中的异常可能不会使进程失败。
- Spark脚本异常,但Spark作业成功。处理步骤如果操作符没有输出,则表示进程成功。
- 原因是火星- 7736而且火星- 10851.
- 影响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)at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067) 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 . readserialobject (ObjectInputStream.java:2067) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571) at java.io.ObjectInputStream.readObject0java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)在scala.collection.immutable.List$SerializationProxy.readObject(List.scala:479)在sun.reflect.GeneratedMethodAccessor2。在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- 该问题是由反序列化进程超过了执行程序进程内的可用堆栈大小所引起的。该问题的一个可能解决方案是增加执行器堆栈大小,方法是将以下键-值对添加到先进的火花参数
spark.executor.extraJavaOptions
的价值-Xss4m
,并确保spark.driver.extraJavaOptions
具有相同的值。xss值是一个用于设置java运行时线程堆栈大小的参数,参见basicjava文件.
现象描述向yarn请求Spark Job的日志显示如下异常:
信息纱。ApplicationMaster: unregistered ApplicationMaster with FAILED[…]退出状态:143。诊断:应请求杀死容器。出口码为143容器出口非零出口码为143被外部信号杀死
一般来说,YARN会杀死应用程序,因为它试图扩展超出其限制的YARN资源,这些限制可以是vCore、内存或其他资源类型。乐鱼体育安装
- 最常出现在Radoop连接设置为使用Spark动态资源分配内存设置要么保持集群默认设置(可能太小,无法执行任何有意义的操作)
- 增加驱动程序的可用内存通常可以解决这个问题。进一步的补救措施是启用Spark作业的GC日志记录,并开始微调Spark作业提交相关的资源设置Radoop连接->先进的火花参数.记忆微调的好人选是
火花。[司机|执行人]。[核心内存| | memoryOverhead]
.请检查火花的文档有关进一步的详细信息(请参考您的集群上可用的版本,因为默认值可能不同)
Spark作业失败java.lang.IllegalArgumentException
升级Spark版本后
- 容器日志上的以下内容是由Spark在解析驱动程序和执行程序内存设置上的行为变化引起的。与以前的版本将纯数字作为MiB相比,最近的版本将纯数字作为字节。
错误消息的例子:
java.lang.IllegalArgumentException: Executor内存3000必须至少是471859200。请在Spark配置中使用——executor-memory选项或Spark .executor.memory增加executor内存。
在执行与Spark内存相关的微调时,建议明确给定的数量,并始终使用单位后缀(例如“m”表示兆字节)Radoop连接->先进的火花参数.