三台服务器构成的小集群
离线部署CDH5.3.3
下载离线包:
http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.3.3_x86_64.tar.gz
http://archive.cloudera.com/cdh5/parcels/5.3.3/CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel
http://archive.cloudera.com/cdh5/parcels/5.3.3/manifest.json
http://archive.cloudera.com/cdh5/parcels/5.3.3/CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1
所有节点关闭防火墙
在防火墙开启的情况下,执行如下两条命令:
临时关闭: 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文件,添加:(ip根据自己的需要更改)
192.168.1.105 bigdata1
192.168.1.106 bigdata2
192.168.1.107 bigdata3
修改主机名(所有节点都改)
修改/etc/sysconfig/network文件:
HOSTNAME=bigdata1
执行hostname bigdata1命令让主机名立即生效
执行命令:servicenetwork restart
如果主机名没有更改过来需要重启服务器
打通SSH,设置ssh无密码登陆(所有节点)
(1)所有节点(bigdata1、bigdata2、bigdata3):
生成无密码的密钥对:ssh-keygen -t rsa一路回车,生成无密码的密钥对。
(2)主节点(bigdata1):将公钥添加到认证文件中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(3)scp文件到datenode节点(bigdata2):
scp ~/.ssh/authorized_keys root@bigdata2:~/.ssh/
(4)将bigdata2的公钥添加到认证文件中:
cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
(5)复制bigdata2的认证文件到bigdata3:
scp ~/.ssh/authorized_keys root@bigdata3:~/.ssh/
(6)将bigdata3的公钥添加到认证文件中:
cat~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(7)设置authorized_keys的访问权限:
chmod 600 ~/.ssh/authorized_keys。
(8)将最终生成的认证文件复制到所有节点:
scp ~/.ssh/authorized_keys root@bigdata1:~/.ssh/
scp~/.ssh/authorized_keys root@bigdata2:~/.ssh/
(9)测试(不需要密码能够直接登陆):
ssh bigdata1
ssh bigdata
ssh bigdata3
安装NTP服务,同步时间
所有节点安装相关组件:yum install ntp。
完成后,配置开机启动: chkconfig ntpd on ,
检查是否设置成功:chkconfig --list ntpd其中2-5为on状态就代表成功。
主节点配置(cdh1.hadoop.com)
在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用ntp1.aliyun.com(阿里云NTP)作为对时中心,输入命令:
ntpdate -u ntp1.aliyun.com
修改配置文件 /etc/ntp.conf,没用的注释掉:
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default nomodify notrap
server ntp1.aliyun.com prefer #远程服务器地址
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
配置文件修改后,执行如下命令:
1 service ntpd start
2 chkconfig ntpd on (设置开机启动)
ntpstat命令查看同步状态
配置ntp客户端(bigdata2,bigdata3)
修改配置文件 /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 bigdata1#这里是主节点的主机名或者ip
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
手动同步时间ntpdate -u bigdata1
启动服务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改变环境变量
export JAVA_HOME=/usr/java/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
为使生效:source /etc/profile
参考云笔记文档,如果已经安装则不用安装,直接进入MySQL创建以下数据库
#hive
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity monitor
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#hue
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
安装ClouderaManager Server 和Agent
主节点(bigdata1)解压安装包
将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/目录下。
将mysql-connector-java-5.1.46.jar放到/opt/cloudera/parcels/CDH-5.3.3-1.cdh5.3.3.p0.5/lib/hive/lib下,因为hive创建数据时会报错
主节点初始化Cloudera Manager5的数据库,执行以下命令:
cd /opt/cm-5.3.3/share/cmf/schema
./scm_prepare_database.sh mysql cm -hlocalhost -uroot -p --scm-host localhost scm scm scm
输入mysql密码
Agent配置文件修改
修改/opt/cm-5.3.3/etc/cloudera-scm-agent/config.ini
server_host=bigdata1
复制文件到Agent节点
scp -r /opt/cm-5.3.3 root@bigdata2:/opt/
scp -r /opt/cm-5.3.3 root@bigdata3:/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/parcel-repo
创建parcels文件夹并修改权限:
sudo mkdir -p /opt/cloudera/parcels
sudo chown -R cloudera-scm:cloudera-scm /opt/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-agent start 启动Agent服务。
启动后可通过浏览器访问 http://10.5.46.201:7180,用户名和密码默认为均为admin
如果长时间无法显示该页面用查看server和agent是否启
使用Cloudera Manager 向导安装和配置软件
在集群主机上安装和配置Cloudera Manager ,CDH,和管理服务软件包括以下三个主要步骤
选择 Cloudera Manager 版本 和指定主机
1.选择版本
如上三个版本:
Clouder Express:
免费版,长期使用
Clouder Enterprise试用版:
试用60天
Clouder Enterprise:
需要上传授权许可
如上我们选择的是Clouder Express版
2.显示的是安装Cloudera Manager后面可以安装的服务的软件包
3.为CDH安装指定主机(首次安装不用搜索,如果第一次安装失败,第二次时是下边界面)
这里需要说明的是指定主机安装有多种方式:
1.直接列出ip或则host,多台以逗号、分号、制表符、空格或放置在单独的行。
2.指定ip的地址范围例如:10.1.1.[1-4] 或则 host[1-3].company.com.3.记得指定的主机需要关闭防火墙,(如果遇到不能安装,最好使用安装cloudera manager虚拟机进行复制)
4.为CDH安装指定主机
单击搜索,一下是给大家一个演示,(下面是你填写ip地址后,搜索的主机,如果以前安装失败的,下图虽然显示,但是不会让你选择,也就是不能打上对号)。我们选择安装的主机后,进入下一步
安装CDH
选择安装方式
当我们选择安装的host之后,我们需要选择CDH的安装方式(方法),如下图所示
注意:
这里安装的时候,相信你会碰到下面问题,解决办法:
mv /usr/bin/host /usr/bin/host.bak
出现问题
Detecting Cloudera Manager Server...
Detecting Cloudera Manager Server...
BEGIN host -t PTR 192.168.1.198
198.1.168.192.in-addr.arpa domain name pointer localhost.
END (0)
using localhost as scm server hostname
BEGIN which python
/usr/bin/python
END (0)
BEGIN python -c 'import socket; import sys; s = socket.socket(socket.AF_INET); s.settimeout(5.0); s.connect((sys.argv[1], int(sys.argv[2]))); s.close();' localhost 7182
Traceback (most recent call last):
File "
File "
socket.error: [Errno 111] Connection refused
END (1)
could not contact scm server at localhost:7182, giving up
waiting for rollback request
群集安装
安装过程中是下载与安装,我们看到下图,表示安装成功了。
检查主机正确性
选择需要安装的服务,然后点击 检查角色分配检查并确认角色分配,然后点击 继续
审核配置
启动集群结束后点击 继续
主机正确性检测(检测后有问题复制问题到网上查解决办法)
这里可能会遇到如下问题:
解决办法:执行下面即可
选择服务
根据自己需要进行选择(这里选择自定义安装,为了以后学习相应的服务,可以选择所有服务。Solr和zookeeper需要安装三个节点,hdfs的dataNode需要安装三个节点)
单击继续即可
数据库设置:
这里使用默认设置,然后单击测试连接即可(这里的用户名和密码全部用root/root123,数据库类型时mysql)
请参照前边MySQL新建数据库,如果缺少数据库则新建需要的mysql数据库。
审核更改
同样这里采用的是默认设置,也可以自己选择合适的目录
创建服务
这里是一个关键点,很多人会遇到错误。
并且有的服务创建成功,有的创建失败,于是我们点击重试,那么对于成功的服务,他就不会再次出现,这就就是为什么,加入有19个服务,在此重试的时候,你可能会看到2个服务。
在这里遇到的错误是内存不够用,所以我们server最好是5个G,另外两个节点是3G,至少2G。我这里的内存分布是:有一个master,三个datanode.
server节点有namenode和datanode两个节点。
因为内存少,所以就遇到了下面问题:
上面是命令超时。
解决办法:
再次重试,相信能过的。
假如这里你遇到了其它的问题,那么可以通过上图中的角色日志查看问题原因。
由于上面两个服务安装失败,所以在此点击重试的时候,剩下两个服务,创建成功
最后集群创建成