CDH集群服务器:
192.168.195.128(cdh1),
192.168.195.133(cdh2),
192.168.195.131(cdh3)
操作系统:CentOS6.5 x64(32位最高只能支持8G内存)
Cloudera Manager:5.11.2
CDH: 5.11.2
主节点至少分配8G内存.
采用parcel离线安装方式,而且重装什么的都非常方便。后期的集群统一包升级也非常好。
Cloudera Manager下载地址:
http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el5-cm5.11.2_x86_64.tar.gz
CDH安装包地址:
http://archive.cloudera.com/cdh5/parcels/5.11.2/
由于我们的操作系统为CentOS6.5,需要下载以下文件:
CDH-5.11.2-1.cdh5.11.2.p0.4-el6.parcel
CDH-5.11.2-1.cdh5.11.2.p0.4-el6.parcel.sha1(需要将.sha1后的1去掉)
manifest.json
1、网络配置(所有节点)
修改hostname: vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=cdh3
输入命令 hostname cdh1 ,不需要重启虚拟机
修改ip与主机名的对应关系: vim /etc/hosts
127.0.0.1 localhost
192.168.195.128 cdh1
192.168.195.133 cdh2
192.168.195.131 cdh3
2.配置SSH免密码登录
所有节点上执行
ssh-keygen -t rsa ;
ssh-copy-id cdh1/2/3;
3.配置selinux (所有节点)
查看状态 /usr/sbin/sestatus -v
#如果 SELinux status 参数为 enabled 即为开启状态
vim /etc/selinux/config
改为SELINUX=disabled
setenforce 0(临时关闭) 不需要重启虚拟机
4.关闭防火墙 (所有节点)
service iptables stop (临时关闭)
chkconfig iptables off (永久关闭,重启后生效)
遇到的坑,配置过程突然连接断掉(没有配置静态ip),重启虚拟机能ping通主机ip,主机ping不同虚拟机ip,原因是vmnet8网卡的ip与虚拟机的网段不一致,但是我检查了下net8的配置没有问题啊.再突然断掉就删除vmnet1和桥接模式,只留下vmnet8.
通过windows 终端查看是自动获取的ip,与设置的网关不一致,我索性就把他的ipv4属性改为自动获取ip地址,没想到成功了,哈哈哈哈.....(我感觉是我电脑的问题,每次启动虚拟机都要在VMware重新配置下网卡信息才能ping通,挺郁闷的...)
5.安装Oracle的Java(所有节点)
CentOS,自带OpenJdk,不过运行CDH5需要使用Oracle的Jdk
卸载自带的OpenJdk,使用 rpm -qa | grep java 查询java相关的包,使用 rpm -e --nodeps 后跟包名 卸载。
解压安装包,解压到/usr/local/java
[root@cdh1~]# tar -zxf jdk-8u201-linux-x64.tar.gz -C /usr/local/java
scp到cdh2和cdh3
[root@cdh1~]# vim /etc/profile 加入:
export JAVA_HOME=/usr/local/java/jdk1.8.0_65/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
将/etc/profile scp到cdh2和cdh3
source /etc/profile使生效.
java -version检查.
6.安装ntp时间同步服务(所有节点)
安装ntp
yum install ntp -y
配置NTP服务为自启动
# chkconfig ntpd on
启动服务service ntpd start/restart/status
使用ntpdate手动同步时间:
# ntpdate -u 202.112.10.36
3 Feb 06:26:12 ntpdate[1573]: step time server 202.112.10.36 offset 20.210641 sec
表示同步成功.
修改配置文件: vim /etc/ntp.conf
主节点:
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
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 kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
# 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 -6 ::1
# Hosts on local network are less restricted.
# 允许内网其他机器同步时间
restrict 192.168.195.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).
# 中国这边最活跃的时间服务器 : http://www.pool.ntp.org/zone/cn
server 210.72.145.44 perfer # 中国国家受时中心
server 202.112.10.36 # 1.cn.pool.ntp.org
server 59.124.196.83 # 0.asia.pool.ntp.org
#broadcast 192.168.1.255 autokey # broadcast server
#broadcastclient # broadcast client
#broadcast 224.0.1.1 autokey # multicast server
#multicastclient 224.0.1.1 # multicast client
#manycastserver 239.255.254.254 # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
# allow update time by the upper server
# 允许上层时间服务器主动修改本机时间
restrict 210.72.145.44 nomodify notrap noquery
restrict 202.112.10.36 nomodify notrap noquery
restrict 59.124.196.83 nomodify notrap noquery
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
# 外部时间服务器不可用时,以本地时间作为时间服务
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys
# Specify the key identifiers which are trusted.
#trustedkey 4 8 42
# Specify the key identifier to use with the ntpdc utility.
#requestkey 8
# Specify the key identifier to use with the ntpq utility.
#controlkey 8
# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats
从节点:
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
# 配置时间服务器为本地的时间服务器(master的ip)
server 192.168.195.128
restrict 192.168.195.128 nomodify notrap noquery
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
ntpstat 命令查看时间同步状态,这个一般需要5-10分钟后才能成功与外网时间服务器连接和同步。
从节点执行ntpdate -u 192.168.195.128 与主节点时间同步
7.安装配置MySQL(主节点)
通过 yum installmysql-server 安装mysql服务器,(也可以通过tar包的方式安装),是mysql-5.1.73-8.el6_8.x86_64版本.
chkconfig mysqld on 设置开机启动,
service mysqld start 启动mysql服务。
mysql -uroot -pxxxx 进入mysql命令行,创建以下数据库:
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database Oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;--集群监控数据库
设置root授权访问以上所有的数据库:
授权root用户在主节点cdh1拥有所有数据库的访问权限
grant all privileges on *.* to root@cdh1 identified by '密码';
flush privileges;
8.安装Cloudera Manager Server 和Agent
- 主节点解压安装cloudera-manager-el6-cm5.11.2_x86_64.tar.gz(只需要上传到主节点)
cloudera manager的目录默认位置在/opt/cloudera-manager,将其解压到/opt/cloudera-manager目录下
tar -zxvf cloudera-manager-el6-cm5.11.2_x86_64.tar.gz -C /opt/cloudera-manager
将解压出来的两个目录的所有者改成root
chown -R root.root /opt/cloudera-manager/cloudera/
chown -R root.root /opt/cloudera-manager/cm-5.11.2/
为Cloudera Manager 5建立数据库,首先需要去MySql的官网下载JDBC驱动。地址:https://dev.mysql.com/downloads/file/?id=480091
解压后,找到mysql-connector-java-5.1.47-bin.jar,放到/opt/cloudera-manager/cm-5.11.2/share/cmf/lib/中。
cp mysql-connector-java-5.1.41-bin.jar /opt/cloudera-manager/cm-5.11.2/share/cmf/lib/
- 在主节点初始化CM5的数据库:
执行:
/opt/cloudera-manager/cm-5.11.2/share/cmf/schema/scm_prepare_database.sh mysql
cm -h localhost -uroot -proot --scm-host localhost scm scm scm
格式:scm_prepare_database.sh 数据库类型 数据库名 -h 主节点ip -u用户名 -p密码
-scm-host cm_Server所在机器ip 数据库 用户名 密码 。
因为我们用的是Mysql数据库,所以我们需要将Mysql的JDBC驱动放到/opt/cloudera-manager/cm-5.11.2/share/cmf/lib/目录下。
在后面安装其他组件的时候,它会从/usr/share/java目录下找驱动,
然后自动cp,所以为保险起见,建议把mysql的驱动jar包也拷贝到agent节点的/usr/share/java下面
(最好把版本和“”bin“”去掉,如mysql-connector-java.jar).
- Agent配置:
修改/opt/cloudera-manager/cm-5.11.2/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。
server_host=cdh1
创建cloudera-scm-agent的pid目录
mkdir /opt/cloudera-manager/cm-5.11.2/run/cloudera-scm-agent
同步Agent到其他节点
scp -r /opt/cloudera-manager/cm-5.11.2 cdh2:/opt/cloudera-manager/cm-5.11.2
scp -r /opt/cloudera-manager/cm-5.11.2 cdh3:/opt/cloudera-manager/cm-5.11.2
- 在所有节点创建cloudera-scm用户
useradd --system --home=/opt/cloudera-manager/cm-5.11.2/run/cloudera-scm-server/
--no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
- 准备Parcels,用以安装CDH5
将CHD5相关的Parcel包放到主节点的 /opt/cloudera/parcel-repo/目录中。
mkdir -p /opt/cloudera/parcel-repo
相关的文件如下:
CDH-5.11.2-1.cdh5.11.2.p0.8-el6.parcel
CDH-5.11.2-1.cdh5.11.2.p0.8-el6.parcel.sha
manifest.json
从节点上也新建parcels存放目录
mkdir -p /opt/cloudera/parcels
- 启动服务
服务端(主节点):
/opt/cloudera-manager/cm-5.11.2/etc/init.d/cloudera-scm-server start
客户端:(所有节点启动)启动Agent服务。
/opt/cloudera-manager/cm-5.11.2/etc/init.d/cloudera-scm-agent start
停止服务stop,重启是restart,状态是status。
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了。
这时可以通过浏览器访问主节点的7180端口测试(由于CM Server的启动需要花点时间,要等待几分钟才能访问),默认的用户名和密码均为admin
9.安装失败重装:
1.删除Agent节点的UUID
rm -rf /opt/cm-5.4.7/lib/cloudera-scm-agent/*
2.清空主节点CM数据库
进入主节点的Mysql数据库,drop database cm;
3. 删除namenode和datanode节点信息(如果产生了)
rm -rf /dfs/nn/*
rm -rf /dfs/dn/*
rm -rf /dfs/ssn/*
4.在主节点上重新初始化CM数据库
/opt/cloudera-manager/cm-5.11.2/share/cmf/schema/scm_prepare_database.sh mysql cm -h localhost -uroot -proot --scm-host localhost scm scm scm
5.执行启动脚本
/opt/cloudera-manager/cm-5.11.2/etc/init.d/cloudera-scm-server restart
/opt/cloudera-manager/cm-5.11.2/etc/init.d/cloudera-scm-agent restart
过一会儿,即可通过主节点的7180端口重新进行CDH的安装http://192.168.195.128:7180/cmf/login
10.出现的错误:
日志查看:
/opt/cloudera-manager/cm-5.11.2/log/cloudera-scm-agent/cloudera-scm-agent.log
/opt/cloudera-manager/cm-5.11.2/log/cloudera-scm-server/cloudera-scm-server.log
- agent启动后查看状态一会自己就stop了;
cloudera-scm-agent 已死,但 pid 文件仍存
删除 /opt/cloudera-manager/cm-5.11.2/run/cloudera-scm-agent/cloudera-scm-server.pid
重启agent
2.mysql数据库使用引擎应该是innodb
修改/etc/my.conf,
添加 default-storage-engine=InnoDB
重启mysql服务
3. 安装启动spark找不到Java_home
将JAVA_HOME软连接到/usr/java/default :
ln -s /usr/local/java/jdk1.8.0_201 /usr/java/default
并在/root/.bashrc文件里面添加export JAVA_HOME=/usr/java/default就能以root身份启动spark服务
4.创建hive metastore database tables报错:
cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
或者建立软连接
5.检查主机配置时出错(所有节点执行)
echo 0 >> /proc/sys/vm/swappiness
关闭透明大页:
echo never >> /sys/kernel/mm/transparent_hugepage/enabled
echo never >> /sys/kernel/mm/transparent_hugepage/defrag
参考博客:
搭建:http://blog.51cto.com/12676522/1934844
安装失败:https://blog.csdn.net/slowtech/article/details/50847008
时间同步:https://acooly.iteye.com/blog/1993484