前言
新开一篇,记录一下大数据集群的报错和解决的方法。持续更新ing
1 Hadoop
1.1 Yarn上执行MR计算报错空指针
INFO mapreduce.JobSubmitter:Cleaning up the staging area /tmp/hadoop-yarn/staging/zhouchen/.staging/job_1569676186313_0005
java.lang.NullPointException
问题原因:
该方法计算的是/home/zhouchen/下的文件,而该目录下存在多个文件。Input只能指定目录又不能指定具体的文件
解决方案:
将文件移到一个单独的目录下即可解决
1.2 NameNode启动失败
启动namenode报错【错误: 找不到或无法加载主类 namanode】
问题原因:
初次搭建的Hadoop需要格式化namenode。而且要在namenode所在的机器上格式化namenode节点!!
解决方案:
[zhouchen@zhouchen-linux1 hadoop-2.5.0-cdh5.3.6]$ bin/hdfs namenode -format
2 Hive
2.1 Hive数据量过大
Error: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask (state=08S01,code=2)
问题原因: 查看日志
解决方案:
临时修改参数或者在配置文件中永久修改配置
设置参数:set mapreduce.map.memory.mb=3072;
3 Kafka
3.1 Kafka集群部分机器起不来
集群启动成功过。stop集群,再次启动,启动命令执行成功,echo? 结果为0,但是jps检查没有kafka进程
问题原因: 日志报错如下:
集群启动成功过,说明集群搭建是没有问题的,问题在于搭建完好的集群,再次修改server.properties文件,导致logs下的meta.properties与修改后的server.properties不匹配
解决方案:
删除logs下的所有文件,再次启动,启动完成,jps检查进程ok
4 Azkaban
4.1 Azkaban页面登陆乱码
Azkaban服务启动正常,executor/web进程正常,登陆web页面乱码:
问题原因:
azkaban页面需要使用https协议登陆。http协议登陆会乱码
解决方案:
使用https web协议登陆
5 Oozie
5.1 Oozie初始化失败
Oozie初始化失败,报错Error: E0100: Could not initialize service
问题原因:
oozie-site.xml配置让Oozie引用Hadoop的配置文件异常
配置属性值中,不能有空格
解决方案:
5.2 脚本修改之后Oozie任务执行失败
问题原因:
oozie调度的是hdfs上的脚本。需要将Linux上修改之后的脚本重新put到hdfs上(先删除)
解决方案:
删除hdfs上的脚本文件,将修改之后的脚本文件重新put到hdfs上的相同位置
6 Kerberos
6.1 启用Kerberos之后,hdfs浏览器打开鉴权失败
问题原因:
浏览器鉴权Kerberos需要kinit方式的桌面客户端方式的鉴权。但是oozie调度的脚本使用的认证方式是keytab,到时kinit方式失败。
解决方案:
1.使用cpw强制修改密码
2. kadmin.local -q “cpw hive/hive”
3.使用MIT Kerberos tickets manager,用kinit方式认证
4.登陆hdfs web
4.最后执行oozie的脚本调度任务,此时不管是keytab认证,还是kinit认证,hdfs web都是可以使用的
7 Spark
7.1 Sparksql向hive覆写overwrite的时候报错
.write.mode("overwrite").saveAsTable("city_count")
Caused by: MetaException(message:For direct MetaStore DB connections, we don't support retries at the client level.)
at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.reconnect(HiveMetaStoreClient.java:308)
at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:148)
at com.sun.proxy.$Proxy12.dropTable(Unknown Source)
at org.apache.hadoop.hive.ql.metadata.Hive.dropTable(Hive.java:1035)
... 35 more
问题原因:
saveMode为overwrite是支持覆盖写的,但是这里报错是因为使用了外部hive,hive的元数据存储在mysql上,而mysql驱动的版本与使用的spark不兼容导致覆写报错。
解决方案:
使用兼容的mysql驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
8 Kibana
8.1 Kibana创建index失败
kibana创建index失败,报错analyzer [ik_max_word] not found for field
问题原因:
kibana的解码器不全
解决方案:
需要根据kibana的版本下载对应的解码器
- 检查kibana的版本:curl http://hadoop102:9200/
- 下载地址https://github.com/medcl/elasticsearch-analysis-ik/releases
- 在$elasticsearch_home/plugins目录下创建ik目录,将下载的zip压缩包解压到ik
unzip elasticsearch-analysis-ik-6.3.1.zip - 重启elasticsearch和kibana
bash elastic_kibana.sh stop
bash elastic_kibana.sh start
9 DBeaver
9.1 DBeaver连接Phoenix失败
-
不使用Dbeaver的工具下载驱动包,使用Phoenix安装包中的phoenix-4.14.2-HBase-1.3-client.jar
-
Phoenix依赖HBASE,驱动包中只包含hbase-default.xml,需要将已配置好的HBASE环境conf/hbase-site.xml下载并压缩到驱动包phoenix-4.14.2-HBase-1.3-client.jar中
-
Dbeaver默认依赖的jre环境与Linux安装的Java环境还有Windows的Java环境是不匹配的,需要修改工具的配合文件
-
Dbeaver的Phoenix连接配置如图