当前位置: 代码迷 >> 综合 >> CDH6.0.1
  详细解决方案

CDH6.0.1

热度:2   发布时间:2024-02-06 07:17:59.0

1. 设置机器名(所有节点)

hostnamectl set-hostname test-hadoop1vim /etc/hosts #修改ip与主机名的对应关系10.14.91.10 test-hadoop1  #主节点
10.14.91.11 test-hadoop2  #从节点
10.14.91.12 test-hadoop3  #从节点

2.ssh免登陆

在主节点上执行 ssh-keygen -t rsa 一路回车,生成无密码的密钥对。
将公钥添加到认证文件中: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ,并设置authorized_keys的访问权限:  。
scp~/.ssh/authorized_keys到所有datenode节点:
scp ~/.ssh/authorized_keys root@n2:~/.ssh/

3.主节点安装mysql和 所有节点安装JDK

1)在线安装 yum install mysql-server 比较方便
2)我使用的是rpm安装
将下载的mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar 上传到我们的centos系统中
然后运行解压命令:tar -xf mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar
由于CentOs7之后会在系统中自带一个免费的数据库:mariadb,并且它的驱动和mysql的驱动是有冲突的,所以我们必须先要卸载他
首先用rpm命令查看一下是否有mariadb和mysql,如果有先将其卸载。

rpm -qa | grep -i mariadb
rpm -qa | grep -i mysql

然后我们用rpm命令删除这个版本的mariadb

rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64

由于mysql的server端需要perl语言的支持,因此我们还需要在系统中安装perl支持:

yum install perl -y
yum -y install libaio

由于我们上面解压出来的几个rpm包有依赖关系,所以我们需要按照顺序执行安装:

rpm -ivh mysql-community-common-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm

有可能错误:依赖检测失败:
net-tools 被 mysql-community-server-5.7.24-1.el7.x86_64 需要
解决办法:yum install net-tools -y
安装完后启动:systemctl start mysqld.service

我们在启动了mysql之后,这个时候等待一段时间,数据库需要进行初始化,这个时候我们可以看一下数据库的日志,会发现mysql帮我们初始化了一个root用户:

cat /var/log/mysqld.log  | grep password 

里面会有mysql root用户的登录密码
然后可以用下面的命令修改登录密码

mysql -u root -p’密码’
接着输入`mysql>SET PASSWORD = PASSWORD(' yqxt20190720');`

注意:这里只需主节点安装即可,这里主节点是10.14.91.10 test-hadoop1 这台机器
jdk安装步骤可参照https://www.cnblogs.com/shihaiming/p/5809553.html

4.关闭防火墙和SELinux

关闭防火墙:
service iptables stop (临时关闭)  
chkconfig iptables off (重启后生效)
关闭SELINUX(实际安装过程中发现没有关闭也是可以的,不知道会不会有问题,还需进一步进行验证):
setenforce 0 (临时生效)  本人测试不关闭也行,但网上有人说要关,大家自行测试
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)	

Centos7
关闭防火墙

systemctl stop firewalld.service            #停止firewall
systemctl disable firewalld.service        #禁止firewall开机启动

5.所有节点配置NTP服务

首先是安装 ntp 服务, 我们的操作系统是 Centos7 , 使用 rpm 管理。首先,查看下我们是否已经安装了该服务

rpm –qa | grep ntp

若只有ntpdate而未见ntp,则需删除原有ntpdate。如:
ntpdate-4.2.6p5-22.el7_0.x86_64
fontpackages-filesystem-1.44-8.el7.noarch
python-ntplib-0.3.2-1.el7.noarch
删除已安装ntp

yum –y remove ntpdate-4.2.6p5-22.el7.x86_64

重新安装ntp(所有节点)

yum –y install ntp

主节点操作:

systemctl start ntpd   #启动ntp服务
systemctl enable ntpd  #设置为开机自启

由于华为云对ntp服务有一些优化,实际测试中,主节点已经指向了一个华为云内网的时间同步服务器,所以主节点只需安装服务和启动服务,无需其他操作,只需到从节点修改配置文件,将服务器指向主节点即可
所有从节点操作:

[root@test-hadoop2 ~]# vim /etc/ntp.conf

将server ntp.myhuaweicloud.com iburst
改为 server 10.14.91.10 iburst
在这里插入图片描述
然后重启ntp服务器并设置开机自启

