CDH6.3.1安装遇到很多问题,我想主要是由于条件有限,毕竟自己的电脑内存不如专业集群的内存大(如果是内存和硬盘充足,有些是可以避免的,甚至不会出现报错的情况),这里就介绍一下我用VMware安装的虚机中搭建CDH集群的辛酸历程。为了避免多次、重复安装不成功,所以需要具备以下条件:
1. 内存要足够大
我的电脑内存是8G:
使用虚拟机安装Cloudare server:4GCloudare agent:分别为1G电脑最后很卡,而且内存98%。官方推荐最小内存为10G,所以最好还是听从官方的建议。
2. 安装的系统Centos7.7,这里我就不写VMware安装centos的操作步骤了。
3. ClouderaManager介绍:
3.1 ClouderaManager的概念
简单来说,Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。
3.2 ClouderaManager的功能
1) 管理:对集群进行管理,如添加、删除节点等操作。
2) 监控:监控集群的健康情况,对设置的各种指标和系统运行情况进行全面监控。
3) 诊断:对集群出现的问题进行诊断,对出现的问题给出建议解决方案。
4) 集成:多组件进行整合。
1.1 安装前准备
1.1.1 网络配置【所有节点】
修改hostname
在每个节点上执行hostname [主机名]
配置网络
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=cdh6 #【每个节点改成相应的hostname】
NETWORKING_IPV6=no
PEERNTP=no
保存退出
重启网络服务
service network restart
配置hosts(可用ifconfig查看ip)
vim /etc/hosts
192.168.244.168 cdh6
1.1.2 设置ssh免密登陆【所有节点】
生成无密码的密钥对
ssh-keygen -t rsa
一路回车
将公钥添加到本地认证文件中
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
设置authorized_keys的访问权限
chmod 600 /root/.ssh/authorized_keys
**以上步骤先在每个节点上先执行一遍,然后执行下面操作
将每个节点上生成的id_rsa.pub复制到其他所有节点并添加到它们的认证文件中
比如:manager上生成的id_rsa.pub,复制到node1和node2上
scp /root/.ssh/id_rsa.pub node1:/root/(manager上执行)
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys(在node1上执行)
scp /root/.ssh/id_rsa.pub node2:/root/(manager上执行)
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys(在node2上执行)
其余节点类似操作
验证是否配置免密登录成功:
ssh root@node2
1.1.3 安装Oracle的JDK【所有节点】
如果CentOS装有OpenJDK,卸载之,CDH6需要使用Oracle的JDK,我这里使用jdk 1.8。
卸载自带的OpenJDK
使用rpm -qa | grep java查询java相关的包
使用rpm -qa | grep openjdk | xargs rpm -e --nodeps卸载之
安装oracle jdk
rpm -ivh jdk-8u211-linux-x64.rpm
echo 'export JAVA_HOME=/usr/java/default'>>/etc/profile
source /etc/profile
1.1.4 关闭防火墙和SELinux 【所有节点】
注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
关闭防火墙
CentOS 7.0默认使用的是firewall作为防火墙
查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld
禁止firewall开机启动
systemctl disable firewalld
关闭SELINUX
setenforce 0 (临时生效)
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
1.1.5 安装配置MySQL5.7【主节点】
卸载已有的mysql-libs
rpm -qa | grep mysql rpm -qa | grep maria
rpm -e --nodeps 【包名】
上传tar.gz包到/usr/mysql
rz或者使用winscp工具
解压:
tar -zxvf mysql-5.7.28-linux-glibc2.5-x86_64.tar.gz
移动并重命名:
mv mysql-5.7.28-linux-glibc2.5-x86_64 mysql-5.7.28
创建mysql用户组和用户并修改权限
groupadd mysql useradd -r -g mysql mysql
创建数据目录并赋予权限
mkdir -p /home/mysql/data /#创建目录 chown mysql:mysql -R /home/mysql/data #赋予权限
配置my.cnf
vim /etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/mysql/mysql-5.7.28
datadir=/usr/mysql/data
socket=/tmp/mysql.sock
log-error=/usr/mysql/data/mysql.err
pid-file=/usr/mysql/data/mysql.pid
#character config character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
初始化数据库
进入mysql的bin目录
cd /usr/mysql/mysql-5.7.28/bin/
初始化
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/mysql/mysql-5.7.28/ --datadir=/usr/mysql/data/ --user=mysql --initialize
查看密码
cat /usr/mysql/data/mysql.err | more | grep password
启动mysql,并更改root 密码
先将mysql.server放置到/etc/init.d/mysql中
cp /usr/mysql/mysql-5.7.11/support-files/mysql.server /etc/init.d/mysql
#启动!!!
service mysql start
ps -ef|grep mysql
下面修改密码
首先登录mysql,前面的那个是随机生成的。
./mysql -u root -p #bin目录下
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
这时候你如果使用远程连接……你会发现你无法连接。(防火墙要关闭)
这里主要执行下面三个命令(先登录数据库)
use mysql #访问mysql库 update user set host = '%' where user = 'root'; #使root能再任何host访问 FLUSH PRIVILEGES;
如果不希望每次都到bin目录下使用mysql命令则执行以下命令
ln -s /usr/mysql/mysql-5.7.11/bin/mysql /usr/bin
mysql创建数据库cmf、amon
create database amon DEFAULT CHARACTER set utf8;
create database cmf DEFAULT CHARACTER set utf8;
grant all privileges on cmf.* to 'cmf'@'%' identified by '123456';
grant all privileges on amon.* to 'amon'@'%' identified by '123456';
flush privileges;
创建/usr/share/java目录
mkdir -p /usr/share/java
把mysql-connector-java的jar拷贝到该目录下:
cp mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar
设置开机启动
先将/usr/mysql/mysql-5.7.11/support-files/ 文件夹下的mysql.server文件复制到 /etc/rc.d/init.d/ 目录下mysqld
命令:
cp /usr/mysql/mysql-5.7.11/support-files/mysql.server /etc/rc.d/init.d/mysqld
赋予可执行权限:
chmod +x /etc/rc.d/init.d/mysqld
开机启动:
chkconfig mysqld on
查看服务列表:
chkconfig --list
看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下:chkconfig --level 345 mysqld on
1.1.6 配置NTP(Network Time Protocol)服务【所有节点】
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下: master节点作为ntp服务器与外界对时中心同步时间,随后对所有slave节点提供时间同步服务。所有slave节点以master节点为基础同步时间。
1.2 安装Cloudera Manager
1.2.1 解压cloudera manager
上传cm文件到/opt
其中manager节点(既有server又有agent):
Server需要安装的:
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
安装rpm包,不安装依赖:
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
修改文件:
cd /etc/cloudera-scm-server/ vim db.properties
注意:com.cloudera.cmf.db.setupType一定要改成EXTERNAL,这是一个坑。
查看日志:cd /var/log/cloudera-scm-server/
启动cloudera-scm-server:
service cloudera-scm-server start
查看日志:cd /var/log/cloudera-scm-server/
tail –f cloudera-scm-server.log
初始化数据,大概需要1~2分钟,出现7180端口皆大欢喜:
访问780的web界面:到这里,先不要动!!!!!!!!!!
修改/etc/cloudera-scm-agent/config.ini
vim config.ini
启动cloudera-scm-agent:
service cloudera-scm-agent start
node1、node2节点:
Agent需要安装的:
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
安装rpm包,不安装依赖:
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
修改/etc/cloudera-scm-agent/config.ini
vim config.ini
安装httpd服务
yum install httpd -y service httpd start mkdir -p /var/www/html/cdh6_parcel/
mv /opt/cdh6.3.2+cm6.3.1/cdh6/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel /var/www/html/cdh6_parcel/
mv /opt/cdh6.3.2+cm6.3.1/cdh6/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 /var/www/html/cdh6_parcel/
mv /opt/cdh6.3.2+cm6.3.1/cdh6/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
mv /opt/cdh6.3.2+cm6.3.1/cdh6/manifest.json /var/www/html/cdh6_parcel/
访问:http://192.168.244.168/cdh6_parcel/
点击“更多选项”,远程parcel存储库URL这里删除的只剩一条,把刚才我们创建的http地址添加进去
这里注意:http://manager/cdh6_parcel/不是https://manager/cdh6_parcel/,
1. Cloudera 建议将 /proc/sys/vm/swappiness 设置为 10。当前设置为 30。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机由于交换运行状况不佳。以下主机受到影响:
解决办法:
三台节点上运行:echo 'vm.swappiness=10'>> /etc/sysctl.conf
立即生效:sysctl –p
2. 已启用透明大页面压缩,可能会导致重大性能问题
三台节点分别执行:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
然后,点击重新运行:
再次查看“显示检查器结果”,如下图:这里的这个先不用管,忽略即可
我们选择下图红色框内的(我已经了解了,让我继续安装吧),继续安装
点击继续,选择要安装的服务,自定义服务:自己决定安装什么,比如安装:HDFS,勾选上就行
自定义服务分配
数据库设置:
1. 因为内存少,所以会遇到下面问题:
command aborted because of exception:Command timed-out after 90 seconds hdfs/hdfs.sh ["mkdir","/tmp","hdfs","superfgroup","1777"]
上面的命令超时。
解决办法:
再次重试,就可以通过了。
假如遇到其他问题,可以通过角色日志查看问题原因。
2. CDH部署集群报错:fail to format namenode
手动格式化namenode
问题原因
是由于之前初始化 namenode 在 /dfs/nn 留下了残留数据(失效数据),从而影响再次初始化
解决方法
清空残留数据后,重新初始化
namenode节点: rm -rf /dfs/nn datanode节点: rm -rf /dfs/dn
由于我的只是namenode节点有问题,所以只需:rm -rf /dfs/nn
最终运行全部通过
点击完成即可。
CloudareManager界面:
安装完CDH就可以安装其他组件了,比如impala、kudu、Kafka等,以后会更新其他组件相关内容,敬请期待!