CDH5.15搭建四之四(微播易公司搭建手册-踩坑部分)

1. 安装踩坑记

1.1. 安装kudu踩坑:NTP对时问题

Kudu在启动时,要求ntp对时,但不是被动的对时,而是kudu主动对时。之前系统搭建时候采用的对时策略是:一个主服务81链接ntp服务器,并且自己作为二级ntp服务器;82-84作为客户端,在定时操作中使用ntp指令向81对时。
问题在于82-84是定时对时,没办法在kudu软件中由它主动完成,而是被动接受系统时间,这样的配置在kudu中不行,因此改为新策略:81-84全部改为原81的策略,kudu验证通过。

1.2. 安装Kafka踩坑:报错Java heap space

安装后启动报错Java heap space (如下图)
这里写图片描述
需要修改Java内存,默认50M,这点很奇怪,安装过程中没提示让设置内存,结果执行完安装后无法启动
进入kafka选“配置”,
这里写图片描述
找到Java Heap Size 改为260M(根据服务器配置改参数)
最后保存,控制台重启kafka就可以了。

1.3. 调试Oozie-spark踩坑:job死等

集群在提交oozie-spark的sparkPi程序的时候,出现死等待,一直执行不完,经分析是集群资源不多,而程序要求资源多。
去掉提交参数–num-executors 3 –driver-memory 1g –executor-memory 1g
修改yarn的参数ResourceManager Default Group->资源管理,将集群的内存改为9G即可(虚拟机资源太可怜了)。
这里写图片描述
这里写图片描述

1.4. 误删系统文件: /etc/security/limits.conf

在计算引擎的shuffle等阶段会有大量的小文件进行merge操作,为了最大的使用系统集群资源,需要将原有句柄数目改大,以支持大量的文件读取。
在执行文件句柄数修改的时候,使用了如下的错误操作方式:
1. 所有集群节点执行:mv /etc/security/limits.conf /etc/security/limits.conf.bak
2. 第一台节点执行:
cp /etc/security/limits.conf.bak /etc/security/limits.conf
vim /etc/security/limits.conf
3. 使用scp远程分发
但是scp指令是远程指令,系统要读取limits.conf文件的资源限制参数,以确定是否可以使用scp,在没有此文件的情况下,系统无法scp,也无法远程登陆。
修复方法:
系统装了Saltstack客户端,请运维处理。
注意:修改limits.conf这类限制资源使用的文件,一定要备份配置文件,并进行测试,最好能多开一个终端,在当前终端不可使用的时候,用来执行补救措施。否则可能所有远程连不上,就要去机房了。

1.5. Hive的连接报错:User root is not allowed to impersonate anonymous

在HDFS组件中,修改hadoop 配置文件 etc/hadoop/core-site.xml,加入如下配置项
hadoop.proxyuser.root.hosts=*
hadoop.proxyuser.root.groups=*
这里写图片描述
hadoop.proxyuser.root.hosts配置项名称中root部分为报错User:* 中的用户名部分,例如User: yyh is not allowed to impersonate anonymous则需要将xml变更为如下格式
hadoop.proxyuser.yyh.hosts=*
hadoop.proxyuser.yyh.groups=*
重启hadoop即可。

1.6. Hive建表报错:Column length too big for column

Hive创建表报错查看日志
Datastore.Schema (Log4JLogger.java:error(115)) - An exception was thrown while adding/validating class(es) : Column length too big for column ‘PARAM_VALUE’ (max = 21845); use BLOB or TEXT instead
最后定位到mysql的数据格式不正确,这里选择修改原有的mysql的数据库的编码形式。
这里写图片描述

1.7. Hive增加角色出错:hive is not allowed to add roles

参考:https://blog.csdn.net/paulfrank_zhang/article/details/80983933
首先,先在hive-site中添加:
hive.users.in.admin.role=hive
然后再用beline登陆
设置角色
0: jdbc:hive2://node04:10000> set role admin;
0: jdbc:hive2://node04:10000> show current roles;

1.8. 初始化数据库错误:password does not satisfy

在这个环节,出现的问题较多,但总的来说,是与数据库参数配置,和帐号权限配置有关。
如在执行scm_prepare_database.sh脚本时,出现的错误:
java.sql.SQLException: Your password does not satisfy the current policy requirements
一般是由密码策略级别问题引发(mysql5.7就是严谨):
可以通过 my.cnf 配置文件关闭 validate_password 插件。
通过修改/etc/my.cnf 目录下配置文件,修改设置密码策略的级别,只需要在[mysqld]下添加一行 validate_password = off
如图所示:
这里写图片描述
编辑完配置文件后,重启mysqld服务即可生效。

1.9. 集群安装:主机运行状态不良

这里写图片描述
遇到节点“主机运行状态不良”的提示,解决办法是删除故障节点Agent服务cm_guid文件:
rm -rf /opt/cm-5.15.0/lib/cloudera-scm-agent/cm_guid
重新启动故障节点Agent服务:

/opt/cm-5.15.0/etc/init.d/cloudera-scm-agent restart

重启故障节点Agent服务后,故障消失:
注:出现故障原因是,因为我之前在故障节点启动过cloudera-scm-agent服务。
这里写图片描述

1.10. hostname下划线问题:agent起不来

1.10.1. 参考文章:

https://www.jianshu.com/p/ba527bc43398
https://bbs.csdn.net/topics/392280696

1.10.2. 改动

现象描述:
启动agent

[[email protected]_master-194 yuanyihan]# /opt/cm-5.15.0/etc/init.d/cloudera-scm-agent start
Starting cloudera-scm-agent: [ OK ]
[[email protected]_master-194 yuanyihan]# /opt/cm-5.15.0/etc/init.d/cloudera-scm-agent status
cloudera-scm-agent is stopped

这里写图片描述
而日志报错基本没啥有用信息
经过查阅资料,发现是hostname中不能有下划线
修改如下:
194节点

[[email protected]_master-194 yuanyihan]# hostnamectl set-hostname prd-pg-cdh-mysql-master-194

195节点

[[email protected]_slave-195 yuanyihan]# hostnamectl set-hostname prd-pg-cdh-mysql-slave-195

然后是hosts,配置文件等一系列的改变。为了便于修改,现在checklist如下:

NO. 项目 修改内容 备注
1 所有 Hosts 修改
2 所有agaent /opt/cm-5.15.0/etc/cloudera-scm-agent/config.ini 使用ip
3 mysql主备配置文件 如果用到hostname代替ip的话改 本次是ip
4 之前配置的数据库设置 注释掉:create_user_and_database 坑中坑

然后是删除故障节点agent服务cm_guid文件:

rm -rf /opt/cm-5.15.0/lib/cloudera-scm-agent/cm_guid

重新启动Agent服务:

/opt/cm-5.15.0/etc/init.d/cloudera-scm-agent restart

重启故障节点Agent服务后,故障消失

1.10.3. 坑中坑: /opt/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh

我们首先捋一下安装过程:
1 通过

/opt/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh mysql -h prd-pg-cdh-mysql-master-194 -uroot -proot –scm-host prd-pg-cdh-mysql-master-194 scm scm scm

设置数据库
2 发现hostname有bug,修改了hostname
3 重启服务器,发现server起不来
问题:现在数据库中已经有了有用的数据,不能删除,但是原来的设置数据库又和现有hostname不匹配,只能做如下处理:设置关于数据库的配置,但是不初始化数据库
那么如何实现呢?
答:

首先,注释掉scm_prepare_database.sh里面的create_user_and_database(这是创建数据库的)

vim /opt/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh

然后执行配置

/opt/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh mysql -h prd-pg-cdh-mysql-master-194 -uroot -proot –scm-host prd-pg-cdh-mysql-master-194 scm scm scm

然后,再将scm_prepare_database.sh改回去

1.11. HUE:loadbalancer启动失败

cloudera-scm-agent/process/169-hue-HUE_LOAD_BALANCER/httpd.conf: Cannot load /usr/lib64/httpd/modules/mod_ssl.so into server: /usr/lib64/httpd/modules/mod_ssl.so: cannot open shared object file: No such file or directory
日志中可以清楚的看到是缺少mod_ssl.so,

安装依赖包中,官方没有说装mod_ssl,安装即可

yum -y install mod_ssl

1.12. 服务器错误:javax.persistence.PersistenceException

这里写图片描述
最后发现这其实是hostname下划线问题问题的坑中坑,也就是scm_prepare_database.sh不匹配的问题。

1.13. 安装Spark2踩坑:无用客户端用于配置

在执行spark-shell的时候,hdfs的操作需要操作权限:
Caused by: org.apache.hadoop.ipc.RemoteException: Permission denied: user=root, access=WRITE, inode=”/user”:hdfs:supergroup:drwxr-xr-x
这里的措施是:在所有的spark-env.sh中添加
这里写图片描述
但是问题是:spark只有1个角色,所以处理的措施是:建立角色,虽然没用,但是要有,因为是客户端
这里写图片描述

1.14. Mysql安装服务时报错:libaio.so.1()(64bit) is needed

报错详情如下:

[[email protected] upload]# rpm -ivh MySQL-server-5.5.25a-1.rhel5.x86_64.rpm
error: Failed dependencies:
libaio.so.1()(64bit) is needed by MySQL-server-5.5.25a-1.rhel5.x86_64
libaio.so.1(LIBAIO_0.1)(64bit) is needed by MySQL-server-5.5.25a-1.rhel5.x86_64
libaio.so.1(LIBAIO_0.4)(64bit) is needed by MySQL-server-5.5.25a-1.rhel5.x86_64

这个报错一般出现在阿里云或腾讯云安装CDH上面,解决办法很简单,安装即可

yum install libaio


好了,文章分节上传如下:亲测可用,如果有问题,联系18192015917(叫我:涵哥,白哥,帅哥。。都行)

之一:概要

之二:基础

之三:组件

之四:踩坑