由于是最新版网上上资料比较少,很多问题只能翻墙去找答案。大家只要严格按照我的步骤一步一步来就一定能安装成功,所有步骤都在公司集群上亲自实验过,其中也参考了大量网上资料,在此对那些无私奉献者表示感谢!
在线安装的两种方式就不介绍了,大家可以自己去官网看文档,不推荐大家在线安装,要是安装过程碰到问题会很麻烦。
下面直接进入正题,下载所需离线安装包
Cloudrea Manager5.3.3下载地址
http://archive.cloudera.com/cm5/
下载cloudera-manager-el6-cm5.3.3_x86_64.tar.gz文件
CDH5.3.3下载地址
http://archive.cloudera.com/cdh5/
下载CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel,CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1,manifest.json
这三个文件,其中CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1的文件名需要修改为
CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha
环境准备
1.CentOS release 6.5 (Final)-----cat /etc/issue
2.3台主机:cdh1.hadoop.com
cdh2.hadoop.com
cdh3.hadoop.com
3.每台机器内存16G (建议32G),硬盘1T
4.每台机器确保能连外网
所有节点关闭防火墙
在防火墙开启的情况下,执行如下两条命令:
临时关闭: service iptables stop
永久关闭防火墙:chkconfig iptables off
两个命令同时运行,运行完成后查看防火墙关闭状态:
service iptables status
所有节点关闭SELINUX
修改/etc/selinux/config 下的将SELINUX=enforcing改为SELINUX=disabled(重启后生效)
setenforce 0 临时生效
查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
配置主机名和IP地址
修改/etc/hosts文件,添加:
192.168.1.105 cdh1.hadoop.com
192.168.1.106 cdh2.hadoop.com
192.168.1.107 cdh3.hadoop.com
修改主机名
修改/etc/sysconfig/network文件:
HOSTNAME=cdh1.hadoop.com
执行hostname cdh1.hadoop.com命令让主机名立即生效
执行命令:servicenetwork restart
打通SSH,设置ssh无密码登陆(所有节点)
(1)所有节点(cdh1.hadoop.com、cdh2.hadoop.com、cdh3.hadoop.com):
生成无密码的密钥对:ssh-keygen -t rsa一路回车,生成无密码的密钥对。
(2)主节点(cdh1.hadoop.com):将公钥添加到认证文件中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(3)scp文件到datenode节点(cdh2.hadoop.com):
scp ~/.ssh/authorized_keys [email protected]cdh2.hadoop.com:~/.ssh/
(4)将cdh2.hadoop.com的公钥添加到认证文件中:
cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
(5)复制cdh2.hadoop.com的认证文件到cdh3.hadoop.com:
scp ~/.ssh/authorized_keys [email protected]cdh3.hadoop.com:~/.ssh/
(6)将cdh3.hadoop.com的公钥添加到认证文件中:
cat~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(7)设置authorized_keys的访问权限:
chmod 600 ~/.ssh/authorized_keys。
(8)将最终生成的认证文件复制到所有节点:
scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
scp~/.ssh/authorized_keys [email protected]cdh2.hadoop.com:~/.ssh/
(9)测试(不需要密码能够直接登陆):
sshcdh1.hadoop.com
sshcdh2.hadoop.com
sshcdh3.hadoop.com
安装NTP服务,同步时间
所有节点安装相关组件:yum installntp。
完成后,配置开机启动: chkconfig ntpd on ,
检查是否设置成功:chkconfig--list ntpd其中2-5为on状态就代表成功。
主节点配置(cdh1.hadoop.com)
在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用202.120.2.101(上海交通大学网络中心NTP服务器地址)作为对时中心,输入命令:
ntpdate -u 202.120.2.101
修改配置文件 /etc/ntp.conf,没用的注释掉:
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default nomodify notrap
server 202.120.2.101 prefer #远程服务器地址
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
配置文件修改后,执行如下命令:
1 service ntpd start
2 chkconfig ntpd on (设置开机启动)
ntpstat命令查看同步状态
配置ntp客户端(cdh2.hadoop.com,cdh3.hadoop.com)
修改配置文件 /etc/ntp.conf:
driftfile /var/lib/ntp/drift
restrict127.0.0.1
restrict -6 ::1
restrict default kod nomodify notrap nopeernoquery
restrict -6 default kod nomodify notrapnopeer noquery
server cdh1.hadoop.com #这里是主节点的主机名或者ip
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
手动同步时间ntpdate -u cdh1.hadoop.com
启动服务service ntpdstart
设置开机启动chkconfig ntpd on
安装Oracle的Java(所有节点)
CDH5.3.3需要Java7的支持,使用 rpm -qa | grep java 查询java相关的包,个人根据系统不同可能有所不同,下面是我机器上需要卸载的openJDk
rpm -e --nodeps java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
rpm -e --nodeps java-1.7.0-openjdk-devel-1.7.0.45-2.4.3.3.el6.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
rpm -e --nodeps java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64
去Oracle的官网下载jdk的rpm安装包,并使用 rpm -ivh包名安装
rpm-ivh jdk-7u79-linux-x64.rpm
修改文件/etc/profile改变环境变量
exportJAVA_HOME=/usr/java/jdk1.7.0_79
exportJRE_HOME=$JAVA_HOME/jre
exportPATH=$JAVA_HOME/bin:$PATH
为使生效:source /etc/profile
安装配置Mysql(主节点)
执行命令:yum installmysql-server
设置开机启动:chkconfig mysqld on
启动mysql:service mysqld start
设置root的初始密码:mysqladmin -u root password‘root‘
mysql -uroot -proot 进入mysql命令行,创建以下数据库(根据安装的服务有所区别,我装的是核心组件):
#hive
create database hive DEFAULT CHARSET utf8 COLLATEutf8_general_ci;
#activity monitor
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#hue
create database hue DEFAULT CHARSET utf8 COLLATEutf8_general_ci;
#授权root用户在主节点拥有所有数据库的访问权限
grant all privileges on *.* to ‘root‘@‘cdh1.hadoop.com‘identified by ‘root‘ with grant option;
flush privileges;
安装ClouderaManager Server 和Agent
主节点(cdh1.hadoop.com)解压安装包
将ClouderaManager的压缩包cloudera-manager-el6-cm5.3.3_x86_64.tar.gz复制到/opt目录下,并解压:
sudo tar -zxvf cloudera-manager*.tar.gz
然后复制mysql的jar包mysqldemysql-connector-java-5.1.33-bin.jar到
/opt/cm-5.3.3/share/cmf/lib/目录下。
主节点初始化Cloudera Manager5的数据库,执行以下命令:
/opt/cm-5.3.3/share/cmf/schema/scm_prepare_database.sh mysql cm-h localhost -uroot -proot --scm-host localhost scm scm scm
Agent配置文件修改
修改/opt/cm-5.3.3/etc/cloudera-scm-agent/config.ini
server_host=cdh1.hadoop.com
复制文件到Agent节点
scp -r /opt/cm-5.3.3 [email protected]:/opt/
scp -r /opt/cm-5.3.3 [email protected]:/opt/
在所有节点(包括服务器)创建cloudera-scm用户
sudo useradd --system --home=/opt/cm-5.3.3/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment"Cloudera SCM User" cloudera-scm
安装CDH5.3.3
将前面下载CHD5.3.3 三个安装文件复制到到主节点的/opt/cloudera/parcel-repo/目录下
执行下面的命令,修改parcel-repo文件夹权限,给用户cloudera-scm权限:
sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager/cloudera/parcel-repo
创建parcels文件夹并修改权限:
sudo mkdir -p /opt/cloudera-manager/cloudera/parcels
sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager/cloudera/parcels
启动Server和Agent
主节点 /opt/cm-5.3.3/etc/init.d/cloudera-scm-server start 启动服务端。
所有节点 /opt/cm-5.3.3/etc/init.d/cloudera-scm-agentstart 启动Agent服务。
启动后可通过浏览器访问 http://cdh1;hadoop.com:7180,用户名和密码默认为均为admin
CDH5.3.3的安装过程的问题
1.yarn报错:nodemanager无法启动,Error found before invokingsupervisord: dictionary update sequence element #78 has length1; 2
这个错误是CM的一个bug,解决方法为修改
/opt/cm-5.3.3/lib64/cmf/agent/src/cmf/util.py文件。将其中的代码:
pipe= subprocess.Popen([‘/bin/bash‘, ‘-c‘, ". %s; %s; env" % (path,command)],stdout=subprocess.PIPE, env=caller_env)
修改为:
pipe = subprocess.Popen([‘/bin/bash‘, ‘-c‘, ". %s; %s; env |grep -v { | grep -v }" % (path, command)],stdout=subprocess.PIPE,env=caller_env)
2.hive报错:unable to load driver
所有节点复制mysql的jar包复制到
/opt/cloudera/parcels/CDH-5.3.3-1.cdh5.3.3.p0.5/lib/hive/lib目录下
3.sqoop2报错:大概意思是无法创建数据库,原因是自带derby驱动好像不行,到官网下载最新derby.jar,这儿我下载的是db-derby-10.11.1.1-lib.tar.gz,解压包里面包含了derby.jar,按以下步骤即可解决:
(1)删除 /opt/cloudera/parcels/CDH-5.3.3-1.cdh5.3.3.p0.5/lib/sqoop2/webapps/sqoop/WEB-INF/lib/derby-{version}.jar 软连接
(2)复制 derby.jar 到/opt/cloudera/parcels/CDH-5.3.3-1.cdh5.3.3.p0.5/jars目录
(3)新建连接ln -s /opt/cloudera/parcels/CDH-5.3.3-1.cdh5.3.3.p0.5/jars/derby.jar/opt/cloudera/parcels/CDH-5.3.3-1.cdh5.3.3.p0.5/lib/sqoop2/webapps/sqoop/WEB-INF/lib/derby.jar
4.修改swappiness
在etc/sysctl.conf最后加上这样一行:vm.swappiness=0
echo 0 > /proc/sys/vm/swappiness临时修改
5.Oozie 第二次启动失败:DB scheme exist
rm -rf /var/lib/oozie/*
6. HDFS无法重新格式化
删除所有节点上的/dfs 文件夹即可。rm -rf /dfs
CDH5.3.3的基本使用
- 启动
安装完成后,所有服务是已启动的。这里,主要考虑到,平时使用虚拟环境,开机后:
服务节点(CDH1):
/opt/cm-5.3.0/etc/init.d/cloudera-scm-server start
Agent节点(CDH2、CDH3):
/opt/cm-5.3.0/etc/init.d/cloudera-scm-agent start
在系统上启动服务后,在页面启动Custer1所有服务,再启动Cloudera Management Service服务。
- 关闭
和启动顺序相反。