Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具,使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。
- Cloudera Repository:软件由 Cloudera 管理分布存储库
- Server:负责软件安装、配置,启动和停止服务,管理服务运行的集群
- Management Service:由一组执行各种监控,警报和报告功能角色的服务
- Database:存储配置和监视信息
- Agent:安装在每台主机上,负责启动和停止的过程,配置,监控主机
- Clients:是用于与服务器进行交互的接口(API 和 Admin Console)
IP | Hostname | CPU | 内存 | 硬盘 |
192.168.10.221 | node01 | 4 | 25G | 50G |
192.168.10.222 | node02 | 4 | 25G | 50G |
192.168.10.223 | node03 | 4 | 25G | 50G |
情况 1:三台虚拟机(node01、node02、node03),配置好对应主机的网络IP、主机名称、关闭防火墙。
查看网络的网段的范围:192.168.10.[128-254]
情况 2:服务器 + 跨服务器中的虚拟机
# 查看网关 [root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.10.2 0.0.0.0 UG 100 0 0 ens33 192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
# 配置 IP 地址 [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 设置所有节点(三台虚拟机)的 hosts 文件 [root@localhost ~]# vi /etc/hosts
# 配置完成后,重启网络 [root@localhost ~]# systemctl restart network # 查看主机名 [root@localhost ~]# hostname # ping 其他主机域名进行验证 [root@localhost ~]# ping node01
# 关闭所有节点的防火墙并清空规则 # 停止并禁用防火墙 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld # 清空规则 [root@localhost ~]# iptables -F # 查看防火墙状态 [root@localhost ~]# systemctl status firewalld
# 关闭所有节点的 selinux [root@localhost ~]# vi /etc/selinux/config SELINUX=disabled # 设置后重启生效 [root@localhost ~]# reboot
安全增强型 Linux(SELinux)是一种采用安全架构的 Linux 系统,它能够让管理员更好地管控哪些人可以访问系统。其旨在提高 Linux 系统的安全性,主要作用是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。
① 时区
# 查看节点时区
timedatectl
# 所有节点设置亚洲上海海时区
timedatectl set-timezone Asia/Shanghai
② 时间同步
主从:主节点和互联网同步时间,从节点与主节点同步
# 所有节点安装 ntp
yum install -y ntp
# 选取 node01 为 ntp 的主节点
[root@node01 ~]# vi /etc/ntp.conf
# 当外部时间不不可用时,使用本地硬件时间
server 127.127.1.0 iburst local clock
# 允许哪些网段的机器来同步时间
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
# 开启 ntpd 及查看状态
[root@node01 ~]# systemctl start ntpd
[root@node01 ~]# systemctl status ntpd
# 验证
[root@node01 ~]# ntpq -p
# 其他从节点停止禁用 ntpd 服务,并同步时间
[root@node02 ~]# systemctl stop ntpd
[root@node02 ~]# systemctl disable ntpd
[root@node02 ~]# ntpdate node01
11 May 11:13:04 ntpdate[9877]: adjust time server 192.168.10.221 offset 0.008564 sec
# 其他从节点每天凌晨同步 node01 节点时间
[root@node01 ~]# crontab -e
00 00 * * * /usr/sbin/ntpdate node01
# 在 node01 的 /opt 目录下创建 module 和 software 文件夹 [root@node01 ~]# cd /opt/ [root@node01 opt]# mkdir moudle software
# 上传 oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm 并安装 [root@node01 software]# rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm [root@node01 software]# vi /etc/profile JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera export PATH=${JAVA_HOME}/bin:${PATH} [root@node01 software]# source /etc/profile [root@node01 software]# java -version java version "1.8.0_262"
# 分发文件,并 source [root@node01 software]# scp -r /usr/java/ node02:/usr/ [root@node01 software]# scp -r /usr/java/ node03:/usr/ [root@node01 software]# scp /etc/profile node02:/etc/ [root@node01 software]# scp /etc/profile node03:/etc/ [root@node02 software]# source /etc/profile [root@node02 software]# java -version [root@node03 software]# source /etc/profile [root@node03 software]# java -version
注意:一定要用 root 用户操作如下步骤;先卸载 MySQL 再安装
1)安装包准备
# 查看 MySQL 是否安装
[root@node01 ~]# rpm -qa|grep -i mysql
mysql-libs-5.1.73-7.el6.x86_64
# 如果安装了 MySQL,就先卸载,并删除原有 MySql 依赖
rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
yum remove mysql-libs(要做)
# 下载 MySql 依赖并安装
[root@node01 ~]# yum install libaio
[root@node01 ~]# yum -y install autoconf
[root@node01 ~]# cd /opt/software/
[root@node01 software]# wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-shared-compat-5.6.24-1.el6.x86_64.rpm
[root@node01 software]# wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-shared-5.6.24-1.el6.x86_64.rpm
# 上传 mysql-libs.zip 到 node01 的 /opt/software 目录,并解压文件到当前目录
[root@node01 software]# yum install unzip
[root@node01 software]# unzip mysql-libs.zip
[root@node01 software]# ls
mysql-libs.zip
mysql-libs
# 可进入到 mysql-libs 文件夹下查看文件
[root@node01 software]# ll mysql-libs/
总用量 76048
-rw-r--r-- 1 root root 18509960 3月 26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 3575135 12月 1 2013 mysql-connector-java-5.1.27.tar.gz
-rw-r--r-- 1 root root 55782196 3月 26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm
2)安装MySQL服务器
# 安装 MySQL 服务端
[root@node01 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
# 查看产生的随机密码
[root@node01 mysql-libs]# cat /root/.mysql_secret
PUhuZJJt9rTRGWrX
# 查看MySQL状态
[root@node01 mysql-libs]# service mysql status
# 启动MySQL
[root@node01 mysql-libs]# service mysql start
3)安装MySQL客户端
# 安装MySQL客户端
[root@node01 mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
# 链接MySQL(密码替换成产生的随机密码)
[root@node01 mysql-libs]# mysql -uroot -pPUhuZJJt9rTRGWrX
# 修改密码
mysql>SET PASSWORD=PASSWORD('000000');
# 退出MySQL
mysql>exit
4)MySQL中user表中主机配置
# 配置只要是root用户+密码,在任何主机上都能登录MySQL数据库。
# 进入MySQL
[root@node01 mysql-libs]# mysql -uroot -p123456
# 显示数据库 mysql>show databases;
# 使用MySQL数据库 mysql>use mysql;
# 展示MySQL数据库中的所有表 mysql>show tables;
# 展示user表的结构 mysql>desc user;
# 查询user表
mysql>select User, Host, Password from user;
# 修改user表,把Host表内容修改为%
mysql>update user set host='%' where host='localhost';
# 删除root用户的其他host
mysql> delete from user where host!='%';
刷新 mysql>flush privileges;
退出 mysql>quit;
# 创建各组件需要的数据库
mysql> GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
mysql> CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> CREATE DATABASE oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> CREATE DATABASE hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# 将 mysql-connector-java-5.1.27-bin.jar 拷贝到 /usr/share/java 路径下,并重命名
[root@node01 mysql-libs]# tar -zxvf mysql-connector-java-5.1.27.tar.gz
[root@node01 mysql-libs]# cd mysql-connector-java-5.1.27
[root@node01 mysql-connector-java-5.1.27]# mv mysql-connector-java-5.1.27-bin.jar mysql-connector-java.jar
[root@node01 mysql-connector-java-5.1.27]# scp mysql-connector-java.jar /usr/share/java/
[root@node01 mysql-connector-java-5.1.27]# scp -r /usr/share/java/ node02:/usr/share/
[root@node01 mysql-connector-java-5.1.27]# scp -r /usr/share/java/ node03:/usr/share/
节点 | node01 | node02 | node03 |
---|---|---|---|
服务 | cloudera-scm-server cloudera-scm-agent |
cloudera-scm-agent | cloudera-scm-agent |
# 创建 cloudera-manager 目录,存放 cdh 安装文件
[root@node01 mysql-connector-java-5.1.27]# mkdir /opt/cloudera-manager
[root@node01 mysql-connector-java-5.1.27]# cd /opt/software/
[root@node01 software]# tar -zxvf cm6.3.1-redhat7.tar.gz
[root@node01 software]# cd cm6.3.1/RPMS/x86_64/
[root@node01 x86_64]# mv cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm /opt/cloudera-manager/
[root@node01 x86_64]# mv cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm /opt/cloudera-manager/
[root@node01 x86_64]# mv cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm /opt/cloudera-manager/
[root@node01 x86_64]# cd /opt/cloudera-manager/
[root@node01 cloudera-manager]# ll
总用量 1185872
-rw-r--r--. 1 2001 2001 10483568 9月 25 2019 cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r--. 1 2001 2001 1203832464 9月 25 2019 cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r--. 1 2001 2001 11488 9月 25 2019 cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
# 安装cloudera-manager-daemons,安装完毕后多出 /opt/cloudera 目录
[root@node01 cloudera-manager]# rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
[root@node01 cloudera-manager]# cd /opt
[root@node01 opt]# scp -r /opt/cloudera-manager/ node02:/opt/
[root@node01 opt]# scp -r /opt/cloudera-manager/ node03:/opt/
[root@node02 ~]# cd /opt/cloudera-manager/
[root@node02 cloudera-manager]# rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
[root@node03 ~]# cd /opt/cloudera-manager/
[root@node03 cloudera-manager]# rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
# 安装 cloudera-manager-agent
[root@node01 cloudera-manager]# yum install bind-utils psmisc cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python libxslt
[root@node01 cloudera-manager]# rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
[root@node02 cloudera-manager]# yum install bind-utils psmisc cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python libxslt
[root@node02 cloudera-manager]# rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
[root@node03 cloudera-manager]# yum install bind-utils psmisc cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python libxslt
[root@node03 cloudera-manager]# rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
# 安装 agent 的 server 节点
[root@node01 cloudera-manager]# vim /etc/cloudera-scm-agent/config.ini
server_host=node01
[root@node02 cloudera-manager]# vim /etc/cloudera-scm-agent/config.ini
server_host=node01
[root@node02 cloudera-manager]# vim /etc/cloudera-scm-agent/config.ini
server_host=node01
# 安装 cloudera-manager-server
[root@node01 cloudera-manager]# rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
# 上传 CDH 包导 parcel-repo
[root@node01 cloudera-manager]# cd /opt/cloudera/parcel-repo
[root@node01 parcel-repo]# ll
total 2033432
-rw-r--r-- 1 root root 2082186246 May 21 11:10 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
-rw-r--r-- 1 root root 40 May 21 10:56 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
-rw-r--r-- 1 root root 33887 May 21 10:56 manifest.json
[root@hadoop101 parcel-repo]# mv 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
# 修改server的db.properties
[root@node01 parcel-repo]# vim /etc/cloudera-scm-server/db.properties
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=node01:3306
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=scm
com.cloudera.cmf.db.setupType=EXTERNAL
# 启动server服务
[root@node01 log]# cd /var/log/
[root@node01 log]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
[root@node01 software]# systemctl start cloudera-scm-server
scm
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
# 启动agent节点
[root@node01 software]# systemctl start cloudera-scm-agent
[root@node02 software]# systemctl start cloudera-scm-agent
[root@node03 software]# systemctl start cloudera-scm-agent
接受条款和协议 :
后续未展示的操作,点击继续即可。
集群安装 :
集群名称自行更改,可默认。
指定主机:
选择 CDH 版本 6.3.2:
等待下载安装:
检查网络性能,检查主机:
Inspect Network Performance,可能会出现警告,网络延迟较高。
# 问题 1 # 临时解决: [root@node01 ~]# echo "10">/proc/sys/vm/swappiness [root@node02 ~]# echo "10">/proc/sys/vm/swappiness [root@node03 ~]# echo "10">/proc/sys/vm/swappiness # 永久解决 [root@node01 ~]# sysctl -w vm.swappiness=10 [root@node01 ~]# echo vm.swappiness = 10 >> /etc/sysctl.conf [root@node02 ~]# sysctl -w vm.swappiness=10 [root@node02 ~]# echo vm.swappiness = 10 >> /etc/sysctl.conf [root@node03 ~]# sysctl -w vm.swappiness=10 [root@node03 ~]# echo vm.swappiness = 10 >> /etc/sysctl.conf # 问题 2 [root@node01 software]# echo never > /sys/kernel/mm/transparent_hugepage/defrag [root@node01 software]# echo never > /sys/kernel/mm/transparent_hugepage/enabled [root@node02 software]# echo never > /sys/kernel/mm/transparent_hugepage/defrag [root@node02 software]# echo never > /sys/kernel/mm/transparent_hugepage/enabled [root@node02 software]# echo never > /sys/kernel/mm/transparent_hugepage/defrag [root@node02 software]# echo never > /sys/kernel/mm/transparent_hugepage/enabled # 问题 3 可以忽略
群集设置:
2.1.1 分配节点
2.1.2 集群设置全部选默认即可
2.1.3 修改HDFS的权限检查配置
关闭HDFS中的权限检查:dfs.permissions。
类似问题,配置相应的内存大小,内存若不够,则忽略。
版本验证问题,可以忽略。
2.1.4 配置NameNode HA
进入HDFS页面点击启用High Availability
HA(High Available),高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。
审核更改
2.1.5 配置Yarn HA
安装spark
2.3.1 Kafka安装
Kafka 的 Broker 选择三台机器
2.3.2查看Kafka Topic
[root@node01 parcel-repo]# /opt/cloudera/parcels/CDH/bin/kafka-topics --zookeeper hadoop102:2181 --list
2.3.3 创建 Kafka Topic
进入到 /opt/cloudera/parcels/KAFKA 目录下分别创建:启动日志主题、事件日志主题。
创建topic test
[root@node01 parcel-repo]# /opt/cloudera/parcels/CDH/bin/kafka-topics --bootstrap-server node01:9092,node02:9092,node03:9092 --create --replication-factor 1 --partitions 1 --topic test
2.3.4 删除 Kafka Topic
删除启动日志主题
[root@node01 parcel-repo]# /opt/cloudera/parcels/CDH/bin/kafka-topics --delete --bootstrap-server node01:9092,node02:9092,node03:9092--topic test
将 Hive 服务添加到 Cluster 1