CDH5.8.3集群部署
操作环境:
jdk下载:
http://download.oracle.com/otn/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm 可能需要登录oracle
下载mysql和mysql驱动:
mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar
下载链接:https://dev.mysql.com/downloads/file/?id=471503
mysql-connector-java-5.1.42.tar.gz
下载链接:https://dev.mysql.com/downloads/file/?id=470332
hostname修改
修改hostname必须在所有节点的root权限下。如果要永久修改hostname的名称,则可以使用hostnamectl相关命令就行hostname修改。
永久修改hostname的命令:hostnamectl set-hostname zysdmaster000
hostnamectl set-hostname *slave001
hostnamectl set-hostname *slave002
可以使用hostnamectl或者hostnamectl status命令查看hostname的修改情况,使用hostnamectl命令不用重启服务器。
hostname与ip对应
使hostname与ip对应是为了以后的使用方便,如以后的SSH的无密码登录、CDH的配置和scp命令的使用等。
在root权限下操作:
vi /etc/hosts
在所有节点中把/etc/hosts中的自带的内容删除掉后添加ip和hostname的映射
关闭selinux和防火墙
在root权限下执行命令:vi /etc/sysconfig/selinux
防火墙
systemctl stop firewalld
systemctl disable firewalld
使用以下命令查看防火墙状态:systemctl status firewalld
ssh无密码登录
本集群完全是在root权限下,因此使用root用户配置ssh无密码登录
在所有节点上执行命令:ssh-****** -t rsa
几次enter后在/root/.ssh/目录下有id_rsa、id_rsa.pub和known_hosts三个文件。
在zysdslave001执行:
cp /root/.ssh/id_rsa.pub id_rsa.pub001
scp -r /root/.ssh/id_rsa.pub001 *slavemaster000:/root/.ssh/
在此执行scp命令会用到root的密码
在zysdslave002中执行:
cp /root/.ssh/id_rsa.pub id_rsa.pub002
scp -r /root/.ssh/id_rsa.pub002 *slavemaster000:/root/.ssh/
在此执行scp命令会用到root的密码
以上两个执行是为了对id_rsa.pub备份,防止id_rsa.pub破坏
在zysdmaster000中的/root/.ssh/路径中有id_rsa.pub、id_rsa.pub001、id_rsa.pub002三个要使用的文件,
执行命令:cat id_rsa.pub >> authorized_keys
cat id_rsa.pub001 >> authorized_keys
cat id_rsa.pub002 >> authorized_keys
执行命令:scp -r /root/.ssh/authorized_keys *slave001:/root/.ssh/
在需要scp目的的机器上执行:scp [email protected]:/root/.ssh/authorized_keys 另一台机器的目的路径
scp -r /root/.ssh/authorized_keys *slave002:/root/.ssh/
此处使用scp命令还是要使用密码的。
chmod 700 /root/.ssh/
chmod 600 authorized_keys
至此ssh无密码登录完成。
jdk安装
在此使用的jdk版本为:jdk-8u45-linux-x64.rpm
使用的jdk我安装在root权限下,执行命令:
rpm -ivh jdk-8u45-linux-x64.rpm
完成,jdk默认安装在/usr/java/jdk1.8.0_45目录下
配置环境变量:vi /etc/profile
使环境变量生效,命令:
source /etc/profile
每个slave都要安装jdk,两个命令可以一起执行,两个命令之间使用&&连接,如下:
mkdir softwares && scp [email protected]:/root/softwares/jdk-8u45-linux-x64.rpm ./
第三方依赖包安装
yum install chkconfig python bind-utils psmisc libxslt zlib sqlite fuse fuse-libs RedHat-lsb cyrus-sasl-plain cyrus-sasl-gssapi
CDH需要使用mysql数据库,我的数据库配置在*master000服务器上,mysql的配置不再阐述。
所有节点中都要把mysql驱动jar包放入/usr/share/java/中
把mysql的驱动放在/usr/share/java/路径下,如果没有/usr/share/java路径则手动建,使用cp顺便把mysql驱动名称修改为:mysql-connector-java.jar。执行命令:
cp mysql-connector-java-5.1.42-bin.jar /usr/share/java/mysql-connector-java.jar
安装Cloudera-Manager
在所有节点root目录下执行。
mkdir /opt/cloudera-manager
解压cloudera-manager,在所有节点的root权限下执行:
tar -zxvf cloudera-manager-centos7-cm5.8.3_x86_64.tar.gz -C /opt/cloudera-manager
在所有节点root用户下创建cloudera-scm用户
useradd -r -d /opt/cloudera-manager/cm-5.8.3/run/cloudera-scm-server -M -c "Cloudera SCM User" cloudera-scm
在*slave001和*slave002的节点(从节点)上配置agent,把server_host修改成master的hostname(ip亦可),其中master节点是否修改均可。
命令:
vim /opt/cloudera-manager/cm-5.8.3/etc/cloudera-scm-agent/config.ini
在(master)主节点中创建parcel-repo仓库
mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
mv CDH-5.8.3-1.cdh5.8.3.p0.2-el7.parcel.sha1 CDH-5.8.3-1.cdh5.8.3.p0.2-el7.parcel.sha
把CDH-5.8.3-1.cdh5.8.3.p0.2-el7.parcel.sha1中的1符号去掉。
把parcel、parcel.sha和manifest.json 放到/opt/cloudera/parcel-repo中
cp CDH-5.8.3-1.cdh5.8.3.p0.2-el7.parcel CDH-5.8.3-1.cdh5.8.3.p0.2-el7.parcel.sha manifest.json /opt/cloudera/parcel-repo
Clouder-Manager将CDHs从主节点的/opt/cloudera/parcel-repo目录中抽取出来,分发解压**到各个节点的/opt/cloudera/parcels目录中。
CDH-5.8.3对应的是hadoop-2.6.0版本(从manifest.json查看)
1、连接在另外一台机器上的mysql
因为我的mysql创建在master ip服务器中,因此在主节点(master)初始脚本配置数据库scm_prepare_database.sh:
/opt/cloudera-manager/cm-5.8.3/share/cmf/schema/scm_prepare_database.sh mysql -h59.110.60.203 -uroot -p*admin123 --scm-host ip scmdbn scmdbu scmdbp
如果mysql和cloudera-manager安装在同一台服务器上,以mysql和cloudera-manager都放在zysdmaster000服务器上,则:
/opt/cloudera-manager/cm-5.8.3/share/cmf/schema/scm_prepare_database.sh mysql -h*master000 -uroot -p*admin123 --scm-host *master000 scmdbn scmdbu scmdbp
其中:mysql:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。
-hhadoop1:数据库建立在hadoop1主机上面。也就是主节点上面。
-uroot:root身份运行mysql。-pzysdadmin123:mysql的root密码。
--scm-host *master000:CMS的主机,一般是和mysql安装的主机是在同一个主机上。
最后三个参数是:数据库名,数据库用户名,数据库密码。
2、连接本机上的mysql
如果是在集群中某个机器上安装mysql专门用户管理CM,则要保证mysql能进行远程连接,还要对其进行远程连接权限设置,使用以下命令可以对其进行修改权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'*bj000' IDENTIFIED BY 'hb2*admin123' WITH GRANT OPTION;
解释:
*bj000:为CM进行连接mysql的用户,*bj000设定连接msyql权限,也是机器的主机名
b2*admin123:用户*bj000连接mysql的密码
在主节点(master)初始脚本配置数据库scm_prepare_database.sh:
/opt/cloudera-manager/cm-5.8.3/share/cmf/schema/scm_prepare_database.sh mysql -h*bj000 -uroot -p*min123 --scm-host *bj000 scmdbn scmdbu scmdbp
总结:两种连接msyql方案使用一种即可
在各个节点启动agent服务
/opt/cloudera-manager/cm-5.8.3/etc/init.d/cloudera-scm-agent start
在主节点(master)中启动server
/opt/cloudera-manager/cm-5.8.3/etc/init.d/cloudera-scm-server start
等待几分钟后在任一浏览器上查看
http://master_ip:7180/cmf/login