集群信息
集群信息 | ||
IP | hostname | 节点类型 |
192.168.159.9 | lbmaster | 管理节点 |
192.168.160.221 | lbnode1 | 数据节点 |
192.168.160.222 | lbnode2 | 数据节点 |
192.168.160.198 | lbnode3 | 数据节点 |
基础环境配置(所有主机都需要配置)
配置hosts文件
配置hosts文件,实现主机名与ip的映射
1、vi /etc/hosts
2、数据ip与主机的映射关系,如下图
1、因为所有主机的hosts文件都一致,为了减少重复工作使用scp命令拷贝到所有主机,
scp /etc/hosts root@192.168.160.221:/etc/
scp /etc/hosts root@192.168.160.222:/etc/
scp /etc/hosts root@192.168.160.198:/etc/
设置hostname
1、分别进入集群中的每个主机,设置hostname,需要注意的是hostname最好不好设置为大写,因为后续如果要开启kerberos的时候会报错。
2、在lbmaster主机上输入:hostnamectl set-hostname lbmaster
3、在lbnode1主机上输入:hostnamectl set-hostname lbnode1
4、在lbnode2主机上输入:hostnamectl set-hostname lbnode2
5、在lbnode3主机上输入:hostnamectl set-hostname lbnode3
6、验证 在每台主机上输入 hostname 看输出的结果是否与主机相对应
关闭防火墙与selinux文件
1、每台主机都需要关闭防火墙,并且selinux也需要置为disabled
2、在所有主机分别执行以下三条命令
systemctl stop firewalld
systemctl disable firewalld.service
iptables -F
3、关闭selinux 输入vi /etc/selinux/config,将SELINUX=disabled
4、其他主机一样,为了减少重复工作 使用scp拷贝到其他主机
scp /etc/selinux/config root@192.168.160.221:/etc/selinux
scp /etc/selinux/config root@192.168.160.222:/etc/selinux
scp /etc/selinux/config root@192.168.160.198:/etc/selinux
配置管理节点到数据节点的SSH免密
1、在管理节点(lbmaster) 节点下 ~/.ssh文件夹下执行ssh-keygen -t rsa (如果没有.ssh文件夹,就先ssh连接下别的机器),执行过程中按三次回车即可
2、执行完成后会生成以下文件
3、将公钥发送给其他节点,有提示输入的yes的就输入yes,输入密码就输入主机密码即可
ssh-copy-id lbmaster
ssh-copy-id lbnode1
ssh-copy-id lbnode2
ssh-copy-id lbnode3
4、测试,ssh到任意一台主机不用输入密码即可进入,这样就算是配置成功
配置NTP服务实现时钟同步
1、所有节点都需要安装ntp,如果没有ntp先安装ntp,一般集群无法连接外网,可以先完成配置本地源的操作
yum install -y ntp
2、在lbmaster修改ntp.conf 输入vi /etc/ntp.conf ,注释其他时间服务器,添加为本机
server 127.127.1.0
fudge 127.127.1.0 stratum8
2、在其他节点(lbnode1\lbnode2\lbnode3)修改ntp.conf文件 输入vi /etc/ntp.conf 在26行添加server lbmaster iburst,注释其他时间服务器
3、在所有节点启动ntp服务
systemctl start ntpd
systemctl enable ntpd
4. 验证是否成功设置开机自启动
systemctl list-unit-files |grep enabled | grep ntpd
安装JDK
JDK最好安装1.8的,因为CDH6.0以后JDK版本最低为1.8
1、所有主机卸载系统自带的openjdk(如果没有就可跳过)
2、使用 rpm -qa | grep jdk 检查系统是否有openjdk
3、卸载自带openjdk 在每个主机输入 rpm -qa|grep openjdk |xargs -I {} rpm -e --nodeps {}
4、将准备好的jdk上传到各个主机中
5、在所有主机中输入 rpm -ivh jdk-8u111-linux-x64.rpm 进行安装
6、验证是否安装成功 输入 rpm -qa | grep jdk
CDH平台性能优化
Cloudera官网提供了一些性能优化的建议,尽可能的提高平台的效率,详情见https://docs.cloudera.com/documentation/enterprise/latest/topics/cdh_admin_performance.html#cdh_performance__section_hw3_sdf_jq
删除虚拟网卡
1、所有主机需要安装所需的依赖
yum install -y qumu-kvm* libvirt* virt-install* bridge-utils
2、所有主机运行 virsh net-destroy default
3、所有主机运行 virsh net-undefine default
静止透明大页
大页面(Huge Page)是内存分页管理的一种实现方式。计算机内存是通过表映射(页表)的方式进行内存寻址,目前系统内存以4KB为一个页,作为内存寻址的最小单元。随着内存不断增大,页表的大小将会不断增大。一台256G内存的机器,如果使用4KB小页,仅页表大小就要4G左右。页表是必须装在内存的,而且是在CPU内存,太大就会发生大量miss,内存寻址性能就会下降。
Huge Page就是为了解决这个问题,它使用2MB的大页代替传统小页来管理内存,这样页表大小就可以控制的很小,进而全部装在CPU内存,防止出现miss。它有两种实现方式,一是静态大页面(Static Huge Pages,SHP),二是透明大页面(Transparent Huge Pages,THP)。从它们的名字就可以看出,SHP是静态的,而THP是动态的。由于THP是在运行期做分配和管理,因此会有一定程度的延迟,对于内存密集型的应用十分不利,必须关闭它。
1、所有主机输入以下命令
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
2、所有主机的/etc/rc.local中也需要加入这两条命令
减少集群使用交换内存
swappiness设置值的区间在0~100之间,swap即交换空间,作用类似于Windows中的虚拟内存,也就是当物理内存不足时,将硬盘上的swap分区当做内存来使用。但是,由于磁盘的读写速率与内存相比差太多,一旦发生大量交换,系统延迟就会增加,甚至会造成服务长期不可用,这对于大数据集群而言是致命的。
vm.swappiness参数用于控制内核对交换空间的使用积极性,默认是60。值越高,就代表内核越多地使用交换空间。
对于内存较大的CDH集群,我们一般将这个值设为0或1。0表示只有当可用物理内存小于最小阈值vm.min_free_kbytes时才使用交换空间,1则表示最低限度地使用交换空间。
所有主机运行以下三条命令
sysctl -w vm.swappiness=0
echo 'vm.swappiness=0' >> /etc/sysctl.conf
sysctl -p
配置本地源安装HTTP与REPO
配置Yum源用于安装HTTP等软件,最终将本地源配置为网络源,让其他主机也可以使用该源下载软件,还有一个作用就是安装agent的时候需要下载一些依赖包。
安装HTTP服务与REPO
1、安装repo
yum install -y createrepo
2、安装httpd服务
yum install -y httpd
3、开启httpd服务并设为开机自启动
systemctl start httpd
systemctl enable httpd
准备系统镜像
1、创建文件夹用于存放系统镜像
mkdir -p /var/www/html/yum
2、上传镜像到/var/www/html/yum这个目录下面
挂载镜像
1、将/etc/yum.repos.d文件夹下用不到的配置文件全部进行重命名备份
2、新建redhat.repo文件
3、修改文件内容如下
4、停用redhat订阅插件(非必须)
yum.repos.d]# vim /etc/yum/pluginconf.d/subscription-manager.conf
5、挂载镜像
mount /var/www/html/yum/rhel-server-7.7-x86_64-dvd.iso /var/www/html/yum
6、验证是否挂在成功,执行yum list 如果出现大量的软件列表即挂载成功
将本地Yum源配置为网络Yum源
1、编辑 vi /etc/yum.repos.d/ redhat.repo 内容如下
2、验证 在浏览器中输入 http://192.168.159.9/yum/ 如果出现如下即为成功
3、将该yum源文件scp到其他主机
scp /etc/yum.repos.d/redhat.repo root@192.168.160.221:/etc/yum.repos.d/
scp /etc/yum.repos.d/redhat.repo root@192.168.160.222:/etc/yum.repos.d/
scp /etc/yum.repos.d/redhat.repo root@192.168.160.198:/etc/yum.repos.d/
外部数据库安装(在管理节点安装)
安装数据库主要存储元数据信息,比如CM监控,hive元数据等
准备Mysql rpm包
1、将Mysql所需的rpm包上传到lbmaster节点上
卸载系统自带的数据库
1、卸载系统自带的mariadb数据库 输入rpm -qa|grep mariadb | xargs -I {} rpm -e --nodeps {}
安装Mysql数据库
1、按照以下步骤安装mysql数据库
rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm
2、开启数据库服务
systemctl start mysqld
systemctl enable mysqld
3、获取mysql初始化密码
grep 'temporary password' /var/log/mysqld.log
4、修改Mysql密码
mysql -uroot -p 输入上面获取到的密码
alter user root@localhost identified by '2wsx#EDC';
flush privileges;
创建所需的数据库并授权
1、输入以下命令 创建集群所需的数据库(一起复制)
mysql -uroot -p2wsx#EDC -e 'create database metastore default character set utf8;'
mysql -u root --password='2wsx#EDC' -e "create user 'hive'@'%' identified by '2wsx#EDC'";
mysql -u root --password='2wsx#EDC' -e 'create database hive default character set utf8';
mysql -u root --password='2wsx#EDC' -e "grant all privileges on hive.* to 'hive'@'%'";
mysql -u root --password='2wsx#EDC' -e "grant all privileges on metastore.* to 'hive'@'%'";
mysql -u root --password='2wsx#EDC' -e "create user 'amon'@'%' identified by '2wsx#EDC'";
mysql -u root --password='2wsx#EDC' -e 'create database amon default character set utf8';
mysql -u root --password='2wsx#EDC' -e "grant all privileges on amon.* to 'amon'@'%'";
mysql -u root --password='2wsx#EDC' -e "create user 'rman'@'%' identified by '2wsx#EDC'";
mysql -u root --password='2wsx#EDC' -e 'create database rman default character set utf8';
mysql -u root --password='2wsx#EDC' -e "grant all privileges on rman.* to 'rman'@'%'";
mysql -u root --password='2wsx#EDC' -e "create user 'sentry'@'%' identified by '2wsx#EDC'";
mysql -u root --password='2wsx#EDC' -e 'create database sentry default character set utf8';
mysql -u root --password='2wsx#EDC' -e "grant all privileges on sentry.* to 'sentry'@'%'";
mysql -u root --password='2wsx#EDC' -e "create user 'nav'@'%' identified by '2wsx#EDC'";
mysql -u root --password='2wsx#EDC' -e 'create database nav default character set utf8';
mysql -u root --password='2wsx#EDC' -e "grant all privileges on nav.* to 'nav'@'%'";
mysql -u root --password='2wsx#EDC' -e "create user 'navms'@'%' identified by '2wsx#EDC'";
mysql -u root --password='2wsx#EDC' -e 'create database navms default character set utf8';
mysql -u root --password='2wsx#EDC' -e "grant all privileges on navms.* to 'navms'@'%'";
mysql -u root --password='2wsx#EDC' -e "create user 'cm'@'%' identified by '2wsx#EDC'";
mysql -u root --password='2wsx#EDC' -e 'create database cm default character set utf8';
mysql -u root --password='2wsx#EDC' -e "grant all privileges on cm.* to 'cm'@'%'";
mysql -u root --password='2wsx#EDC' -e "create user 'oos'@'%' identified by '2wsx#EDC'";
mysql -u root --password='2wsx#EDC' -e 'create database oos default character set utf8';
mysql -u root --password='2wsx#EDC' -e "grant all privileges on oos.* to 'oos'@'%'";
mysql -u root --password='2wsx#EDC' -e "create user 'hue'@'%' identified by '2wsx#EDC'";
mysql -u root --password='2wsx#EDC' -e 'create database hue default character set utf8';
mysql -u root --password='2wsx#EDC' -e "grant all privileges on hue.* to 'hue'@'%'";
验证
1、进入数据库验证是否创建成功
CDH软件下载及配置
下载地址
公众号【五分钟学大数据】,回复关键字:cdh 即可获得百度云下载地址
所需文件
1、CM需要下载以下文件
2、CDH需要以下文件
上传文件
1、创建文件夹
mkdir /var/www/html/cdh6/
mkdir /var/www/html/cm6/
2、将CM文件和CDH文件上传到各自文件夹中
配置CM本地Yum源
1、进入 /var/www/html/cm6/ 文件夹
2、运行以下命令,用于执行本地yum操作
createrepo .
3、新建cm repo源并修改为以下内容(下图中的cm5.14有问题,应该是cm6,名称和上面文件夹名称一样)
touch /etc/yum.repos.d/cm.repo
4、将该cm源scp到其他节点
scp cm.repo root@lbnode1:/etc/yum.repos.d/
scp cm.repo root@lbnode2:/etc/yum.repos.d/
scp cm.repo root@lbnode3:/etc/yum.repos.d/
安装Cloudera Manager
1、在管理节点上安装Cloudera Manager
yum install cloudera-manager-daemons cloudera-manager-server
2、复制mysql-connect到/usr/share/java/,如果没有该文件夹可以自行创建
cp /opt/software/mysql/mysql-connector-java.jar /usr/share/java/
3、初始化数据库
CDH6: /opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm 2wsx#EDC
CDH5: /usr/share/cmf/schema/scm_prepare_database.sh mysql cm cm 2wsx#EDC
Mysql不在本机:
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm -h192.168.159.9 cm 2wsx#EDC
4、启动CM
systemctl start cloudera-scm-server.service
1、进入CM管理界面
http://192.168.159.9:7180/cmf/login
2、输入账号密码 默认 admin/admin
3、选择继续即可
4、同意协议,继续
5、选择企业版试用60天,继续
6、继续
7、继续
8、输入192.168.159.9~12,点击搜索
9、成功搜索后会出现可安装的主机 点击继续
10、配置CM库,输入http://192.168.159.9/cm6/
11、配置parcel自定义库,点击更多配置,在第一行输入http://192.168.159.9/cdh6/
12、已经安装过JDK所以取消,点击下一步
13、输入root密码,点击继续
14、等待安装
15、agent安装完成
16、开始安装大数据组件
17、安装成功 点继续
18、检查主机正确性 点继续
19、选择要添加的服务
20、角色分配,管理节点安装NameNode等管理角色,数据节点安装DataNode等角色,按照下图分配,然后点继续
21、设置各组件的数据库,点击测试
22、审核 默认即可
23、集群启动成功
24、至此集群安装完成