配置ip
在每台节点上配置ip,打开/etc/sysconfig/network-scripts/ifcfg-eth0编辑内容如下:
- DEVICE=eth0
- TYPE=Ethernet
- ONBOOT=yes
- NM_CONTROLLED=yes
- BOOTPROTO=static
- IPADDR=192.168.179.201
- NETMASK=255.255.255.0
- GATEWAY=192.168.179.2
- DNS1=192.168.179.2
10. DNS2=8.8.8.8
重启网络服务使ip生效:
- service network restart
三台节点配置的ip分别为:
192.168.179.201,192.168.179.202,192.168.179.203
注意:每台节点克隆后需要删除每台节点/etc/udev/rules.d/70-persistent-net.rules文件,清除mac地址。重启每台节点即可。
配置每台节点的hostname
修改每台节点/etc/sysconfig/network中的HOSTNAME,分别为:cm1,cm2,cm3。设置好每台节点的hostname之后重启每台节点即可生效。
配置节点ip、hostname映射
在每台节点/etc/hosts文件后追加如下内容,配置ip与hostname之间的映射。
- 192.168.179.201 cm1
- 192.168.179.202 cm2
- 192.168.179.203 cm3
关闭防火墙
在每台节点上执行如下命令,关闭防火墙,并设置开机不启动:
- [root@cm3 ~]# service iptables stop
- [root@cm3 ~]# chkconfig iptables off
- [root@cm3 ~]# chkconfig iptables --list
- iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
关闭SELinux
SELinux就是Security-Enhanced Linux的简称,安全加强的linux。传统的linux权限是对文件和目录的owner, group和other的rwx进行控制,而SELinux采用的是委任式访问控制,也就是控制一个进程对具体文件系统上面的文件和目录的访问,SELinux规定了很多的规则,来决定哪个进程可以访问哪些文件和目录。虽然SELinux很好用,但是在多数情况我们还是将其关闭,因为在不了解其机制的情况下使用SELinux会导致软件安装或者应用部署失败。
在每台节点/etc/selinux/config中将SELINUX=enforcing改成SELINUX=disabled即可。
配置本地yum源
这里我们选择使用本地yum源。需要在VM中设置下连接光驱,步骤如下图。
在cm1、cm2、cm3节点上配置本地yum源:
每台节点创建/mnt/cdrom目录:
- mkdir -p /mnt/cdrom
每台节点执行如下命令,将光盘设备/dev/sr0挂载到/mnt/cdrom目录:
- [root@cm1 ~]# mount /dev/sr0 /mnt/cdrom/
- mount: block device /dev/sr0 is write-protected, mounting read-only
每台节点执行命令:df -h查看是否挂载成功:
- df -h
上面的mount命令挂载后在机器重启后会失效,为了可以实现开机自动挂载,可以在每台节点的/etc/fstab文件的最后面加入下面语句:
- /dev/sr0 /mnt/cdrom iso9660 defaults 0 0
下面可以创建本地yum源,在每台节点的/etc/yum.repos.d目录下创建local.repo文件,内容如下:
- [local]
- name=local repo
- baseurl=file:///mnt/cdrom
- enable=1
- gpgcheck=1
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
以上内容中,baseurl是指Yum源的地址,该路径下有个repodata目录,就是yum 安装源目录。file://表示yum源为文件。
如果只想让local.repo生效,可以在每台节点的/etc/yum.repos.d目录下创建一个backup目录,将其他的以“.repo”结尾的文件都移动到backup目录中。
- mkdir -p /etc/yum.repos.d/backup
- mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/backup/
在每台节点上执行以下命令,更新yum源:
- yum clean all
- yum makecache
配置SSH免秘钥登录
在CDH中需要任意两个节点之间都可以免秘钥登录。节点两两免秘钥的根本原理如下:假设A节点需要免秘钥登录B节点,只要B节点上有A节点的公钥,那么A节点就可以免密登录当前B节点。
第一,需要在每台节点上安装ssh客户端,否则,不能使用ssh命令(最小化安装Liunx,默认没有安装ssh客户端):
- yum -y install openssh-clients
第二,在每台节点执行如下命令,在每台节点的“~”目录下,创建.ssh目录,注意,不要手动创建这个目录,因为有权限问题。
- cd ~
- ssh localhost
- #这里会需要输入节点密码#
- exit
第三,在每台节点上执行如下命令,给当前节点创建公钥和私钥:
- ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
第四,将cm1,cm2,cm3的公钥copy到cm1上,这样,cm1,cm2,cm3节点都能登录cm1节点。命令如下:
- 在cm1上执行如下命令,需要输入密码:
- [root@cm1 .ssh]# ssh-copy-id cm1 #会在当前~/.ssh目录下生成authorized_keys文件,文件中存放当前cm1的公钥#
- 在cm2上执行如下命令,需要输入密码:
- [root@cm2 ~]# ssh-copy-id cm1 #会将cm2的公钥追加到cm1节点的authorized_keys文件中#
- 在cm3上执行如下命令,需要输入密码:
- [root@cm3 ~]# ssh-copy-id cm1 #会将cm3的公钥追加到cm1节点的authorized_keys文件中#
最后,将cm1节点上~/.ssh/authorized_keys拷贝到cm2和cm3节点的~/.ssh/目录下,执行如下命令:
- 在cm1上执行如下命令,需要输入密码:
- [root@cm1 .ssh]# scp ~/.ssh/authorized_keys cm2:`pwd`
- [root@cm1 .ssh]# scp ~/.ssh/authorized_keys cm3:`pwd`
经过以上步骤,节点两两免密完成。
节点同步时间
在cm1,cm2,cm3每台节点上执行如下命令,安装ntp服务及配置定时任务:
- yum -y install ntp #安装ntp服务#
- rm -rf /etc/localtime #删除现有时区#
- ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #修改上海时区#
- /usr/sbin/ntpdate -u pool.ntp.org #同步时间#
- date #查看时间#
- #crontab -e 写入如下定时内容:#
- */10 * * * * /usr/sbin/ntpdate -u pool.ntp.org >/dev/null 2>&1 #同步时间定时任务#
- service crond restart #重启定时任务#
- crontab -l #查看定时任务#
- chkconfig ntpd on #设置ntpd 开机启动,不然后期安装CDH时会有警告。
- service ntpd start #启动ntpd服务
安装jdk
给每台节点安装jdk,这里我们安装的CDH版本为5.4,在官网https://www.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html下有介绍CDH5.x版本对应的jdk版本,可以使用jdk7,也可使用jdk8,但是对应的jdk小版本有要求,具体如下:
这里我们选择jdk8版本中的1.8u181版本安装。注意后期如果安装oozie,oozie基于tomcat6运行,需要jdk7的环境。如果需要展示oozie的webui需要安装jdk7。
在每台节点安装jdk,在每台节点中创建/software目录,将jdk8安装包通过ftp工具上传到/software目录下,每台节点执行如下命令安装jdk:
- [root@cm1 ~]# mkdir -p /software
- [root@cm1 ~]# rpm -ivh /software/jdk-8u181-linux-x64.rpm
以上命令执行完成之后,会在每台节点的/usr/java下安装jdk。在每台节点配置jdk的环境变量:
- vim /etc/profile
- #在每台节点中配置profile文件,在最后追加内容如下:#
- export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
- export PATH=$JAVA_HOME/bin:$PATH
- export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
执行完成以上命令之后,在每台节点上执行 “source /etc/profile”使配置生效。
安装mysql数据库
在cm1中安装mysql数据库,执行命令:yum install –y mysql-server
执行完成之后,启动mysql:service mysqld start。登录mysql执行如下语句:
- [root@cm1 java]# mysql
- mysql> use mysql;
- mysql> select user,password from user;
- mysql> delete from user;
- mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
- mysql> flush privileges;
执行如下命令,将mysql设置成开机启动,如果不设置开机启动,后期每次启动ClouderaManager时,需要手动启动MySQL。
- [root@cm1 ~]# chkconfig --add mysqld
- [root@cm1 ~]# chkconfig --level 345 mysqld on
- [root@cm1 ~]# chkconfig --list
安装第三方依赖包
在每台几点上安装第三方依赖包,每台节点执行如下命令:
- yum install -y chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb
至此,安装Cloudera Manager的基础环境准备完成。