本文档用于指导在虚拟机环境中搭建CDH环境。
Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”),基于Web的用户界面,支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop,简化了大数据平台的安装、使用难度。
在本机虚拟机搭建环境,建议使用CentOS7.0(64bit)及以上,查看系统版本相关命令如下:
[root@hadoop22 etc]# more /etc/centos-release CentOS Linux release 7.4.1708 (Core) [root@hadoop22 installPackage]# cat /proc/version Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017 #确认OS是32bit还是64bit [root@hadoop22 installPackage]# getconf LONG_BIT 64安装包名称及版本:cloudera-manager-centos7-cm5.12.x_x86_64.tar.gz 下载地址:http://archive.cloudera.com/cm5/cm/5/
安装包名称及版本: CDH-5.12.0-1.cdh5.12.0.p0.29-el7.parcel CDH-5.12.0-1.cdh5.12.0.p0.29-el7.parcel.sha manifest.json 下载地址:http://archive.cloudera.com/cdh5/parcels/
安装包名称及版本:JDK1.8 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
安装包名称及版本: mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar mysql-connector-java-5.1.46.tar.gz 下载地址: http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar https://dev.mysql.com/downloads/connector/j/3.0.html
环境搭建采用vmware虚拟机安装,服务器规划规划如下:
主机名称IP地址CPU内存备注hadoop2210.141.71.222颗 x 1核16GB主节点hadoop2310.141.71.232颗 x 1核8GBhadoop2410.141.71.242颗 x 1核8GBhadoop2510.141.71.252颗 x 1核8GB因为虚拟机是通过vmware的克隆功能拷贝的,4台虚拟机名称相同,我们需要将其修改为规划的名称。使用"hostnamectl set-hostname 主机名"即可修改,例如将hadoop22修改为hadoop23: #修改本机hostname hostnamectl set-hostname hadoop23
这里我们采用固定IP,执行修改配置文件即可,网卡的配置文件在"/etc/sysconfig/network-script/"下面,以hadoop22这台主机为例,这里使用的网卡为:ifcfg-ens33,将其配置信息修改为如下:
# 编辑网卡信息 [root@hadoop22 network-scripts]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 # 参照以下进行配置 TYPE=Ethernet NAME=ens33 UUID=a043a2bb-babb-4864-8e2a-c2c98dbdd8b5 DEVICE=ens33 ONBOOT=yes IPADDR=10.141.71.22 NETMASK=255.255.255.0 GATEWAY=10.141.71.254备注:所有服务器都需要按照以上要求进行配置
修改4台主机的"/etc/hosts"文件,注意,127.0.0.1和::1不能删除。
# 编辑hosts文件 [root@hadoop22 ~]# vim /etc/hosts # 根据实际情况参考以下配置内容进行修改 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # 添加映射 10.141.71.22 hadoop22 10.141.71.23 hadoop23 10.141.71.24 hadoop24 10.141.71.25 hadoop25修改"/etc/selinux/config"文件,将SELINUX值改为disabled。
[root@hadoop22 ~]# vi /etc/selinux/config SELINUX=disabled配置完成后,节点之间相互不需要密码。
1、执行以下命令,生成文件:
[root@hadoop22 ~]# ssh-keygen -t rsa # 此时会生成.ssh文件 [root@hadoop22 ~]# pwd /root [root@hadoop22 ~]# ll -a ... drwx------. 2 root root 80 Apr 6 15:48 .ssh ... # 里面有2个文件 [root@hadoop22 .ssh]# ll total 16 -rw-------. 1 root root 1679 Apr 6 15:46 id_rsa -rw-r--r--. 1 root root 395 Apr 6 15:46 id_rsa.pub2、添加公钥到认证文件中
[root@hadoop22 .ssh]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys3、然后把authorized_keys文件scp到其它节点,在这之前,需要在其它节点先创建.ssh文件夹
# 在23、24、25节点执行 [root@hadoopxx ~]# mkdir .ssh # 将密钥复制到其他节点服务器 [root@hadoop22 ~]# scp ~/.ssh/authorized_keys root@10.141.71.23:~/.ssh/ [root@hadoop22 ~]# scp ~/.ssh/authorized_keys root@10.141.71.24:~/.ssh/ [root@hadoop22 ~]# scp ~/.ssh/authorized_keys root@10.141.71.25:~/.ssh/注意,确保.ssh文件夹的权限为700,id_rsa.pub和authorized_keys权限为644,其他权限都会导致SSH出问题。
CDH集群的时间必须同步,,否则安装完成会报错:不良 : 无法找到主机的 NTP 服务,或该服务未响应时钟偏差请求。
1、NTP规划 由于在局域网内安装,不能访问互联网,故采用hadoop22的本地时间来做同步。规划如下:
NTP属性主机IP地址NTP serverhadoop2210.141.71.22NTP clienthadoop23、hadoop24、hadoop2510.141.71.23、10.141.71.24、10.141.71.252、查看是否安装了NTP软件包
[root@hadoop22 ~]# rpm -qa ntp ntp-4.2.6p5-25.el7.centos.2.x86_64 # centos7.4自带了ntp软件包,无需再安装。3、修改NTP server
# 修改"/etc/ntp.conf"配置文件,如下: driftfile /var/lib/ntp/drift # Permit time synchronization with our time source, but do not # permit the source to query or modify the service on this system. restrict default ignore #新增行1 restrict 10.141.71.0 mask 255.255.255.0 notrap nomodify #新增行2:运行71网段的所有IP同步 /var/lib/ntp/drift #新增行3 fudge 127.127.1.0 stratum 10 #新增行4 # Permit all access over the loopback interface. This could # be tightened as well, but to do so would effect some of # the administrative functions. restrict 127.0.0.1 restrict ::1 # Hosts on local network are less restricted. #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 127.127.1.0 #新增行5:ntp server服务器地址,127.127.1.0是本服务器的IP server 10.141.71.22 #新增行6:ntp server服务器地址 #broadcast 192.168.1.255 autokey # broadcast server #broadcastclient # broadcast client4、 NTP client 去除原来的ntp server,添加新的ntp server。
# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 10.141.71.22 #新增行1:添加ntp服务器5、启动ntp服务 在所有节点上执行如下命令启动ntp服务。
# /bin/systemctl restart ntpd.service #启动ntp服务 # /bin/systemctl enable ntpd.service #设置开机启动6、查看ntp服务时间同步信息 ntpdc用于查询ntpd守护进程对其当前状态和要求的变化。程序可以运行在交互模式下使用命令行参数或控制。ntpdc -np可以看到所使用的时间服务器。
7、进行时间同步 在ntp client节点执行ntpdate hadoop22命令,将所有客户端的时间与服务器同步。 说明:NTP服务启动需要大约五分钟时间,服务启动之前,若客户端同步时间,则会出现错误“no server suitable for synchronization found”。
8、配置每天进行一次时间同步 在3台ntp client上配置crontab,执行:
[root@hadoop23 ~]# crontab -e # 添加1行 30 12 * * * /usr/sbin/ntpdate 10.141.71.22 >> /tmp/ntdp.log该行信息表示,每天12:30执行一次时间同步,并将执行结果输出到"/tmp/ntpd.log"文件中。
在所有节点安装jdk,这里现在主节点安装,然后scp到其它节点。
1、查找已安装的openjdk
[root@hadoop22 ~]# rpm -qa |grep java javapackages-tools-3.4.1-11.el7.noarch java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64 tzdata-java-2017b-1.el7.noarch python-javapackages-3.4.1-11.el7.noarch java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 #open jdk java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64 #open jdk java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.5.el7.x86_64 #open jdk2、卸载已安装的openjdk
# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.5.el7.x86_64 # rpm -e --nodeps java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 # rpm -e --nodeps java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_643、安装新的jdk 解压下载好的jdk,并重新命名(重新命名只是方便简化路径)
[root@hadoop22 opt]# tar -xzvf /root/Desktop/installPackage/jdk-8u161-linux-x64.tar.gz [root@hadoop22 opt]# mv jdk1.8.0_161 jdk1.8 [root@hadoop22 opt]# ls jdk1.84、配置环境变量
root@hadoop22 opt]# vim /etc/profile #添加以下: export JAVA_HOME=/opt/jdk1.8 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin5、使生效
[root@hadoop22 opt]# source /etc/profile6、测试
[root@hadoop22 opt]# echo $JAVA_HOME /opt/jdk1.87、复制到其它节点:
scp -r /opt/jdk1.8 root@10.141.71.23:/opt scp -r /opt/jdk1.8 root@10.141.71.24:/opt scp -r /opt/jdk1.8 root@10.141.71.25:/opt8、修改剩余系统环境变量
mysql数据库只需要在主节点(hadoop22)安装即可。
1、卸载mariadb
[root@hadoop22 installPackage]# rpm -qa |grep mariadb mariadb-libs-5.5.56-2.el7.x86_64 [root@hadoop22 installPackage]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_642、解压mysql
[root@hadoop22 opt]# tar -xvf /root/Desktop/installPackage/mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar [root@hadoop22 opt]# ls jdk1.8 mysql-community-libs-5.7.16-1.el7.x86_64.rpm mysql-community-client-5.7.16-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.16- 1.el7.x86_64.rpm mysql-community-common-5.7.16-1.el7.x86_64.rpm mysql-community-minimal-debuginfo-5.7.16- 1.el7.x86_64.rpm mysql-community-devel-5.7.16-1.el7.x86_64.rpm mysql-community-server-5.7.16- 1.el7.x86_64.rpm mysql-community-embedded-5.7.16-1.el7.x86_64.rpm mysql-community-server-minimal-5.7.16- 1.el7.x86_64.rpm mysql-community-embedded-compat-5.7.16-1.el7.x86_64.rpm mysql-community-test-5.7.16-1.el7.x86_64.rpm mysql-community-embedded-devel-5.7.16-1.el7.x86_64.rpm rh3、只需要按顺序安装4个包即可
[root@hadoop22 opt]# rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm [root@hadoop22 opt]# rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm [root@hadoop22 opt]# rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm [root@hadoop22 opt]# rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm备注:HUE需要安装mysql-community-devel-5.7.24-1.el7.x86_64.rpm
4、mysql 启动停
# 查看mysql是否启动 service mysqld status # 启动mysql service mysqld start # 停止mysql service mysqld stop # 重启mysql service mysqld restart5、设定开机自启动
[root@hadoop22 opt]# vim /etc/rc.local 添加 service mysqld start6、确认mysql初始密码
[root@hadoop22 log]# more /var/log/mysqld.log |grep password 2018-04-03T11:50:22.636798Z 1 [Note] A temporary password is generated for root@localhost: xMsoLF;oa7h=7、登录mysql
[root@hadoop22 log]# mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.168、修改密码(大写+小写+特殊字符)
mysql> set password = password("Mysql_123456"); Query OK, 0 rows affected, 1 warning (0.00 sec)9、使用新密码重新登陆就好了
[root@hadoop22 log]# mysql -uroot -pMysql_12345610、创建3个数据库,并授权
#建库命令 create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci; create database sentry DEFAULT CHARSET utf8 COLLATE utf8_general_ci; create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci; grant all privileges on *.* to 'root'@'hadoop22' identified by 'Mysql_123456' with grant option; flush privileges;cloudera manager默认安装在"/opt"目录下,进入"/opt"目录,解压安装包,生成2个文件夹cloudera和cm-5.7.x
[root@hadoop22 ~]# cd /opt [root@hadoop22 opt]# tar -xzvf /root/Desktop/installPackage/cloudera-manager-centos7-cm5.12.x_x86_64.tar.gz首先解压jdbc包:
tar -xzvf mysql-connector-java-5.1.46解压后的文件如下: 其中"mysql-connector-java-5.1.46-bin.jar"是我们需要的,将其拷贝到"/opt/cm-5.12.x/share/cmf/lib"路径下。
在主节点初始化CM的数据库:
/opt/cm-5.12.x/share/cmf/schema/scm_prepare_database.sh mysql -hhadoop22 -uroot -pMysql_123456 --scm-host hadoop22 scm scm Scm_123456说明:这个脚本就是用来创建和配置CMS需要的数据库的脚本。各参数是指: mysql:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。 -hhadoop22:数据库建立在hadoop22主机上面。也就是主节点上面。注意主机前面有个“h” -uroot:root身份运行mysql。-Mysql_123456:mysql的root密码是Mysql_123456。 –scm-host hadoop22:CMS的主机,一般是和mysql安装的主机是在同一个主机上。 最后三个参数是:数据库名,数据库用户名,数据库密码。
修改主节点的agent配置文件,仅需修改server_host参数即可:
[root@hadoop22 ~]# vim /opt/cm-5.12.x/etc/cloudera-scm-agent/config.ini server_host=hadoop22将CDH5相关的包放到主节点的"/opt/cloudera/parcel-repo"路径下,parcels相关文件有以下3个
[root@hadoop22 parcel-repo]# cd /opt/cloudera/parcel-repo/ [root@hadoop22 parcel-repo]# ll -rw-r--r--. 1 root root 1448796525 Apr 5 18:40 CDH-5.12.x-1.cdh5.12.x.p0.6-el7.parcel -rw-r--r--. 1 root root 41 Apr 5 18:37 CDH-5.12.x-1.cdh5.12.x.p0.6-el7.parcel.sha1 -rw-r--r--. 1 root root 51240 Apr 5 18:38 manifest.json重命名"CDH-5.12.x-1.cdh5.12.x.p0.6-el7.parcel.sha1"为"CDH-5.12.x-1.cdh5.12.x.p0.6-el7.parcel.sha",如果不修改,系统会重新下载"CDH-5.12.x-1.cdh5.12.x.p0.6-el7.parcel"文件。
启动脚本使用方法如下:
[root@hadoop22 ~]# /opt/cm-5.12.x/etc/init.d/cloudera-scm-server Usage: cloudera-scm-server {start|force_next_start|stop|restart|status|condrestart}1、在主节点启动cm server
[root@hadoop22 ~]# /opt/cm-5.12.x/etc/init.d/cloudera-scm-server start2、在所有节点(包括主节点)启动cm agent
[root@hadoop23 ~]# /opt/cm-5.12.x/etc/init.d/cloudera-scm-agent start3、查看server和agent的状态 在主节点,server和agent都在运行: 其它节点,server不运行,只有agent运行: