CDH问题及维护汇总

版权声明:本文为博主原创文章,出处为 http://blog.csdn.net/silentwolfyh https://blog.csdn.net/silentwolfyh/article/details/72629215

目录:

一、HIVE错误

二、HDFS错误

三、oozie错误

四、Kafka错误

五、Hbase错误

六、Yarn和CM错误

七、维护及添加服务

八、Spark

九、其他错误

十、日志路径维护

十一、Cloudera Management Service角色迁移



友情链接

一、HIVE错误

####错误01
命令详细信息: 创建 Hive Metastore 数据库表
这里写图片描述
解决办法:

cp -r /var/lib/hive/mysql-connector-java-5.1.36-bin.jar /opt/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12/lib/hive/lib

错误02

Logon denied for user/password. Able to find the database server and database, but logon request was rejected
或者
Unexpected error. Unable to verify database connection.
这里写图片描述

解决办法:

mysql> grant all on hive.* TO ‘root’@‘主机名’ IDENTIFIED BY ‘123456’;
mysql> flush privileges;

二、HDFS错误

运行Hadoop程序报错:org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

修改dfs.permissions为false,把勾去掉,如下图所示。

这里写图片描述

如果hadoop fs -mkdir /user/mmm时出错,是由于权限问题引起的,可以通过cm端找到hdfs服务修改 相应配置

安装完毕后集群HDFS报警,提示 ’集群中有293个副本不足的块。集群众共有296个块。百分比副本不足的块:98.99%。临界阈值:40% Under-Replicated Blocks‘,产生的原因是因为一开始98,99机器故障,只安装了3台机器,DataNode节点只有2个,而安装过程中采用的都是默认配置,dfs.replication 设置的为3,所以导致次报警。通过使用Hadoop fsck /命令检查hdfs块信息会提示安装hbase的时候写入的数据块 Target replica is 3 but found 2 replica(s)。解决办法:配置dfs.replication值为2并执行以下命令:

解决办法:

CM中复制因子改为2
dfs.replication

Linux中执行
hadoop fs -setrep 2 /

文件系统检查点已有 3 天,3 小时,42 分钟。占配置检查点期限 1 小时的 7,570.06%。 临界阈值:400.00%。 自上个文件系统检查点以来已发生 26,228 个事务。这是 1,000,000 的已配置检查点事务目标的 2.62%。

解决方法:
1、namenode的Cluster ID 与 secondnamenode的Cluster ID 不一致,对比/dfs/nn/current/VERSION 和/dfs/snn/current/VERSION中的Cluster ID 来确认,如果不一致改成一致后重启应该可以解决。

2、修改之后还出现这个状况,查看secondnamenode 日志,报
ERROR: Exception in doCheckpoint java.io.IOException: Inconsistent checkpoint field
这个错误,直接删除 /dfs/snn/current/下所有文件,重启snn节点

群集中有 7 个 丢失块 块。群集中共有 160,276 个块。百分比 丢失块: 0.00%。 临界阈值:任意。
解决方法:修改下面内容
这里写图片描述

三、oozie错误

在安装oozie时发现:
Failed to create Oozie database.
日志错误信息:

Failed to create Oozie database.
日志错误信息:
Error: DB schema exists

Stack trace for the error was (for debug purposes):
--------------------------------------
java.lang.Exception: DB schema exists
	at org.apache.oozie.tools.OozieDBCLI.validateDBSchema(OozieDBCLI.java:877)
	at org.apache.oozie.tools.OozieDBCLI.createDB(OozieDBCLI.java:184)
	at org.apache.oozie.tools.OozieDBCLI.run(OozieDBCLI.java:127)
	at org.apache.oozie.tools.OozieDBCLI.main(OozieDBCLI.java:78)

