“Apache Hadoop存在版本管理混乱、部署过程繁琐、升级过程复杂、兼容性差、安全性低等问题,CDH是Hadoop商业发行版之一,本文介绍基于Cloudera Manager的Cloudera Hadoop 6.1.0大数据平台搭建,简单易上手 ”
基础环境准备
1、CM和CDH包
准备cm的rpm包,cdh的parcel包,第1个链接内的需要完全下载,第2个链接内根据linux版本(centos6 or 7)下载;
代码语言:javascript复制cm的rpm包:
https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/
cdh的parcels包:
https://archive.cloudera.com/cdh6/6.1.0/parcels/
2、网络
若是在虚拟机上配置(须满足内存>6G,磁盘划分/至少40G,/data/10G),保证NAT模式下所有主机在同网段,且能访问外网。修改IP、网关、DNS;
代码语言:javascript复制vim /etc/sysconfig/network-scripts/ifcfg-ens33
首先,修改ifcfg-en33的dhcp自动分配修改为静态寻址,增加ip/掩码/网关配置;(网关不管怎么配,都不要配192.168.x.1,因为1号IP是VMnet8网卡的IP)。
代码语言:javascript复制TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="5ed941c2-deb4-48ae-a76d-838503c8683c"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.242.134"
GATWAY="192.168.242.2"
NETMASK="255.255.255.0"
DNS1="192.168.242.2"
配置完成后通过service network restart 重启网卡设置,依然无法连接外网(ping www.baidu.com),可以增加默认dns;
代码语言:javascript复制route add default gw 192.168.242.2
其次,增加主机和主机名映射(/etc/hosts),关闭防火墙,关闭SElinux,设置多主机免密,开启http服务;
代码语言:javascript复制#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.242.134 hadoop1
代码语言:javascript复制#关闭防火墙,centos7之前版本
systemctl disable firewalld
#关闭防火墙,centos7之后版本
systemctl disable firewalld.service
#重启生效
代码语言:javascript复制#vi /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
3、免密
主机免密的方法:
代码语言:javascript复制主机A/B/C为例,设置免密登录的方法:
① 每台机器上执行 ssh-keygen -t rsa ,敲3次回车会在家目录/home/csap下生成隐藏的.ssh目录,首先需要给此目录赋权限700: chmod 700 .ssh;这个目录下有两个文件:id_rsa 私钥和id_rsa.pub 公钥;
② 在此目录中创建 authorized_keys 文件并赋权:
cd .ssh
touch authorized_keys
chmod 644 authorized_keys
③ 以机器A为例,执行以上操作后,如果不知道其他机器的密码,比如绑定4A;把自己的 id_rsa.pub 公钥 以及其他两台机器的公钥粘贴到 authorized_keys文件中,然后把这个文件复制到其他2台机器即可。等于所有机器都有其他机器的公钥,即可完成ssh 免密登录;
④ 如果知道其他机器密码,可以直接执行这个把公钥写到其他机器的authorized_keys文件中:ssh-copy-id -i ~/.ssh/id_rsa.pub?root@127.0.0.1
4、时钟同步
时钟同步(保证其他节点同cm节点时钟一致):
代码语言:javascript复制1、所有机器安装ntp :yum -y install ntp
2、CM节点配置时钟与自己同步:vim /etc/ntp.conf,删除其他server,加入:
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
3、其他非CM节点,同步CM节点的时间,vim /etc/ntp.conf,加入:
server xxx.xxx.xxx.xx
4、重启所有机器的ntp服务
systemctl restart ntpd或者service ntpd restart
systemctl status ntpd或者service ntpd status
5、验证同步
所有节点执行ntpq –p,左边出现*号表示同步成功。
6、若不成功;
/usr/sbin/ntpdate stdtime.gov.hk
ntpdate xxx.xxx.xxx.xxx
手动同步时间
5、http服务
开启http服务,/var/www/html/目录下会自动创建cm和cdh目录
代码语言:javascript复制yum -y install httpd
systemctl start httpd 或service httpd start
6、制作yum源
代码语言:javascript复制① 开启http服务
#创建目录,并上传本地的cdh和cm到制定文件夹
cd /var/www/html/
mkdir cm-6.1.0 cdh-6.1.0
#完成后在浏览器打开url:http://192.168.242.134/cm-6.1.0,能够访问则成功;
② 制作本地yum源
#下载yum源工具包
yum -y install yum-utils createrepo
# 在cm-6.1.0目录下生成rpm元数据:
createrepo /var/www/html/cm-6.1.0
#并对/var/www/html下的所有目录和文件赋权:
chmod -R 755 /var/www/html
#创建本地Cloudera Manager的repo源,创建/etc/yum.repos.d/myrepo.repo,加入一些配置项:
[myrepo]
name = myrepo
baseurl = http://192.168.242.134/cm-6.1.0
enable = true
gpgcheck = false
#也可以直接修改Centos-Base.repo文件添加上面几行;
#完成后,使用yum repolist验证是否成功,会列出可以用源;
yum repolist
完成后,可通过rul查看文件,确保repodata文件夹一定要成功生成,不然后续无法通过!!!!
安装CDH
1、安装Cloudera-manager
这里使用默认的pgsql作为元数据库,可以自己安装mysql库,并将其作为元数据库;
代码语言:javascript复制# ① 安装必要rpm包
cd /var/www/html/cm-6.1.0/
chmod x cloudera-manager-installer.bin
# 安装jdk
rpm -ivh oracle-j2sdk1.8-1.8.0 update141-1.x86_64.rpm
# 安装cm-agent、cm-daemon、cm-server、cm-server-db的rpm包,步骤有一定约束:
rpm -ivh cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm
rpm -ivh cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm
rpm -ivh cloudera-manager-server-db-2-6.1.0-769885.el7.x86_64.rpm (报错)
# 报错因为server-db 依赖postgresql-server >= 8.4 ,使用yum 安装,自动下载依赖
yum install -y cloudera-manager-server-db-2-6.1.0-769885.el7.x86_64.rpm
# server-agent 需要依赖更多
rpm -ivh cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm
#警告:cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID b0b19c9f: NOKEY错误:依赖检测失败:
# 解决办法是分别yum安装依赖包;
yum install -y lsb
yum install -y mod_ssl
yum install -y openssl-devel
yum install -y python-psycopg2
yum install -y MySQL-python
#完成后,重新安装server-agent依赖
# ② 上面的rpm依赖完成安装后,启动cm的installer
./cloudera-manager-installer.bin --skip_repo_package=1
# ③ 删除/etc/cloudera-scm-server/db.properties
rm /etc/cloudera-scm-server/db.properties
安装完成后提示如下说明cm安装成功,启动7180端口,用户名和密码都是admin;
验证:
(1)netstat -lnpt | grep 7180 端口有运行;
(2)查看日志:tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log 提示ScmActive completed successfully
(3)web查看xx.xx.xx.xx:7180是否可以访问;
2、安装CDH
使用本地parcel包安装cdh(坑很多),cm的安装,web访问192.168.242.134:7180登录cm页面按照指引进行cdh安装。
① 存储库选择http://192.168.242.134/cm-6.1.0(确认http服务已开启,可以url访问)
② 修改cdh的parcels文件名称:
代码语言:javascript复制mv CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha256 CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha
③ 经常出现无法读取本地cdh的parcels包问题,需要重启installer;一般没用,还是外网下载。。。
代码语言:javascript复制# 卸载重装
/opt/cloudera/installer/uninstall-cloudera-manager.sh
rm /etc/cloudera-scm-server/db.properties
./cloudera-manager-installer.bin --skip_repo_package=1
帖子上说可以重启scm-server解决,但无效,可以在其下载一半返回页面,重新扫描可以解决;
2、配置cdh中的大数据相关组件
按照指引进行,记住数据库的登录名和密码;
初始化组件安装时容易出现主机资源不足,前期应该给cm节点足够的存储空间;
能够完成组件安装,就可以看见实时监控页面,后续扩容将后面补充;