实验环境:Win7下vmware虚拟机
操作系统:CentOS 6.5 x64
Clouder Manager:5.14.0
CDH:5.14.0
官方共给出了3中安装方式:第一种方法必须要求所有机器都能连网,由于最近各种国外的网站被墙的厉害,我尝试了几次各种超时错误,巨耽误时间不说,一旦失败,重装非常痛苦。第二种方法下载很多包。第三种方法对系统侵入性最小,最大优点可实现全离线安装,而且重装什么的都非常方便。后期的集群统一包升级也非常好。这也是我之所以选择离线安装的原因。
Cloudera Manager下载地址:
http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.14.0_x86_64.tar.gz
CDH安装包地址:
http://archive.cloudera.com/cdh5/parcels/latest/
由于我们的操作系统为CentOS6.5,需要下载以下文件:
CDH-5.14.0-1.cdh5.14.0.p0.24-el6.parcel
CDH-5.14.0-1.cdh5.14.0.p0.24-el6.parcel.sha1
manifest.json
准备3个节点,一个master节点,二个slave节点。
master:1核3G ;192.168.86.129; master.msxf.hadoop
slave1:1核2G; 192.168.86.130; slave1.maxf.hadoop
slave2:1核2G; 192.168.86.131; slave2.msxf.hadoop
以下操作均用root用户操作。
vim /etc/sysconfig/network
重启操作系统生效
reboot
vim /etc/hosts
添加ip和主机名映射
192.168.86.129 master.msxf.hadoop
192.168.86.130 slave1.msxf.hadoop
192.168.86.131 slave2.msxf.hadoop
在主节点上执行ssh-keygen -t rsa
一路回车,生成无密码的密钥对。
将公钥添加到认证文件中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
,并设置authorized_keys的访问权限:chmod 600 ~/.ssh/authorized_keys
。
在两个slave节点上执行ssh-keygen -t rsa
一路回车,生成无密码的密钥对,并生成.ssh目录,用于认证文件authorized_keys的同步。
scp文件到所有slave节点:
scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
测试:
在主节点上ssh slave1.msxf.hadoop,正常情况下,不需要密码就能直接登陆进去了。
一般情况下,我们都要将linux自带的OPENJDK卸载掉,然后安装SUN的JDK。
由于我的CentOS安装的是mini版本的,没有自带jdk所以可以直接安装。
从Oracle官网下载JDK安装包:
http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz?AuthParam=1517808422_bdd9ddc0a30c84fe1961a9a2f6f1eb63
我下载的是JDK8的最新版本:jdk-8u161-linux-x64.tar.gz
下面是JDK的配置步骤。
在/usr目录下建立目录/java,
cd /usr
mkdir java
把JDK安装包上传到/usr/java目录,解压JDK安装包,
tar -zxvf jdk-8u161-linux-x64.tar.gz
配置环境变量
vim /etc/profile
/etc/profile中添加下面配置项
JAVA_HOME=/usr/java/jdk1.8.0_161
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
检查JDK是否配置成功
java -version
通过yum install mysql-server
安装mysql服务器。chkconfig mysqld on
设置开机启动,并service mysqld start
启动mysql服务,并根据提示设置root的初试密码:mysqladmin -u root password 'xxxx'
。
mysql -uroot -pxxxx
进入mysql命令行,创建以下数据库:
#hive
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity monitor
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
设置root授权访问以上所有的数据库:
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
关闭防火墙:
service iptables stop (临时关闭)
chkconfig iptables off (重启后生效)
关闭SELINUX:
setenforce 0 (临时生效)
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。
具体思路如下:
master节点作为ntp服务器与外界对时中心同步时间,随后对所有slave节点提供时间同步服务。所有slave节点以master节点为基础同步时间。所有节点安装相关组件:yum install ntp
。完成后,配置开机启动:chkconfig ntpd on
,检查是否设置成功:chkconfig --list ntpd
其中2-5为on状态就代表成功。
在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用0.asia.pool.ntp.org作为对时中心,ntpdate 0.asia.pool.ntp.org。
ntp服务只有一个配置文件(/etc/ntp.conf),配置好了就OK。 这里只给出有用的配置,不需要的配置都用#注掉,这里就不在给出:
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
server 0.asia.pool.ntp.org prefer
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
配置文件完成,保存退出,启动服务,执行如下命令:service ntpd start
检查是否成功,用ntpstat命令查看同步状态,出现以下状态代表启动成功:
如果出现异常请等待几分钟,一般等待5-10分钟才能同步。
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server master.msxf.hadoop
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
保存退出,请求服务器前,请先使用ntpdate手动同步一下时间:
ntpdate -u master.msxf.hadoop (主节点ntp服务器)
启动服务:
service ntpd start
安装Cloudera Manager Server 和Agent
cloudera manager的目录默认位置在/opt下,解压:tar xzvf cloudera-manager*.tar.gz
将解压后的cm-5.14.0和cloudera目录放到/opt目录下。
首先需要去MySql的官网下载JDBC驱动,http://dev.mysql.com/downloads/connector/j/,解压后,找到mysql-connector-java-5.1.45-bin.jar
,放到/opt/cm-5.14.0/share/cmf/lib/
中。
设置mysql jar权限
chmod 777 mysql-connector-java-5.1.45-bin.jar
在主节点初始化CM5的数据库:
/opt/cm-5.14.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p123456 --scm-host localhost scm scm scm
修改/opt/cm-5.14.0/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。
同步Agent到其他节点
scp -r /opt/cm-5.14.0 [email protected]:/opt/
scp -r /opt/cm-5.14.0 [email protected]:/opt/
在所有节点创建cloudera-scm用户
useradd --system --home=/opt/cm-5.14.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/
目录中。
相关的文件如下:
最后将CDH-5.14.0-1.cdh5.14.0.p0.24-el6.parcel.sha1
,重命名为CDH-5.14.0-1.cdh5.14.0.p0.24-el6.parcel.sha
,这点必须注意,否则,系统会重新下载CDH-5.14.0-1.cdh5.14.0.p0.24-el6.parcel
文件。
启动服务端
/opt/cm-5.14.0/etc/init.d/cloudera-scm-server start
启动Agent服务
/opt/cm-5.14.0/etc/init.d/cloudera-scm-agent start
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了。
这时可以通过浏览器访问主节点的7180端口测试一下了(由于CM Server的启动需要花点时间,这里可能要等待一会才能访问),默认的用户名和密码均为admin。
http://master.msxf.hadoop:7180
接下来,出现以下包名,说明本地Parcel包配置无误,直接点继续就可以了。
点击,继续,如果配置本地Parcel包无误,那么下图中的已下载,应该是瞬间就完成了,然后就是耐心等待分配过程就行了,大约10多分钟吧,取决于内网网速。
安装JDK无需安装,应为我们已经装好了。
集群安装过程会持续比较长的一段时间,需要耐心等待。