安装环境及所需软件包
- CentOS Linux release 7.9.2009 (Server with GUI)
- Cloudera manager安装包
- cloudera-manager-centos7-cm5.14.2_x86_64.tar.gz
- CDH5.14.2.3安装包
- CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel
- CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha
- manifest.json
- MySQL安装包
- mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar
- MySQL jdbc驱动
- mysql-connector-java.tar.gz
- Oracle JDK
- jdk-8u201-linux-x64.rpm
Cloudera官方从2021年1月31日开始,所有Cloudera软件都需要有效的订阅,并且只能通过付费墙进行访问。为此网上很多教程使用的官方下载链接,目前访问都提示需要输入账号密码验证,而没有订阅Cloudera账户登录会提示403无权限。对于6.3.3之前的社区版也下载不了,只能找已经下载过的朋友拿安装包了~~~
环境准备
拟配置三台机器的hbase CDH集群,设计如下
机器名 | IP地址 |
---|---|
hbase1 | 192.168.1.100 |
hbase2 | 192.168.1.101 |
hbase3 | 192.168.1.102 |
集群内机器(所有节点),都需要执行以下操作。 |
1.修改网络配置和主机名
若安装Centos7
系统时普通用户没有管理员权限,则需要切换到root用户下才可以正常配置。
vi /etc/sysconfig/network
# 添加如下内容
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=hbase1 # 其他两台机器对应修改机器名称
NTPSERVERARGS=iburst
vi /etc/hostname
hbase1 # 其他两台机器对应修改机器名称
2.取消网卡关于IPv6的相关配置
注意:cdh集群需要禁止ipv6,不禁止会导致集群机器通信问题。
不同机器安装Centos7
系统后网卡名称不同,所以在/etc/sysconfig/network-scripts/
目录下存在的网卡配置文件不同,请编辑要使用的网卡配置文件,将以下默认IPv6配置注释。
# IPV6_AUTOCONF=yes
# IPV6_DEFROUTE=yes
# IPV6_FAILURE_FATAL=no
# IPV6_ADDR_GEN_MODE=stable-privacy
3.关闭防火前和selinux
①关闭防火墙
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 禁用防火墙
②关闭selinux
vi /etc/sysconfig/selinux
将SELINUX=enforcing
修改为SELINUX=disabled
4.修改主机名映射
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.100 hbase1
192.168.1.101 hbase2
192.168.1.102 hbase3
5.禁用IPv6
echo "#禁用IPv6 " >> /etc/modprobe.d/tuned.conf
echo "alias net-pf-10 off" >> /etc/modprobe.d/tuned.conf
echo "alias ipv6 off" >> /etc/modprobe.d/tuned.conf
tail /etc/modprobe.d/tuned.conf #查看是否追加成功
6.关闭透明大主题
临时关闭透明大主题(立即生效)
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
如果要永久生效,需要将这两条命令放到一个脚本内,再将脚本启动命令写入到/etc/rc.local文件
查看是否已经关闭
cat /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/enabled
7.修改swappiness
sysctl -w vm.swappiness=10 # 临时生效
echo "vm.swappiness=10" >> /etc/sysctl.conf # 重启后永久生效
8.操作系统语言使用英文(UTF8)
# 查看操作系统系统语言
echo $LANG
# 修改操作系统系统语言
vim /etc/locale.conf
LANG="en_US.UTF-8"
9.配置集群内机器免密码登录
①分别在三台机器上执行
ssh-keygen -t rsa
三次回车后生成新的公钥(id_rsa.pub)私钥(id_rsa)文件。
②在hbase1上复制公钥
cd ~/.ssh/
cp id_rsa.pub authorized_keys
# 下面的命令是把其他主机的公钥复制到本机
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hbase1 # 添加hbase1自身公钥
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hbase2
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hbase3
③拷贝authorized_keys到hbase2和hbase3
scp /root/.ssh/authorized_keys hbase2:/root/.ssh/
scp /root/.ssh/authorized_keys hbase3:/root/.ssh/
安装Oracle JDK
集群内机器(所有节点),都需要执行以下操作。
1.卸载原有JDK
[root@hbase1 .ssh]# rpm -qa|grep java
java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64
tzdata-java-2020a-1.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64
[root@hbase1 .ssh]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 tzdata-java-2020a-1.el7.noarch java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64
2.安装Oracle JDK
rpm -ivh jdk-8u201-linux-x64.rpm
3.验证是否安装成功
[root@hbase1 Downloads]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
4.添加环境变量
在/etc/profile
最后添加以下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=/usr/java/jdk1.8.0_201-amd64/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
5.生效环境变量
source /etc/profile
配置时间同步
yum install –y ntp # 安装ntp服务
systemctl start ntpd # 开启ntp服务器
chkconfig ntpd on # 配置ntp服务开机自启动
安装MySQL
安装数据库操作仅需在主节点进行,可以根据需要多配置一个数据库进行主从备份
1.删除系统自带的mariadb
[root@hbase1 Downloads]# rpm -qa|grep mariadb # 查询mariadb包名称
mariadb-libs-5.5.68-1.el7.x86_64
[root@hbase1 Downloads]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 # 卸载软件包
2.tar命令解压安装包
[root@hbase1 Downloads]# tar -xvf mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar
mysql-community-client-5.7.32-1.el7.x86_64.rpm
mysql-community-common-5.7.32-1.el7.x86_64.rpm
mysql-community-devel-5.7.32-1.el7.x86_64.rpm
mysql-community-embedded-5.7.32-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.32-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.32-1.el7.x86_64.rpm
mysql-community-libs-5.7.32-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.32-1.el7.x86_64.rpm
mysql-community-server-5.7.32-1.el7.x86_64.rpm
mysql-community-test-5.7.32-1.el7.x86_64.rpm
3.按顺序安装rpm包
rpm -ivh mysql-community-common-5.7.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.32-1.el7.x86_64.rpm
4.配置数据库
编辑/etc/my.cnf
文件,在[mysqld]
下面添加这两行
skip-grant-tables
character_set_server=utf8
skip-grant-tables:跳过登录验证
character_set_server=utf8:设置默认字符集UTF-8
5.启动MySQL服务
systemctl start mysqld.service
6.设置一个简单密码
mysql # 无密码连接mysql
update mysql.user set authentication_string=password('123456') where user='root'; # 设置mysql密码为123456
flush privileges; # 立即生效密码
7.关闭MySQL服务
systemctl stop mysqld.service
8.修改数据库配置
编辑/etc/my.cnf
文件,在[mysqld]
下面添加这几行,修改默认密码规则
validate_password_policy=0
validate_password_length=0
validate_password_mixed_case_count=0
validate_password_number_count=0
validate_password_special_char_count=0
validate_password_policy:设置密码策略
validate_password_length:设置密码最小长度
validate_password_mixed_case_count:设置密码需要包含大小写得数量
validate_password_number_count:设置密码需要包含数字的数量
validate_password_special_char_count:设置密码需要包含特殊字符得数量
9.再次启动MySQL服务
systemctl start mysqld.service # 启动mysql服务
mysql -uroot -p123456 # 登录mysql
set password=password('123456'); # 重设密码,否则无法输入其他命令
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; # 开启远程登录,这里密码还是设置为123456
flush privileges; # 立即生效
10.创建必备数据库
mysql -uroot -p123456
create database if not exists amon default charset utf8 collate utf8_general_ci;
create database if not exists rman default charset utf8 collate utf8_general_ci;
create database if not exists nav default charset utf8 collate utf8_general_ci;
create database if not exists navms default charset utf8 collate utf8_general_ci;
create database if not exists hue default charset utf8 collate utf8_general_ci;
create database if not exists sentry default charset utf8 collate utf8_general_ci;
create database if not exists cm default charset utf8 collate utf8_general_ci;
create database if not exists reports default charset utf8 collate utf8_general_ci;
create database if not exists hive;
create database if not exists oozie;
grant all on hive.* to 'hive'@'%' identified by 'hive' with grant option;
grant all on oozie.* to 'oozie'@'%' identified by 'oozie' with grant option;
grant all on hue.* to 'hue'@'%' identified by 'hue' with grant option;
grant all on amon.* to 'amon'@'%' identified by 'amon' with grant option;
grant all on rman.* to 'rman'@'%' identified by 'rman' with grant option;
grant all on nav.* to 'nav'@'%' identified by 'nav' with grant option;
grant all on navms.* to 'navms'@'%' identified by 'navms' with grant option;
grant all on sentry.* to 'sentry'@'%' identified by 'sentry' with grant option;
grant all on reports.* to reports @'%' identified by 'reports' with grant option;
grant all on cm.* to 'cm'@'%' identified by 'cm' with grant option;
grant all on *.* to reports @'%' identified by '*' with grant option;
flush privileges;
安装Cloudera Manager
以下操作在hbase1机器上执行
1.解压cloudera-manager安装包到/opt目录
mkdir /opt
tar -zxf cloudera-manager-centos7-cm5.14.2_x86_64.tar.gz -C /opt # 解压安装包
2.拷贝MySQL驱动jar包
tar -xvf mysql-connector-java.tar.gz
cd mysql-connector-java-5.1.49
mv mysql-connector-java-5.1.49.jar mysql-connector-java.jar # 重命名jar包
cp mysql-connector-java.jar /usr/share/java/ # 拷贝jar包到java共享目录下
scp /usr/share/java/mysql-connector-java.jar hbase2:/usr/share/java/ # 同步jar包到hbase2
scp /usr/share/java/mysql-connector-java.jar hbase3:/usr/share/java/ # 同步jar包到hbase3
cp mysql-connector-java-5.1.49-bin.jar /opt/cm-5.14.2/share/cmf/lib/ # 拷贝bin jar包到cloudera目录
3.创建用户
sudo useradd --system --home=/opt/cm-5.14.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
4.初始化scm数据库
/opt/cm-5.14.2/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -uroot -p123456 --scm-host localhost scm root 123456
5.配置Agent
vi /opt/cm-5.14.2/etc/cloudera-scm-agent/config.ini
# 将server_host=localhost改为:
server_host=hbase1
6.配置Parcel目录
mkdir -p /opt/cloudera/parcel-repo/
将CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel
,CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha
和manifest.json
拷贝进去。
7.同步/opt目录到hbase2和hbase3
scp -r /opt hbase2:/
scp -r /opt hbase3:/
在hbase2
和hbase3
两台机器上分别再执行
useradd --system --home=/opt/cm-5.14.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm # 创建cloudera-scm用户
安装Cloudera集群
1.启动集群
在hbase1
上执行
/opt/cm-5.14.2/etc/init.d/cloudera-scm-server start # 启动服务端
/opt/cm-5.14.2/etc/init.d/cloudera-scm-agent start # 启动agent
在hbase2
和hbase3
上都执行
/opt/cm-5.14.2/etc/init.d/cloudera-scm-agent start # 启动agent
2.浏览器访问7180端口
初始账号密码均为admin
,可通过http://192.168.1.100:7180
访问,若成功启动,则会有如下页面:
登录账户
勾选接收许可条款和条件,然后点击继续
选择免费的许可证,然后点击继续
点击继续
选择当前管理的主机,若所有主机的agent
服务都启动成功,应该可以看到三台主机,勾选所有主机,然后点击继续开始进行集群安装
勾选识别到的CDH版本,然后点击继续安装
若安装全部完成,则会出现继续按钮,点击继续进行下一步,会进行主机检查,如果主机正常,则会出现如下界面
点击完成,会出现集群设置
这里我选择自定义服务,然后勾选HBase
、HDFS
和Zookpeer
,点击继续进入集群自定义角色分配。
点击继续,会进行审核更改,以及对应的配置目录,修改后点击继续即可开始自定义服务安装。
安装完成后点击继续,提示安装完成。
完成后可进入安装后的集群。集群启动有时候会有点慢,大约2-5分钟后,集群就会全部正常显示绿色圈,如下图所示: