阿里云购买同一地区下的三台服务器,操作系统为Centos7.6,内网地址分别是172.17.58.37 ,172.17.58.38, 172.17.58.39,对应的节点分别为node1,node2,node3,node1为主机。部署CDH6.1.0,详细部署过程如下:
一、基础环境配置(全部节点)
1、修改主机名
#hostnamectl set-hostname node1
#vi /etc/hosts,修改内容如下:
127.0.0.1 localhost localhost.node1 localhost4 localhost4.localdomain4
::1 localhost localhost.node1 localhost6 localhost6.localdomain6
172.17.58.37 node1 node1
172.17.58.38 node2 node2
172.17.58.39 node3 node3
三台节点分别执行以上指令。
2、关闭防火墙
阿里云服务器默认关闭防火墙,我们也可以通过以下指令关闭防火墙。
# systemctl stop firewalld
#systemctl disable firewalld
3、关闭selinux
selinux是linux系统的安全增强模块,阿里云服务器默认是关闭的,也可以使用以下指令关闭:
# vim /etc/sysconfig/selinux
SELINUX=disabled
这个需要重启生效。
4、时钟同步
安装ntp:yum -y install ntp
vi /etc/ntp.conf
主节点增加:restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap,具体地址根据自己的ip范围设定。
从节点增加:server 主节点ip,并注释其他server
重启ntp服务即可。
设置开机启动。
#chkconfig ntpd on
如果无法启动,可能是由于chrony冲突引起的,如是使用systemctl is-enabled chronyd来查看一下,往往得到的结果是chrony已经被设置为enabled。
所以,解决这一问题的方法就是:
systemctl disable chronyd
5、设置文件打开数量限制
因为在部署过程出现too many file open的错误,所以还是先提前设置。如下修改两个配置:
1)vi /etc/security/limits.conf,修改
* soft nofile 2000
* hard nofile 65535
2)vi /etc/sysctl.conf,增加
fs.file-max = 65535
fs.inotify.max_user_instances = 1024
6、配置SSH免密登陆
三台主机之间需要SSH免密连接,配置过程如下:
node1操作如下:
1)node1生成无密码的密钥对:ssh-keygen -t rsa
2)将公钥添加到认证文件中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3)置authorized_keys的访问权限:chmod 600 ~/.ssh/authorized_keys
4)node1将认证文件拷贝到其他两个节点:
scp ~/.ssh/id_rsa.pub root@172.17.58.38:~/.ssh/id_rsa_node1.pub
scp ~/.ssh/id_rsa.pub root@172.17.58.39:~/.ssh/id_rsa_node1.pub
注意这里在其他节点的认证文件命名为node1
node2、node3依次执行上述操作。这时候每个节点的~/.ssh目录下分别存在其他两个节点的认证文件。分别给这个目录下的认证文件进行授权。
node1下执行:
cat ~/.ssh/id_rsa_node2.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa_node3.pub >> ~/.ssh/authorized_keys
同理,node2,node3执行。
执行完毕后,在node1下执行ssh node2就可以直接连接了。
8、禁用透明大页面压缩
如果不禁用,后面部署cdh的时候会提示重大性能问题。如下:
#vi /etc/rc.local
添加:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
重启生效。
9、优化交换分区
tuned 服务会动态调整系统参数,查找 tuned 中配置,直接将配置修改为 vm.swappiness=0
sysctl -w vm.swappiness=0
echo vm.swappiness = 0 >> /etc/sysctl.conf
至此,基础环境已经配置完成。阿里云提供了快照的功能,为了后期出现问题又无法解决需要重新安装操作系统,可以使用快照进行快速的备份和还原。
二、软件环境配置
主要是java环境和mysql
1、Java JDK1.8.0安装(全部节点)
1)查看系统自带Java,输入java -version,如果有openjdk,卸载,没有直接安装最新的jdk
2)搜索jdk # yum search java|grep jdk
3)下载并安装jdk1.8 # yum install java-1.8.0-openjdk
到这一步java基本安装完成,使用java-version也可以查看java版本,但是缺少java开发环境,后期cdh会提示找不到java。所以继续安装如下:
4)安装开发环境:yum install java-1.8.0-openjdk-devel.x86_64
5)配置环境变量:vi /etc/profile,添加:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
export JRE_HOME=$JAVA_HOME/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
执行指令使配置生效:source /etc/profile
2、安装mysql5.7(主节点node1)
1)下载mysql压缩包:
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
2)解压
tar -xvf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
3)安装
安装前先卸载旧版本mariadb-libs:
rpm -qa | grep mariadb
下载上述命令查到的mariadb-libs包:
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
4)开始安装
rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm
如果安装过程提示缺少libaio,执行yum -y install libaio
5)启动mysql服务
service mysqld start
6)关闭密码策略
vi /etc/my.cnf,my.cnf是mysql的配置文件,添加:
validate_password = off
主要是测试使用,使用类似123456的简单密码。也可以不用关闭,设置复杂密码。
7)查看初始密码
grep 'temporary password' /var/log/mysqld.log
8)登陆并修改密码
mysql -uroot -p上述密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
9)远程访问
use mysql;
update user set host='%' where user='root' and host='localhost';
flush privileges;
10)设置开机启动
vi /etc/rc.local
在文件中添加 service mysqld start即可。
至此,软件环境安装完成。可以进行CDH安装了。
三、CDH工具包下载
1)cloudera-manager-agent
2)cloudera-manager-daemons
3)cloudera-manager-server
4)cloudera-manager-server-db
https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-db-2-6.1.0-769885.el7.x86_64.rpm
5)oracle-j2sdk1.8-1.8.0
6)cdhparcel包
https://archive.cloudera.com/cdh6/6.1.0/parcels/连接下找到:
CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel
CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha256
manifest.json
7)mysql jdbc包
https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
以上包分别使用wget下载至本地目录。
至此,CDH工具包准备完毕。
四、CDH安装
1)将mysql jdbc包复制到share目录,以备cdh使用。
tar zxvf mysql-connector-java-5.1.46.tar.gz
mkdir -p /usr/share/java/
cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
注意,这里复制过去后统一命名为mysql-connector-java.jar。
2)为chd创建数据库
打开mysql
mysql -uroot p123456
use mysql;
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '123456';
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY '123456';
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY '123456';
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO hue@'%' IDENTIFIED BY '123456';
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY '123456';
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY '123456';
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY '123456';
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY '123456';
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456';
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hive .* TO 'hive'@'%' IDENTIFIED BY '123456';
flush privileges;提交生效。
3)安装cloudera manager包
主节点node1安装如下:
yum -y install cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm
yum -y install cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm
注:该包安装时出现错误如下:
Error: Package: 2:postfix-2.10.1-7.el7.x86_64 (@anaconda)
Requires: libmysqlclient.so.18()(64bit)
解决方式:
下载Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm,
安装rpm -ivh Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
安装后会提供libmysqlclient.so.18()。
继续安装:
yum -y install cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm
从节点安装:
yum -y install cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm
yum -y install cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm
4)修改agent配置文件,指向主节点(全部节点)
vi /etc/cloudera-scm-agent/config.ini
server_host=node1
5)配置 Cloudera Manager 数据库(主节点)
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
输入scm密码:123456
6)配置cloudera manager 仓库,后面选择cdh版本和分发parcel的时候会用到(主节点)
#wget https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/
#rpm --import https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPM-GPG-KEY-cloudera
7)准备parcel包(主节点),后面parcel下载的时候可以直接使用
创建目录:mkdir /opt/cloudera/parcel-repo/
并将刚才下载的parcel包,如下:
CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel
CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha256
manifest.json
使用cp命令,拷贝至该目录下,并将CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha256重命名为CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha。
注:cdh安装过程选择版本时出现无法选择cdh6.1.0时,可以重新写入sha。如下:
sha1sum /opt/cloudera/parcel-repo/CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel
vi /opt/cloudera/parcel-repo/CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha
用生成的sha替换下。替换后需要重启scm server:service cloudera-scm-server restart
8、启动scm-server
systemctl start cloudera-scm-server
查看启动日志:
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log,显示
INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.
表示启动成功。
9、启动agent,别忘记配置config.ini,指向node1节点。
systemctl start cloudera-scm-agent
至此,cdh全部环节部署完成。
这里可以建个快照。
五、CDH集群配置
由于阿里云ECS服务器的Centos环境是无界面的,没办法直接使用内置的浏览器进行设置,我们只能通过外网端口进行设置,通过阿里云配置7180端口的访问权限,配置完成后,访问主节点node1的外网地址:7180。显示如下登陆界面:
输入默认的用户名密码:admin,admin进行登陆设置。
后续如无特殊说明,直接点击下一步进行默认设置。
版本选择时选择Express免费版本,基本能够满足使用。
这一步能够看到已经连接的主机,全部选中,进行下一步。我这里当时忘了截图,使用的别人的界面,勿怪。
如果这一步无法自动识别agent主机,尝试重启agent服务,还是不行尝试删除uuid:rm -rf /var/lib/cloudera-scm-agent/uuid,再重启agent服务。但是这时候会多出几个节点,原因是scm数据库hosts表多了几条uuid的记录,删除即可,如果不能删除,则重新初始化数据库。
這裏CDH版本选择6.1.0,其他默认。如果没有该选项,回到4.6,4.7步骤查看是否如此操作。
这里完成parcel的下载和分发,因为已经在4.7步骤配置parcel-repo,无需再网络下载,直接分发,如果分发过程出现主机运行状态不良的问题,删除agent的guid文件。如下:rm -rf /var/lib/cloudera-scm-agent/cm_guid,重启agent
这一步用来测试数据库的连接,配置数据库hue错误:Unexpected error. Unable to verify database connection错误,查看日志,缺少包,安装如下:
wget https://dev.mysql.com/get/Downloads/mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
后续一路继续,知道完成为止。