这个配置是我在网上看到的,我就借用了这个配置:java
主节点:8g内存、硬盘80gnode
从节点:2g内存、硬盘80gpython
安装系统的时候,我建议将IP和主机名都给配置好,这样就省的在系统中进行配置了,固然下面也有在系统中配置的方法。虚拟机系统安装能够参见:虚拟机:CentOS 7系统安装mysql
因此若是你要使用虚拟机来完成这个配置的话,那么,你的主机的配置内存就不能低于16G了。并且还要找一个盘符较大的磁盘空间,否则到后面操做CDH的时候会很尴尬,我第一次就被卡在了硬盘空间不足上,而后又从新找了一个较大的盘符进行了从新安装,包括虚拟机系统。linux
1.JDK版本:jdk-8u131-linux-x64.tar.gzweb
2.Scala版本:scala-2.11.0.tgzsql
以上两个包建议使用rpm或者yum安装,这样能够省点事,不过我是使用的这两个包。数据库
3.jdbc链接包:mysql-connector-java-5.1.38-bin.jarexpress
4.MySQL相关包:json
MySQL-client-5.6.29-1.linux_glibc2.5.x86_64.rpm
MySQL-server-5.6.29-1.linux_glibc2.5.x86_64.rpm
5.CDH安装相关的包:
cloudera manager包:cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz
CDH包:
CDH-5.7.2-1.cdh5.7.2.p0.11-el7.parcel
CDH-5.7.2-1.cdh5.7.2.p0.11-el7.parcel.sha1
manifest.json
注意centos要下载el7的。
6.系统使用Linux的CentOS 7版本,CentOS 7和CentOS 6.5在命令上有一些区别,这里会进行说明。
IP地址 |
主机名 |
说明 |
---|---|---|
192.168.75.41 |
cdh01 |
主节点、从节点 |
192.168.75.42 |
cdh02 |
从节点 |
192.168.75.43 |
cdh03 |
从节点 |
修改每台节点服务器的有关配置,包括IP、hostname、selinux,防火墙。
若是你在安装CentOS7系统的时候已经指定了主机名和IP地址,那么IP修改和hostname修改就能够省略。可是这里面要强调一点的是,若是你想使用yum安装,那么DNS必定要配置。
这里要使用固定IP,而centOS 7已经没有setup命令,因此图形界面的设置已经没有了,这里只能修改配置文件,并且配置文件的名称还不固定,每一个人的均可能不同,这里我说一下位置,IP配置文件的位置:/etc/sysconfig/network-scripts/,以下图:
这里个人配置文件名称叫作ifcfg-ens33。而CentOS 7系统居然连vim也没有了,只有vi,因此就是以下:
如上图:BOOTPROTO、ONBOOT是须要修改的,剩下四项是须要手动添加的。由于后面要使用yum安装,因此这里必须配置DNS,测试环境能够将DNS配置成网关的地址。
如上图,重启网络服务,这个命令没有更改,而后查看ip。
每台都进行这样的配置。
分别对三台都进行更改,而且注意每台名称和ip,每台都要配上。
[root@hodoop1~] vi /etc/sysconfig/network #配置内容 NETWORKING=yes HOSTNAME=cdh01
此处修改完成须要重启才能生效,也可使用以下方法,当即生效:
[root@hodoop1~] hostname cdh01 [root@hodoop1~] hostname cdh01
CentOS 7.0默认使用的是firewall做为防火墙,相关操做变更很大,和6.5版本的一点也不同,操做以下:
[root@hadoop1~]firewall-cmd --state #查看防火墙状态 running [root@hadoop1~]systemctl stop firewalld #中止防火墙的服务 [root@hadoop1~]systemctl disable firewalld #禁止开机启动 rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service' rm '/etc/systemd/system/basic.target.wants/firewalld.service'
全部节点都须要关闭,这是官方文档要求的。
[root@hadoop1~]vi /etc/sysconfig/selinux SELINUX=disabled
重启才能生效,重启后检查。
[root@cdh01~]sestatus -v SELinux status: disabled #表示已经关闭了。
安装过程当中master须要各个节点的root免登陆密码,先在master上生成公钥:
ssh-keygen ssh-copy-id root@192.168.75.41 ssh-copy-id root@192.168.75.42 ssh-copy-id root@192.168.75.43
分别对每台节点进行以上操做,操做完了能够经过ssh ip进行验证是否能够无需输入密码就能直接登陆到节点服务器上去。
操做以下:
[root@hadoop1~]vi /etc/hosts #内容以下 127.0.0.1 localhost ::1 localhost 192.168.75.41 cdh01 192.168.75.42 cdh02 192.168.75.43 cdh03
内容如上,保存退出,而后可使用scp命令将这个配置拷贝给其余主机。
scp /etc/hosts root@192.168.75.42:/etc/hosts
网上不少博客都提到这个配置,说是让各个节点统一时间,可是我没有配置,我也将这个配置放到这里:
[root@cdh01~]yum -y install ntp #更改master的节点 [root@cdh01~]vi /etc/ntp.conf
注释掉全部server *.*.*的指向,新添加一条可链接的ntp服务器(百度一下ntp服务器)
server ntp.sjtu.edu.cn iburst
在其余节点上把ntp指向master服务器地址便可(/etc/ntp.conf下)
server 192.168.160.130 iburst 全部节点。
也可参见:NTP服务搭建
针对这个步骤,你能够看网上不少的博客都是将这个步骤放到了MySQL安装的后面,可是通过本人的测试,这一步仍是放在前面比较好,由于后面安装的软件,但凡是有依赖的,你在这里已经作好了,因此在这里操做安装依赖包,而且是全部节点都安装。
yum install chkconfig python bind-utils psmisc libxslt zlib sqlite fuse fuse-libs redhat-lsb cyrus-sasl-plain cyrus-sasl-gssapi
注意这个地方依赖包必定要安装完整了,会通过三个y/N的过程,所有选择Y,这个安装的过程彻底看你的网速了,基本敲完这个命令你就能够休息一会了。
这个环节只须要在主节点上进行便可。
在cdh01上准备mysql的jar包:
mkdir -p /usr/share/java
修改jar包的名字,并拷贝到/usr/share/java/目录:
cp mysql-connector-java-5.1.38-bin.jar /usr/share/java/mysql-connector-java.jar
注意上述操做,是修改了jar包的名字,由于后面有操做会寻找这个jar包的这个固定的名字,因此这里要修改一下名字。
这个是全部服务的基础,每一个节点都须要安装。
安装以前首先检查一下,你的服务器是否默认安装了OpenJDK,若是系统自带了,就须要卸载,步骤以下:
#检查是否安装 [root@cdh01~]java -version java version "1.7.0_75" OpenJDK Runtime Environment (rhel-2.5.4.2.el7_0-x86_64 u75-b13) OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode) #查看须要卸载的包 [root@cdh01~]rpm -qa | grep jdk java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64 java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64 #卸载 [root@cdh01~]yum -y remove java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64 [root@cdh01~]yum -y remove java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64 #再次检查 [root@cdh01~]java -version bash: /usr/bin/java: No such file or directory
若是没有安装,则能够跳过此步骤,个人系统没有自带jdk。
以下两个方法,任选其一,不要都作。
直接使用命令进行安装便可,这里不作过多解释。
将准备的好的安装包上传,我习惯的目录是:/home/software,上传完成,进行解压:
tar -zxvf jdk-8u131-linux-x64.tar.gz mv jdk-1.8.0 jdk1.8
若是你还要安装spark,能够将环境变量和Scala一块儿配置。
配置环境变量:
vi /etc/profile
在文件中追加一下内容:
#java export JAVA_HOME=/home/software/jdk1.8 export PATH=$PATH:$JAVA_HOME/bin
保存退出以后,这里还须要设置一个软链接:
mkdir /usr/java ln -s /home/software/jdk1.8 /usr/java/default
若是你使用的是yum或者rpm安装的jdk那么这些步骤就能够省略。由于CDH平台安装的时候默认寻找的jdk路径为/usr/java。
若是你要安装Spark必定不能省略Scala的安装,不然,你在web端操做CDH的时候,会给你报错,网上的解决方法,基本都是说的jdk没人说到Scala。
这个操做一样也是在全部的节点上。
目录仍是在/home/software。操做以下:
tar -zxvf scala-2.11.0.tgz mv scala-2.11.0 scala2.11
而后配置环境变量:
vi /etc/profile
一样在末尾追加如下内容:
export SCALA_HOME=/home/software/scala2.11 export PATH=$PATH:$SCALA_HOME/bin
MySQL的安装只须要在主节点进行便可。
安装MySQL也一样须要检查,系统是否自带了,centos7自带的是mariadb,首先检查,命令以下:
[root@cdh01]rpm -qa | grep mariadb mariadb-libs-5.5.41-2.el7_0.x86_64
如上的状况是存在,若是存在就使用如下命令进行卸载:
[root@cdh01]rpm -e --nodeps mariadb-libs-5.5.41-2.el7_0.x86_64
将下载好的MySQL rpm包拷贝到服务器上,而后解压、安装。
#增长用户组mysql: groupadd mysql #增长用户mysql,加入mysql用户组: useradd -r -g mysql mysql
#安装server: rpm -ivh MySQL-server-5.6.29-1.linux_glibc2.5.x86_64.rpm #安装client: rpm -ivh MySQL-client-5.6.29-1.linux_glibc2.5.x86_64.rpm
将mysqld加入系统服务,并随机启动,命令以下:
cp /usr/share/mysql/mysql.server /etc/init.d/mysqld
启动mysqld的命令以下:
service mysqld start
首先获取mysql安装时root用户的随机密码:
vim /root/.mysql_secret
也可以使用cat命令查看:
cat /root/.mysql_secret
此密码只能用来修改密码使用。
必需要修改root用户的密码才可使用mysql,不然只能链接不能操做
mysqladmin -u root -p password root
#链接进入mysql,命令以下: mysql -u root -p root #查看mysql的安装运行路径,命令以下: ps -ef|grep mysql
若是出现没有权限的问题,在mysql受权(在安装mysql的机器上执行),执行下面的语句,进行受权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; FLUSH PRIVILEGES;
*.*:全部库下的全部表。
%:任何IP地址或主机均可以链接。若是%配置不生效,就配置具体的主机名称。
以下命令是建立部署各个服务所需的数据库,我本人倾向用不用先建立好,用的时候就能够直接部署服务了,没必要再来数据库进行建立。
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci; create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci; create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci; create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci; create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
将Cloudera相关的四个包,以下:
cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz
CDH-5.7.2-1.cdh5.7.2.p0.11-el7.parcel
CDH-5.7.2-1.cdh5.7.2.p0.11-el7.parcel.sha1
manifest.json
上传到全部的服务器上,在全部的服务器上执行如下操做。
解压cm tar包到指定目录,先建立目录,命令操做以下:
[root@cdh01 ~]mkdir /opt/cloudera-manager [root@cdh01 ~]tar -zxvf cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz -C /opt/cloudera-manager
建立cloudera-scm用户
#建立 [root@cdh01 ~]useradd -r -d /opt/cloudera-manager/cm-5.7.2/run/cloudera-scm-server -M -c "Cloudera SCM User" cloudera-scm #查看 [root@cdh01 ~]id cloudera-scm
配置从节点cloudera-manger-agent指向主节点服务器,我如今的集群规划,是须要在每台服务器上都进行以下配置:
vi /opt/cloudera-manager/cm-5.7.2/etc/cloudera-scm-agent/config.ini
将server_host改成CMS所在的主机名即cdh01
server_host=cdh01
此操做只需在主节点进行便可,在主节点中建立parcel-repo仓库目录,命令以下:
[root@cdh01 ~]mkdir -p /opt/cloudera/parcel-repo [root@cdh01 ~]chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo [root@cdh01 ~]cp CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha1 manifest.json /opt/cloudera/parcel-repo
注意:其中CDH-5.7.2-1.cdh5.7.2.p0.18-el5.parcel.sha1 后缀要把1去掉,操做以下:
mv CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha1 CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha
在全部的节点上建立parcels目录,操做以下:
mkdir -p /opt/cloudera/parcels chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
解释:Clouder-Manager将CDH从主节点的/opt/cloudera/parcel-repo目录中抽取出来,分发解压激活到各个节点的/opt/cloudera/parcels目录中。
此操做在主节点上进行,初始脚本配置数据库scm_prepare_database.sh,操做命令以下:
[root@cdh01 ~]/opt/cloudera-manager/cm-5.7.2/share/cmf/schema/scm_prepare_database.sh mysql -hcdh01 -uroot -proot --scm-host cdh01 scmdbn scmdbu scmdbp
说明:这个脚本就是用来建立和配置CMS须要的数据库的脚本。各参数是指:
mysql:数据库用的是mysql,若是安装过程当中用的oracle,那么该参数就应该改成oracle。
-hcdh01:数据库创建在cdh01主机上面。也就是主节点上面。
-uroot:root身份运行mysql。-proot:mysql的root密码是root。
--scm-host cdh01:CMS的主机,通常是和mysql安装的主机是在同一个主机上。
最后三个参数是:数据库名,数据库用户名,数据库密码。
执行完成命令正常以下:
在这个地方就能够解释上面为何要改jar名了。
此命令只需在主节点执行便可。
进入/opt/cloudera-manager/cm-5.7.2/etc/init.d/目录中,执行以下命令:
./cloudera-scm-server start #或者直接执行如下命令: /opt/cloudera-manager/cm-5.7.2/etc/init.d/cloudera-scm-server start
启动cloudera-scm-agent,须要在全部的从节点上启动。
进入/opt/cloudera-manager/cm-5.7.2/etc/init.d/目录中,执行以下命令:
./cloudera-scm-agent start #或者直接执行如下命令: /opt/cloudera-manager/cm-5.7.2/etc/init.d/cloudera-scm-agent start
启动以下图所示:
这里要说明一下,基本上上述两项启动都会配置随机启动,可是我实验了不少个随机启动的方式,都无论用,这里暂时不作,后期我找到能够随机启动的方式再补充。
注:以上环节只要操做的没有问题,如下的步骤将不会出现任何问题。
在浏览器中输入192.168.75.41:7180。
出现下图登陆界面,默认用户名和密码:admin
出现这个界面说明CM已经安装成功了,下面就在这个web界面中部署各类服务了。
此过程当中没有提到的界面,默认选择继续。
当登陆以后,会进入选择express版本的界面,在此界面选择免费便可,而后继续。
在服务器的各个从节点已经安装并启动了agent,还在各个节点都配置了server指向,因此各个节点的agent就会给server发消息报告,这里能够在“当前管理的主机”中看到三个主机,所有勾选并继续。
注意若是cloudera-scm-agent没有设为开机启动,若是以上有重启这里可能会检测不到其余服务器。以前配置的时候,我就没有配置随机启动。
这里选择本身须要的版本便可。这里我选择了两项,其一选择方式使用Parcel;其二CDH版本选择的是CDH-5.7.2-1 cdh5.7.2p0 18;其余均选择无。
此步是分发parcels到各个节点,上一步继续,这一步是自动进行的不须要什么操做,惟一须要的就是等待。当所有完成点击继续。
此步是对主机配置的正确性进行检测。
这个地方要注意这个地方有两项没有检查经过,可是我没作处理,我在网上找到了一个方法,可是不知道具体是否管用,方式以下:
能够在集群中使用如下命令
echo 0 > /proc/sys/vm/swappiness echo never > /sys/kernel/mm/transparent_hugepage/defrag
而后再点击上面的从新运行会发现此次所有检查经过了。
我没有作上面的处理,可是后面的安装也没有影响。
重头戏来了,这里要选择要安装使用的服务,CDH5默认提供了如图的六种搭配,固然那也能够选择则自定义,这里我选择的就是自定义。
这里就是进行各个服务角色分配给那个节点的,能够默认,也能够本身作选择。
这里就用到了前面建立的各个数据库,根据你选择的服务,这里会让你填写每一个服务用到的数据库,以及用户名和密码。
这里就都是默认的就好,除非你有规划,能够在这里进行更改。
若是web引导安装会出问题,那么问题都是出在这一步,这里会出现的问题,我遇到的问题,基本都在前面作了介绍,就是安装jdk和Scala的时候。基本上其余的不会出什么问题。
这个时候安装完成了,点击完成,就会进入以下界面。
查看集群状况,我这里有挺多报警,大概查看下基本都是内存或者存储空间使用阈值的报警,因为我是本地虚拟机的,因此这些条件都有限,这里暂时不处理这些报警。
以上就是安装的所有过程。