序言
纪录下Hadoop集群的搭建过程及途中踩过的坑,希望能对正在学习的同学有个帮助,少走点弯路~
PS:为了便于个人博客管理,此文从CSDN迁移过来,属于个人实际操作纪录的笔记,持续更新~
PPS:本文集群搭建为四台机器,不建议大家这么弄,因为zookeeper发挥最大作用的配置是大于2 的奇数台机器。
PPPS:有问题请下方留言,大家互相交流,分享使我快乐~~
一、前期准备
-
安装环境
系统配置:系统:centos 7 最小安装版 64位 内存:10G 10G 10G 8G
四台机器组成小集群(物理机)
CDH-DEV1 CDH-DEV2 CDH-DEV3 CDH-DEV4
-
需要下载的安装包
cloudera-manager-centos7-cm5.13.0_x86_64.tar.gz
CDH相关
注意下载相应系统的安装包
CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1 manifest.json
jdk-8u144-linux-x64.tar.gz
mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar
mysql-connector-java-5.1.44-bin.jar
Installing Cloudera Manager and CDH
二、环境配置
注意所有操作都需要使用root权限操作
-
基本配置(所有节点)
修改 /etc/hostname
CDH-DEV1
修改 /etc/hosts,此处一定要注意,不要按照网上有的说明,将127.0.0.1那一行里的
localhost.localdomain
改成主机名称,在安装Cloudera Agent的时候会识别不出名称和IP
修改 /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=CDH-DEV1
-
Java环境(所有节点)
下载jdk-8u144-linux-x64.tar.gz
解压到/usr/java(可根据个人习惯创建目录)tar xzvf jdk-8u144-linux-x64.tar.gz
配置环境变量
[root@CDH-DEV1 .ssh]# vim /etc/profile #在文件末尾添加下面三行 export JAVA_HOME=/usr/java/jdk1.8.0_144 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar [root@CDH-DEV1 .ssh]# source /etc/profile #使生效
-
SSH无密码登录(集群内节点能够互相无密码访问)
思路:第一台机器配置
authorized_keys
,scp到第二台机器,将第二台机器的公钥添加到authorized_keys
,然后将其scp到第三台,以此类推,直到配置到最后一台机器,将最后一台机器的authorized_keys
scp到所有节点,如下1)在主节点(CDH-DEV1)执行
[root@CDH-DEV1 .ssh]# ssh-keygen -t rsa [root@CDH-DEV1 .ssh]# cat id_rsa.pub >> authorized_keys [root@CDH-DEV1 .ssh]# chmod 600 authorized_keys [root@CDH-DEV1 .ssh]# scp authorized_keys root@CDH-DEV2:~/.ssh
2)在CDH-DEV2执行
[root@CDH-DEV2 .ssh]# ssh-keygen -t rsa [root@CDH-DEV2 .ssh]# cat id_rsa.pub >> authorized_keys [root@CDH-DEV2 .ssh]# chmod 600 authorized_keys [root@CDH-DEV2 .ssh]# scp authorized_keys root@CDH-DEV3:~/.ssh
3)在CDH-DEV2执行
[root@CDH-DEV3 .ssh]# ssh-keygen -t rsa [root@CDH-DEV3 .ssh]# cat id_rsa.pub >> authorized_keys [root@CDH-DEV3 .ssh]# chmod 600 authorized_keys [root@CDH-DEV3 .ssh]# scp authorized_keys root@CDH-DEV4:~/.ssh
4)在CDH-DEV2执行
[root@CDH-DEV4 .ssh]# ssh-keygen -t rsa [root@CDH-DEV4 .ssh]# cat id_rsa.pub >> authorized_keys [root@CDH-DEV4 .ssh]# chmod 600 authorized_keys [root@CDH-DEV4 .ssh]# scp authorized_keys root@CDH-DEV1:~/.ssh [root@CDH-DEV4 .ssh]# scp authorized_keys root@CDH-DEV2:~/.ssh [root@CDH-DEV4 .ssh]# scp authorized_keys root@CDH-DEV3:~/.ssh
-
安装MySQL(主节点安装即可)
安装步骤:
(1)此处需要注意的是centos 7 默认安装的是mariadb,如果不卸载直接安装的话会报错,报错信息mariadb-libs is obsoleted by mysql-community-libs-5.7.9-1.el7.x86_64
rpm -qa | grep mariadb #查看安装信息 rpm -e mariadb-libs* --nodeps #根据查找到的软件包信息卸载
(2)安装MySQL(必须按以下顺序安装)
rpm -ivh mysql-community-common-5.7.20-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.9-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.9-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.9-1.el7.x86_64.rpm
(3)基本设置
service mysqld start #启动服务 vim /var/log/mysqld.log #查看初始密码 mysql -uroot -p #登录 set password = password('test01.') #设置密码 #授权用户root使用密码passwd从任意主机连接到mysql服务器 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION; flush privileges;
(4)建数据库(用于后边组件安装)
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci; create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci; create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-
关闭防火墙(所有节点)
centos 7 默认使用的是firewall,不是iptablessystemctl stop firewalld.service systemctl mask firewalld.service
-
关闭SELinux(所有节点)
[root@CDH-DEV1 .ssh]# vim /etc/selinux/config 设置SELINUX=disabled
-
配置NTP服务(所有节点)
安装 [root@CDH-DEV1 .ssh]# yum install ntp 设置开机启动 [root@CDH-DEV1 .ssh]# chkconfig ntpd on 服务启动 [root@CDH-DEV1 .ssh]# service ntpd start
-
所有节点上创建用户
useradd --system --home=/opt/cm-5.13.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
三、安装
- 安装Cloudera Manager Server 和Agent
(1)将下载好的cloudera-manager-centos7-cm5.13.0_x86_64.tar.gz
解压到主节点的/opt/
,解压出来的文件夹为cloudera
与cm-4.13.0
(2)为Cloudera Manager建立数据库,此处需要前边下载好的mysql-connector-java-5.1.44-bin.jar
scp mysql-connector-java-5.1.44-bin.jar root@CDH-DEV1:/opt/cm-5.13.0/share/cmf/lib/
scp mysql-connector-java-5.1.44-bin.jar root@CDH-DEV1:/usr/share/java/
/opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql -uroot -p scm scm
(3)配置Agent
vim opt/cm-5.1.3/etc/cloudera-scm-agent/config.ini
server_host=CDH-DEV1
#拷贝到其他节点
[root@CDH-DEV1 parcel-repo]# scp -r /opt/cm-5.13.0/ root@cdh-dev2:/opt/
[root@CDH-DEV1 parcel-repo]# scp -r /opt/cm-5.13.0/ root@cdh-dev3:/opt/
[root@CDH-DEV1 parcel-repo]# scp -r /opt/cm-5.13.0/ root@cdh-dev4:/opt/
(4)准备parcels,将CDH相关文件拷贝到主节点/opt/cloudera/parcel-repo/
#相关文件
CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel
CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1
manifest.json
#操作
scp mysql-connector-java-5.1.44-bin.jar root@CDH-DEV1:/opt/cm-5.13.0/share/cmf/lib/
scp mysql-connector-java-5.1.44-bin.jar root@CDH-DEV1:/usr/share/java/
需要将CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1
改成CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha
,否则安装时会重新下载,很重要!!
[root@CDH-DEV1 parcel-repo]# mv CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1 CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha
(5)启动
#主节点
/opt/cm-5.13.0/etc/init.d/cloudera-scm-server start
#主节点及其他节点
/opt/cm-5.13.0/etc/init.d/cloudera-scm-agent start
启动需要点时间,可以查看数据库scm
中的hosts
表,如果里面出现节点信息表示server启动完成
- 开始安装Hadoop集群
登录界面,默认登录用户名和密码都是admin
选择安装版本
为CDH群集安装指定主机
此处是在当前管理的主机里选择机器,不要在新主机里查找,另外这个地方显示的主机信息一定要对,我开始的时候因为主机名配置出问题,导致无法识别主机名称和IP,虽然agent的uuid是分配到了四台机器上,但是后边的安装无法进行。
群集安装
群集安装--安装指定parcel
分配时间受带宽影响,我的是千兆交换机组成的局域网,速度还可以,应该不到十分钟
检查主机正确性
第一个警告直接在所有节点上执行echo 10 > /proc/sys/vm/swappiness
第二个警告按照上面的说明,在所有节点上执行这两条命令
echo never > /sys/kernel/mm/transparent_hugepage/defrag >> /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled >> /etc/rc.local
群集设置--选择安装服务--按需选择
群集设置--自定义角色--默认即可
群集设置--数据库设置
此处hue老出问题,一直解决不了,为了整条线走下去,而且目测hue基本用不到,所以选择了放弃安装hue.
贴一下网上找的几个解决方法,我都试了,没有解决,不知道什么问题,以后研究研究
- 缺少mysql-community-libs-compat-5.7.20-1.el7.x86_64.rpm
- 缺少python-lxml,
yum install python-lxml
群集设置--审查--默认即可
群集设置--首次设置--默认即可
开始安装服务
此处hive ,oozie会安装失败,失败信息如下。因为我们使用了MySQL作为hive元数据存储,需要将mysql驱动拷贝到hive和oozie目录下
解决方法(需要在所有节点上执行)
cp /opt/cm-5.13.0/share/cmf/lib/mysql-connector-java-5.1.44-bin.jar /opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hive/lib/
cp /opt/cm-5.13.0/share/cmf/lib/mysql-connector-java-5.1.44-bin.jar /var/lib/oozie/
安装完成
四、踩过的坑
数据库配置
问题描述:开始给Cloudera Manager配置数据库的时候,找的是网上的命令,/opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p --scm-host localhost scm scm scm
,一直报错,不知道什么问题,报错信息java.sql.SQLException: Your password does not satisfy the current policy requirements
,各种改密码复杂度及降低数据库密码复杂度要求都不行,怀疑是CDH版本更新命令参数发生了变化
解决方法,去掉部分参数,
/opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql -uroot -p scm scm
cloudera-scm-server
启动,cm-5.13.0/etc/init.d/cloudera-scm-server:行109: pstree: 未找到命令
,centos最小安装版缺少软件包,安装即可,yum install psmisc
-
中途安装失败,重新安装
关闭所有服务
#主节点 [root@CDH-DEV1 opt]# /opt/cm-5.13.0/etc/init.d/cloudera-scm-server stop #主节点及其他节点 [root@CDH-DEV1 opt]# /opt/cm-5.13.0/etc/init.d/cloudera-scm-agent stop
删除agent uuid
rm -rf /opt/cm-5.13.0/lib/cloudera-scm-agent/*
删除数据库
scm
重新配置数据库
/opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -p scm scm
启动Cloudera server和agent,按照之前步骤安装即可
五、参考网站
Installing Cloudera Manager and CDH
Cloudera Manager 5和CDH5离线安装,CDH-5.7.1
离线安装Cloudera Manager 5和CDH5(最新版5.1.3) 完全教程
写在后面
码字不易,觉得好点个赞哈~~