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