Cloudera Manager搭建集群环境过程中部分错误解决

时间:2021-06-24 15:12:51

Cloudera Manager搭建集群环境过程中部分错误解决

前一阵子在公司的几台测试机上搭建cdh的集群环境,过程中遇见了不少问题,这里记录一下:

一、版本信息:

版本 安装方式
服务器 5台(1master, 4slave) * CentOS Linux release 7.3.1611 (Core) \
Cloudera Manager Cloudera Express 5.7.4 .parcel 文件离线安装
Java jdk 1.8.0_60 .tar.gz 二进制文件解压安装
MySQL mysql 5.7.17 .tar.gz 二进制文件解压安装
NTP ntp-4.2.6p5 yum安装

二、安装过程

参考网上的教程,这里不复制粘贴了,给出几个链接参考一下:
https://blog.csdn.net/myself_way/article/details/54864651
https://blog.csdn.net/a921122/article/details/51939692
https://blog.csdn.net/mao_2110901055/article/details/65629532
https://blog.csdn.net/it_taojingzhan/article/details/51537258

这里说一下,有些教程上会说要修改/etc/sysconfig/network这个文件,但是我这里是没有修改的,只在/etc/hosts文件中配置了主机名和ip的映射。其实一开始也编辑了network文件,在里面修改了主机名,但是导致一台测试机上的gitlab无法使用,于是5台上就都不再修改network文件了,所以关于网络配置这块还是要看自己的情况具体配置,多尝试吧(做为一只linux菜鸟,其实某些配置为什么要配我也不是很清楚(..•˘_˘•..),各种教程里说的也不一样…)。

三、错误问题

由于这篇文章是安装过后一阵子写的,所以当时有些错误自己并没有截图,以下部分截图来自其他博客

1、安装时错误

1. 分发parcels到各个节点时,进度卡住,查看日志,client_configs.py文件报错

问题描述:参考链接贴上,错误就不复制粘贴了:https://www.jianshu.com/p/0d70a67b66b2http://www.aboutyun.com/thread-21557-1-1.html,具体报错文件是client_configs.py,详细路径在路径里有记录,我的路径为/opt/cm-5.7.4/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.7.4-py2.7.egg/cmf/client_configs.py,
解决方案:备份一下原文件,正确的文件我上传了,这里可以下载:https://download.csdn.net/download/sy793314598/10424485

2. 安装界面中,安装到spark时报错,spark安装找不到JAVA_HOME

Cloudera Manager搭建集群环境过程中部分错误解决
问题描述:在安装界面中点开那些下拉箭头,直接可以打开并查看对应的日志信息,日志信息里的报错信息很明确,如下:
Error: JAVA_HOME is not set and could not be found.
java的环境变量没有找到,这就很奇怪了,明明配置了,再检查一下:
echo $JAVA_HOME,输出/usr/lib/java/jdk1.8.0_60,没问题啊,于是开始利用搜索引擎,大致是说spark在安装的时候不会去你主机上配置的JAVA_HOME里去找jdk的环境变量,而是遵循它自己的一个默认路径,所以如果刚好你配置jdk环境变量是它的默认寻找路径,那就不会报这个错,那现在怎么解决呢,难不成要移动jdk的安装路径,这就太繁琐了。这里在网上也找到了这个问题,参考链接:https://my.oschina.net/cjun/blog/698250,文章里面说是用建立软连接的方式,我尝试了一下,不知道是对这个概念理解的不太对还是哪里搞错了,并没有解决,但是文章里提供了一个cloudera官网论坛的地址,https://community.cloudera.com/t5/Cloudera-Manager-Installation/Deploy-Client-Configuration-failed-HDFS-YARN/td-p/30089(需要*)这里面提供了最方便的解决方式。
解决方案:spark安装找不到JAVA_HOME,在cdh管理界面中手动指定jdk的安装路径即可,截图如下:
Cloudera Manager搭建集群环境过程中部分错误解决
在右上角的搜索框里搜索,找到Java主目录的设置项,在里面添加自己机器上的JAVA_HOME:
Cloudera Manager搭建集群环境过程中部分错误解决
保存即可。如果是在安装过程中,建议使用浏览器的在新建标签中打开页面进行设置,免得回不到安装界面。。。
这里设置完以后点击重试,会发现之前的错误没了,而换了另一个错误,这个就没有截图了。。解决方案还是在上面的链接里,再完成一部操作即可,编辑机器中的/etc/sudoers文件,在root ALL=(ALL) ALL 这一行的下一行,加入cloudera-scm ALL=(ALL) NOPASSWD: ALL,每台机器都加了,如下:
Cloudera Manager搭建集群环境过程中部分错误解决
再次点击重试,spark成功安装~

2、在安装成功后,管理界面中的错误

