1.报错:Lost task 0.0 in stage 2.0: java.lang.IllegalArgumentException: requirement failed
解决:意思是参数缺失,可根据下面的log提示找出是哪个类调用时参数出现问题
2.报错java.lang.NumberFormatException: empty String
解决:数字格式错误,根据后面的String可以判断,是转换错误。要么是string 转成double的时候string是空的,要么是此处不应该有转换
3.报错Current usage: 2.0 GB of 2 GB physical memory used; 2.5 GB of 2.1 GB virtual memory used. Killing container.
解决:用的虚拟内存超过了这个数值,故报错 。
yarn.nodemanager.vmem-pmem-ratio的比例采用默认的2.1,根据这个比例 计算出来的预分配的虚拟内存为2.1G,而在实际运行中,发现单个reducetask需要2.5G的虚拟内存,因此导致了异常的出现。解决办
法:在启动Yarn是调节虚拟内存率或者应用运行时调节内存大小。
4.java.nio.charset.MalformedInputException
解决:文件编码错误
5.Error initializing SparkContext
解决:可能是scala/jdk和yarn版本冲突
6.报错:The ratio of reported blocks 1.0000 has reached the threshold 0.9990
解决:hadoop还处于安全状态,可能是才启动的原因。
7.报错:WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources
没可用资源啦,SPARK_WORKER_MEMORY可以设置高一点,或者调整其他app的情况,也可能内存泄漏
8.报错:Failed to construct kafka consumer
解决:这个错误一般是由jar包冲突造成的,比如已有clients.jar由导入了streams.jar。
9.报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop
解决:这个问题话费了不少时间。在hive启动时报错org/apache/hadoop/hive/conf/HiveVariableS。但是问题是出在hadoop的hadoop.env.sh。在配置HADOOP_CLASSPATH的时候忘记:HADOOP_CLASSPATH,导致覆盖而出错。这个问题十分关键,因为在liunx下随意改动:会出很大问题,比如把:/bin这些删除了,导致你命令行很多基础命令不能够使用。
10.报错:Caused by: javax.jdo.JDODataStoreException:Required table missing : "VERSION
" in Catalog "" Schema"". DataNucleus requires this table to perform its persistenceoperations. Either your MetaData is incorrect, or you need to enable"datanucleus.autoCreateTables"
datanucleus.autoCreateSchema=true
表示在操作JDO API的时候对应的数据库表还没有创建的话会根据实体的元数据自动创建表
另外hive.metastore.schema.verification这个参数:
防止架构版本不兼容时的 Metastore 操作。考虑将此设置为“True”,以减少 Metastore 操作期间发生架构损坏的可能性
注意,将此属性设置为“True”,还会将 datanucleus.autoCreateSchema 属性设置为“False”
11.yarn的资源管理器一直起不来,而配置又没有问题
解决:重启机器
12:报错Found class jline.Terminal, but interface was expected
解决:这是我遇到最大的坑。按照网上说法,是因为hadoop下的jline.jar和hive下的jline.jar版本不一样造成。于是我将两者统一。照样报错,于是我又把hive下的包去掉,一样的报错。将hadoop包去掉,报确实jline的错。那会不会是hadoop根本没有去检验hive的包,或者说是hadoop拿自己的包和其他人的jline比较去了?于是我打开env.sh文件,把CLASS_PATH中hbase注解掉,发现能够重启。可能是hbase的包和hive造成冲突?如有答案的朋友请指教
13.报错Problem accessing /hwi/index.jsp. Reason: JSP support not configured
在启动hwi后,发现jetty和jsp不支持。于是导入jasper-compiler-5.5.23.jar
jasper-runtime-5.5.23.jar。
14.Call From yhw-X405UA/127.0.1.1 to localhost:6001 failed on connection exception: java.net.ConnectException: 拒绝连接
出现拒绝链接,我先去yarn处的日志找了找,发现了些类似于内存不够的错误,我解决之后发现还是错误。于是找到官网,官网的建议如下
检查客户端使用的主机名是否正确。如果它在Hadoop配置选项中:仔细检查,尝试手动ping。
检查客户端尝试与之通话的IP地址是否正确。
确保例外中的目标地址不是0.0.0.0 - 这意味着您实际上没有为客户端配置该服务的实际地址,而是提取服务器端属性,告诉它要监听每个连接端口。
如果错误消息显示远程服务位于“127.0.0.1”或“localhost”,则表示配置文件告诉客户端该服务位于本地服务器上。如果您的客户端正在尝试与远程系统通信,那么您的配置将被破坏。
检查在/ etc / hosts中没有映射到127.0.0.1或127.0.1.1的主机名条目(Ubuntu因此而臭名昭着)。
使用服务器提供服务的匹配项检查客户端尝试与之通信的端口。 netstat命令在那里很有用。
在服务器上,尝试telnet localhost <port>以查看端口是否在那里打开。
在客户端上,尝试使用telnet <server> <port>查看端口是否可以远程访问。
尝试从另一台计算机连接到服务器/端口,看看它是否只是单个客户端行为不端。
我们从端口号入手:在所有的配置文件中查找这个端口6001,最终在spark-defaults.conf中找到了它。是我不小心把路径书写错误...真是坑