进行如下操作后并重试,
rm -rf /var/lib/oozie/*

oozie创建表出问题

把mysql-connector-java-5.1.34-bin.jar 拷到/opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/oozie/lib和 /var/lib/oozie/下

oozie服务启动失败

通常是第二次尝试安装中才会遇到,报错内容大概是数据库已存在。

解决方法:删除/var/lib/oozie/data文件夹即可。

四、Kafka错误

添加kafka服务

下载地址
http://archive.cloudera.com/kafka/parcels/

安装参考
http://www.cnblogs.com/jechedo/p/5122531.html

Cdh和kafka兼容版本
https://www.cloudera.com/documentation/enterprise/properties/5-8-x/topics/cm_props_cdh510_kafka.html

http://archive.cloudera.com/kafka/parcels/1.4.0.56/

http://archive.cloudera.com/csds/kafka/

2017-05-14 16:05:43,221 FATAL kafka.Kafka$: 
java.lang.IllegalArgumentException: requirement failed: Missing required property 'broker.id'
	at scala.Predef$.require(Predef.scala:233)
	at kafka.utils.VerifiableProperties.getIntInRange(VerifiableProperties.scala:47)
	at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:75)
	at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:31)
	at kafka.Kafka$.main(Kafka.scala:35)
	at kafka.Kafka.main(Kafka.scala)

五、Hbase错误

CDH 启动hbase时出现HMaster Aborted错误
启动hbase时出现

java.lang.RuntimeException: HMaster Aborted
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:194)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:135)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2829)

因为在CDH时重新添加删除HBASE导致的,需要清理zk中的hbase缓存

将zk的/hbase删除即可

[root@hadoop11 supdev]# zookeeper-client -server localhost:2181
[zk: localhost:2181(CONNECTED) 1] rmr /hbase

六、Yarn和CM错误

报错信息:

Error found before invoking supervisord: dictionary update sequence element #78 has length1; 2 is required

这个错误是CM的一个bug,解决方法为修改/opt/cm-5.3.0/lib64/cmf/agent/src/cmf/util.py文件。将其中的代码:

 pipe = subprocess.Popen(['/bin/bash', '-c', ". %s; %s; env" % (path, command)],
                            stdout=subprocess.PIPE, env=caller_env)

修改为:

pipe = subprocess.Popen(['/bin/bash', '-c', ". %s; %s; env | grep -v { | grep -v }" % (path, command)],
                            stdout=subprocess.PIPE, env=caller_env)

用Apache的spark调用 cdh的yarnHA会出问题,去掉HA配置就会好了,问题是:

java.lang.IllegalArgumentException: Invalid ContainerId: container_e02_1483668670771_0005_02_000001

###七、维护及添加服务
添加服务
这里写图片描述

监控开放
这里写图片描述

八、Spark

问题:

spark-shell执行命令出现以下错误提示:

**问题:**
java.io.IOException: Cannot run program "/etc/hadoop/conf.cloudera.yarn/topology.py" (in directory "/export/servers/cloudera/parcels/SPARK2-2.1.0.cloudera3-1.cdh5.13.3.p0.569822/lib/spark2/bin"): error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
	at org.apache.hadoop.util.Shell.runCommand(Shell.java:551)

解决:
这个算是Cloudera 的bug , 把datanode上的 /etc/hadoop/conf.cloudera.yarn/topology* 复制到执行spark-shell的机器上即可。

九、其他错误

访问Cloudera Manager出现“无法发出查询:对 Service Monitor 的请求超时”。

一般是没有问题的,可能服务器较卡导致的,多刷新几次即可。

遇到 /opt/cm-5.4.3/etc/init.d/cloudera-scm-agent启动不了

可以 ps -ef | grep agent看看,把启动的agent服务关了

遇到 /opt/cm-5.4.3/etc/init.d/cloudera-scm-server启动不了

可以 ps -ef | grep server看看,把启动的server服务关了

若要删除cm目录,而删除不了,可以用一下方法

df -h 查看cm后台进程,用umount 进程名 ,删除再试试

若出现数据库连接出问题

1)可以看看是否创建了相应的数据库

2)可能是master主机下的root用户在mysql数据库的密码为空

登陆mysql,use mysql;

  update User set password=‘xxxx’where hostname=‘master’and user=‘root’;

  commit;

  flush privileges;

**注意master要免密码登录自己 **

8888,50070,8088等端口无法访问

现象:master机器通过wget可以正确的得到页面,但是外网却无法获取,而且网络的设置是正确的。

查看端口占用发现这些端口全部绑定在内网IP上而不是0.0.0.0。

解决方法:去各自的配置文件中配置即可,选择绑定至0.0.0.0端口,然后重启即可。

HUE服务启动失败

报错信息是找不到libxslt.so.1。

解决方法:yum install libxslt即可。

应用 spark的HiveContext 时,如果没有配置Hive服务以及和spark的依赖关系,则 HiveContext 会用derby 数据库,造成不能同时有两个应用运行。通过配置以MySQL为元数据库的Hive后,此问题不复存在。
具体问题见下:

Caused by: ERROR XSDB6: Another instance ofDerbymay have already booted the database ~~~~

**为了能让 nodemanager机器上也能启动yarn任务,需在yarn-site.xml 中配置 **

<property><name>yarn.resourcemanager.address</name><value>XXX:8032</value></property>
<property><name>yarn.resourcemanager.scheduler.address</name><value>XXX:8030</value></property>
<property><name>yarn.resourcemanager.resource-tracker.address</name><value>XXX:8031</value></property>
<property><name>yarn.resourcemanager.hostname</name><value>XXX</value></property>
<property><name>yarn.resourcemanager.admin.address</name><value>XXX:8033</value></property>

十、日志路径维护

在Cloudera Manager上收到报警信息如下:
在这里插入图片描述
解决方案:

修改集群中hive、yarn、spark的配置,搜索包含/var、/tmp或/yarn的配置项,以下以Hive为例【换成空间较大的路径】
在这里插入图片描述
在这里插入图片描述

十一、Cloudera Management Service角色迁移

第一步:停止所有角色
第二步:停止Cloudera Management Service角色
第三步:删除Cloudera Management Service服务器
第四部:添加Cloudera Management Service服务器
备注:
1)Activity monitor角色需要依赖mysql
2)Service Monitor角色【不】需要依赖mysql
3)Host Monitor 角色【不】需要依赖mysql
4) Event Server角色【不】需要依赖mysql
5)Alert Publisher 角色【不】需要依赖mysql

       如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!!!

展开阅读全文

没有更多推荐了,返回首页