1. DNS解析错误的问题

问题描述:安装成功后,有一台机器一直报DNS解析错误,同时主机名称显示为localhost.localdomain,但是查看/etc/hosts文件,发现配置并没有错:
Cloudera Manager搭建集群环境过程中部分错误解决
但是这台机器的主机名在cdh的管理界面中就是显示不正确。
解决方案:这里涉及到的问题其实是centos系统的多个类型的主机名问题,centos中一共有3个类型的主机名:静态的(static)、瞬态的(transient)、灵活的(pretty),使用hostnamectl命令可以查看机器的主机名信息,在正常的机器上查看:
Cloudera Manager搭建集群环境过程中部分错误解决
而在那台主机名显示错误的机器上查看,是没有Transient hostname:这一项的,这个可能是同事进行了什么设置,导致这台没有瞬态主机名,于是cdh中直接读取了static hostname(静态主机名是在/etc/hostname配置的),所以显示为localhost.localdomain,所以这里可以使用hostnamectl --transient set-hostname <host-name>命令再次设置一下该台机器的主机名,然后重启这台节点的cdh服务,等待一会,就会发现管理界面中的所有节点都可以正常解析了。
关于centos中设置主机名,可以参考几个链接:https://blog.csdn.net/summer_huan/article/details/76104611http://www.361way.com/centos7-hostnamectl/3816.html

2. hive建表失败问题

问题描述:在安装前的准备工作中,有一步是在mysql中新建了一个hive数据库,但是在安装完后,发现hive数据库中并没有任何表,此时cdh的管理界面中存在的几个错误包括:
1. This Impala Daemon is not connected to its StateStore…
2. Fail to Inspect Monitor Host…
按照这些错误去搜索引擎里查,并没有得出什么好的解决方案,点开hive的错误日志,发现几个主要的错误如下:
1. org.datanucleus.store.rdbms.exceptions.MissingTableException: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"
2. Required table missing : "DBS" in Catalog "" Schema ""...
从错误信息看还是比较明显,就是找不到需要的数据表,同时提示了可以尝试开启autoCreateTables属性,于是参考:https://blog.csdn.net/nevergiveup54/article/details/50612252 也进行了相应的设置,但是还是没有效果。
解决方案:这个问题到最后才发现是个很stupid的问题,在整个安装过程执行完毕后,cdh的hive的配置里指向的数据库是cm,而不是之前创建好的hive库,这里不知道是不是在之前的安装过程中遗漏了什么设置的地方,冏,将配置里的数据库手动改成hive即可:
Cloudera Manager搭建集群环境过程中部分错误解决
Cloudera Manager搭建集群环境过程中部分错误解决
然后可以在管理界面中直接点击重新创建hive的数据表:
Cloudera Manager搭建集群环境过程中部分错误解决
建表成功,等待一小会,就发现上面的几个错误就都消失了,可见一个错误引起了多个不同的错误。

3. 时间不同步问题

这个问题比较好解决,仔细检查安装前是否在全部机器上都安装并开启了ntp时间同步服务,并确保配置正确
注:ntp服务需要集群中的每台机器都开启

4. 重装问题

安装过程中因为一些原因,经历了删除重装的过程,重装的过程中有遇到了两个错误,日志里的报错提示比较清晰,大概是file already exist之类的,记不太清了。。。就是原来的一些文件没有被清理干净,这个删掉就好了,问题不大。

四、tips

1. 使用hadoop api操作hdfs时连接的端口号问题

如果单独安装apache hadoop,hdfs的namenode服务的端口号默认是9000,而cdh的namenode服务默认的端口号是8022
Cloudera Manager搭建集群环境过程中部分错误解决

2. cdh集成的hadoop的HADOOP_HOME问题

官方论坛上的答案:With CDH4 and CDH5 there’s no longer a ‘HADOOP_HOME’ env-var. It has been instead renamed to ‘HADOOP_PREFIX’, which for a default parcel environment can be set to /opt/cloudera/parcels/CDH/lib/hadoop.
参考链接:http://community.cloudera.com/t5/Cloudera-Manager-Installation/Where-is-HADOOP-HOME-lib-on-CDH-5-0-1-Parcels/td-p/13748

3. 集群的配置更改后生效时间问题

由于网络、电脑配置或者一些其他的原因,当调整某些错误时,比如前面出现的ntp时间同步问题,在正确启动了ntp服务后,可能cdh的界面中还是会报红色的错误,这个可能是因为生效有延迟,不要一定认为是解决方案不对,可以稍等一会,再看看错误会不会消失。

4. 其他

对于有些报错,比如上面hive建表失败的问题,一个错误可能会带来许多其他的错误,而直接去搜索那些错误,网上的解决方案可能并不一定是你的问题所在,所以关键还是要找到那个最基本的错误。