systemctl restart ntpd
systemctl enable ntpd

6.开始安装CDH

由于直接用yum安装cdh的包会非常的慢,要好几个小时,为了提高效率,节省时间,这里采用离线安装的方式,先将所需要的包用迅雷等软件下载好,再上传到服务器中,这样后续有机器加进集群中,因为是通过内网连接,速度提升很巨大!

1) 主节点启动httpd服务
这里我们需要借用httpd 在主节点搭建一个网络服务

yum -y install httpd
systemctl start httpd 
systemctl enable httpd

启动后,我们可以直接在浏览器中通过ip地址访问一下,看下服务是否启动正常: httpd 默认使用的就是 80端口
在这里插入图片描述
在浏览器输入外网ip地址能看到这个页面的话http服务就是成功了
httpd 有一定的公约,/var/www/html 是 httpd 的根目录,
假设我们 将文件放在 /var/www/html/cdh6/parcels/6.0.1 下,我们可以通过页面访问到 :
http://10.14.91.10/cdh6/parcels/6.0.1/

2)下载parcel包
这里我们需要从官网上下载对应系统的 parcel,在安装时候通过本地加速
6.0.1 版本的地址如下,
https://archive.cloudera.com/cdh6/6.0.1/parcels/
注意
manifest.json 与 sha256 校验文件最好一并下载
在这里插入图片描述
下载完成后,将CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel、CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha256、manifest.json这三个文件上传到主节点服务器的文件夹/var/www/html/cdh6/parcels/6.0.1中
此文件夹要先创建:

mkdir -p /var/www/html/cdh6/parcels/6.0.1

在这里插入图片描述
3) 下载cloudera-manager软件包,下载地址:https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/RPMS/x86_64/
在这里插入图片描述
将该目录下的rpm包全部下载。下载好后,我们将这些包放置在主节点的:
/var/www/html/yum/centos7/repo
目录提前要创建好

mkdir -p /var/www/html/yum/centos7/repo

在这里插入图片描述
然后我们要为下载的这些rpm,生成一个依赖关系。

cd /var/www/html/yum/centos7/repo
createrepo .

之后。会生成一个 repodata 文件夹
在这里插入图片描述
除此之外,我们还需要为源,编写 .repo 文件来描述我们的源。
首先,我们切换到主节点源的配置目录

cd /etc/yum.repos.d/

新建一个 localCDH.repo

[root@test-hadoop1]# vim localCDH.repo

内容如下:

[localCDHRepo]
name=local_CDH_Repo
baseurl=http://10.14.91.10/yum/centos7/repo/
enabled=true
gpgcheck=false

最后,我们执行下

[root@test-hadoop1]# yum makecache

更新本地缓存,这样就加载了我们新创建的源。
之后,我们把 localCDH.repo 的配置放到其他机器的 /etc/yum.repos.d/ 目录下,让其他机器也可以通过 httpd 访问到这些 rpm。
4)安装服务
由于已经将包提前下好放在了httpd的目录里,所以可以直接用yum来安装
主节点:安装cloudera-manager-daemons、cloudera-manager-agent、cloudera-manager-server

[root@test-hadoop1 ~]# yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

从节点:安装cloudera-manager-daemons、cloudera-manager-agent

[root@test-hadoop2 ~]# yum install cloudera-manager-daemons cloudera-manager-agent

最后建议把这些服务设置为 开机启动服务,方便管理。在集群重启的时候,可以不用担心服务的问题。
主节点:

[root@test-hadoop1 ~]# systemctl enable cloudera-scm-agent
[root@test-hadoop1 ~]# systemctl enable cloudera-scm-server

其他节点:

[root@test-hadoop2 ~]# systemctl enable cloudera-scm-agent

注意:这里先不要启动服务,只是先把他加进开机自启动里。

5)修改各节点的配置文件,包括主节点

[root@test-hadoop1 ~]# vim /etc/cloudera-scm-agent/config.ini

将server_host 修改为主节点的hostname或者是ip地址,上面的步骤做过ip地址和hostname对应关系的解析的,所以这里直接就填主节点的hostanme了(主节点和从节点都要改这个配置文件,ip都指向主节点的ip)

在这里插入图片描述
6)安装配置MySQL
主节点安装MySQL,MySQL安装参照2.3.2Mysql安装
安装完成后,登入MySQL,我们需要给 mysql 增加必要的用户,用于其他组件 将 mysql 作为源数据库
下面是cloudera manager官方文档给出的用户列表,依次创建
在这里插入图片描述
SQL命令:
创建相应用户
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

授权用户:
GRANT ALL ON scm.* TO ‘scm’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON amon.* TO ‘amon’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON rman.* TO ‘rman’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON hue.* TO ‘hue’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON metastore.* TO ‘metastore’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON sentry.* TO ‘sentry’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON nav.* TO ‘nav’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON navms.* TO ‘navms’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON oozie.* TO ‘oozie’@’%’ IDENTIFIED BY ‘123456’;
刷新权限:

FLUSH PRIVILEGES;

#给MySQL授权时会出现密码问题,可以执行如下命令

set global validate_password_policy=LOW;
set global validate_password_length=6;

除此以外,我们需要上传与MySQL连接的jar包(所有节点都需要执行)

[root@test-hadoop1 ~]# mkdir -p /usr/share/java/
[root@test-hadoop1 ~]#mv mysql-connector-java-8.0.15.jar /usr/share/java/mysql-connector-java.jar

在这里插入图片描述
7)初始化数据库,启动服务
由于这里我们用到了 cm 使用 mysql 作为源数据库,所以我们应该对 主节点的Mysql 进行初始化

[root@test-hadoop1 ~]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm 123456

该步骤做完之后,我们就可以启动 cm 了
主节点:

systemctl start cloudera-scm-server
systemctl  start  cloudera-scm-agent

从节点:

systemctl  start  cloudera-scm-agent

#在启动时有可能碰到The server time zone value ‘EDT’ is unrecognized异常,这是mysql的时区和系统的时区不匹配,可以参考如下网站解决
https://blog.csdn.net/u010003835/article/details/88974898

#查看日志

cd /var/log/cloudera-scm-server/
tail -f cloudera-scm-server.log

#出现如下7180即证明启动成功
WebServerImpl:org.mortbay.log: Started SelectChannelConnector@0.0.0.0:7180

8)

当service cloudera-scm-server start启动成功后,即可以在浏览器上输入ip+7180端口(需开放防火墙)。

账号和密码均为admin

在这里插入图片描述
点击继续
在这里插入图片描述
点击继续
在这里插入图片描述
选择免费,然后点继续
在这里插入图片描述
点击继续
在这里插入图片描述
在这里输入各节点的主机名称或者ip,用逗号隔开,然后选中点继续
在这里插入图片描述
注意:如果这里受管理的主机没有全部机器,得检查下第5步“修改各节点的配置文件,包括主节点”的操作有没有做,如果没有的话把配置文件全部都修改好,重启服务,如果有的话忽略这一步

systemctl restart cloudera-scm-server
systemctl  restart  cloudera-scm-agent

在这里插入图片描述
选择方法这里选择更多选项
在这里插入图片描述
删除多余的库,输入之前搭建的http的parcel存储库然后保存
在这里插入图片描述
数据库主机名称填写主节点的hostname
数据库类型选择MySQL
数据库名称依次是metastore、oozie、hue
密码为123456
然后点测试连接,无误后选择继续
在这里插入图片描述
审核更改这一栏配置使用默认配置,点继续
在这里插入图片描述
使用默认配置,点继续
在这里插入图片描述
选择所有服务
在这里插入图片描述
一路继续,完成安装
在这里插入图片描述
在这里插入图片描述
cdh常见问题详解:
1)、cdh环境安装后只有hdfs用户是supergroup组,每次操作要从root用户切换到hdfs用户,并且有的代码操作比如Bulk Load大量数据插入到hbase操作时会报错hbase用户权限不够,所以要把hbase用户也加到supergroup组内。索性把root和hbase用户都加入supergroup组,以后再遇到哪个用户权限不够再加

操作步骤如下:
1、在Linux执行如下命令增加supergroup

 groupadd supergroup

2、如将用户root增加到supergroup中,再执行:

  usermod -a -G supergroup root 

3、同步系统的权限信息到HDFS:

   su - hdfs -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"

2)运行日志在哪里 运行日志 所在目录:/var/log
下 cloudera 开头的都是 ,重要的是 cloudera-scm-server