CDH5.15.1+Centos7离线安装手记

概要

本文在Centos7系统上安装CDH5.15.1,从安装系统到搭建集群,采用完全离线安装的方式,小白们可以参考。安装过程中查阅了不少前人的经验,同时也遇到了很多大坑,也记录在此,共同学习。

 

基础环境

硬件类型 Oracle Virtual Box搭建的三台虚拟机

内存 master 6G worker 4G

硬盘 80G

网络 网卡使用桥接模式

IP规划192.168.1.121 master121

192.168.1.122 worker122

192.168.1.123 worker123

 

安装步骤

一. 安装操作系统

操作系统选用centos7版本,使用CentOS-7-x86_64-Everything-1804包

下载地址https://www.centos.org/download/

安装时选择最小软件安装即可,后续有缺失的组件自行yum

安装系统过程中可以配置主机名 网络IP和root密码等

 

二.配置网络

1. 设置主机名

hostnamectl set-hostname master121

设置完成后用hostname命令查看是否已生效

2. 如果安装系统时未配置网络,可以在安装结束后手工配置

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

 

3. 修改文件内容

#修改 BOOTPROTO=static #这里讲dhcp换成ststic ONBOOT=yes #将no换成yes #新增 IPADDR=192.168.85.100 #静态IP GATEWAY=192.168.85.2 #默认网关 NETMASK=255.255.255.0 #子网掩码

 

4. 完成后重启网络服务

service network restart

 

5. 查看IP配置是否生效

ifconfig -a

也可以ping一下宿主机IP看是否连通

 

三. 相关配置

1. 关闭selinux

# 临时关闭

setenforce 0

# 永久关闭(重启生效)

# /etc/sysconfig/selinux是/etc/selinux/config的一个软链接

sed -i s@enforcing@disabled@g /etc/selinux/config

# 确认关闭

/usr/sbin/sestatus -v

2. 关闭防火墙

# 停止firewall

systemctl stop firewalld.service

# 禁止firewall开机启动

systemctl disable firewalld.service

# 确认关闭

firewall-cmd --state

3.内核参数优化

# for runtime effect

sysctl vm.swappiness=1

# for permanent effect

echo vm.swappiness=1 >> /etc/sysctl.conf

# check

cat /proc/sys/vm/swappiness

4. 修改transparent_hugepage参数

这一参数默认值可能会导致CDH性能下降,执行以下命令

# 临时关闭

echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo never > /sys/kernel/mm/transparent_hugepage/defrag

# 永久关闭

echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local

echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local

# 确认关闭

grep -i HugePages_Total /proc/meminfo 确认是否为0

cat /proc/sys/vm/nr_hugepages 确认是否为0

sysctl vm.nr_hugepages 确认是否为0

 

四. 配置jdk

1. 下载jdk-8u191-linux-x64.tar.gz

下载地址 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2. 将压缩包放到master121的/usr/java目录,并解压缩

(大坑:理论上jdk放在任何目录都可以,但是后面cdh安装时居然只认/usr/java目录,所以就放在这个目录吧,一劳永逸)

3. 配置环境变量

vii /etc/profile 在文件末尾加上这几行

export JAVA_HOME=/usr/java/jdk1.8.0_191 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH

 

srouce /etc/profile 生效

 

以上步骤在每台机器上都要完成,虚拟机安装,可以到此做个镜像复制出另外几个节点。

 

五. 配置集群ssh免密登录

1. 各节点机器上都执行以下命令生成密钥

cd

ssh-keygen -t rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

2. 在worker122和worker123上分别执行

cat .ssh/id_rsa.pub >>id_rsa1.pub #worker123上可以为id_rsa2.pub

scp id_rsa1.pub root@master121:~/.ssh/

3.将其他节点的密钥内容放入master121的authorized_keys,然后将此文件发送到其他节点

在master121上执行

cat id_rsa1.pub >>authorized_keys

cat id_rsa2.pub >>authorized_keys

scp authorized_keys root@worker122:~/.ssh

scp authorized_keys root@worker123:~/.ssh

4.测试各节点之间ssh免密互通

 

 

六.配置安装源

1. 搭建apache服务器

服务器如果能联网可以直接yum install httpd,如果不能联网,可采用编译方式安装,比较麻烦,

或者也可以先搭建本机yum源,方法是将centos everything包先挂在在本机某个目录,然后/etc/yum.repo.d/中增加repo文件,具体可以参考下面http方式的搭建,方法类似,在此不再详细介绍。

安装完httpd后,启动服务 systemctl start httpd

可以在宿主机打开浏览器输入 http://服务器IP 如果出现TESTING123表明apache服务已开启

 

2.搭建centos linux http yum源

搭建本地yum源,原因是我们在安装操作系统时选择了最小软件安装模式,因此在后续安装CDH的过程中难免会缺少必要的软件包,针对每个软件包去下载安装较为麻烦,使用yum install就比较方便,而企业生产环境一般都无法连接互联网,因此搭建局域网内的http yum源很有必要。

搭建步骤如下:

将centos everything包挂载到任意一个服务器节点,将里面的文件拷贝到/var/www/html/localos目录,确保浏览器打开http://192.168.1.121/localos能够看到目录结构(其中包含Packages repodata 等目录)

在master121上建立localos.repo文件

vi /etc/yum.repo.d/localos.repo

输入以下内容:

[localos]

name=CentOS-$releasever - http

baseurl=http://192.168.1.121/localos/

gpgcheck=0

enabled=1

 

保存文件后执行,以下命令在各节点上都要执行

yum clean all

yum makecache

yum update

http yum源配置完成,此时可以测试yum install vim,如果能安装即为配置正确。

 

3.配置CDH源

下咱CM安装包

http://archive.cloudera.com/cm5/repo-as-tarball/

下载cdh parcel包

http://archive.cloudera.com/cdh5/parcels/

解压到任一台上述yum机器的/var/www.html下的cm和parcel/cdh目录,目录结构示意如下:

 

 

确认使用http://192.168.1.121/parcels/cdh 和http://192.168.1.121/cm可以正常访问到安装包

 

在worker121的 /etc/yum.repos.d/文件夹下创建repo文件,如local-cloudera-manager.repo,内容如下

[local-cloudera-manager]

baseurl = http://172.18.8.101/cm/5

enabled = 1

gpgcheck = 0

name = Local Cloudera Manager

 

更新yum源,方法同上述localos源的更新

 

六.安装mysql

1.下载MySQL5.7 tar.gz包

下载地址https://dev.mysql.com/downloads/mysql/5.7.html#downloads

安装包放在master121的/usr/local,解压缩,重命名目录

tar zxvf mysql-5.7.24-el7-x86_64.tar.gz

rm -rf mysql-5.7.24-el7-x86_64.tar.gz

mv mysql-5.7.24-el7-x86_64 mysql

2. 卸载CentOS自带的mariadb数据库,并检查是否有其他mysql数据库

rpm -qa|grep mariadb #查看本机是否安装mariadb

rpm -qa | grep mysql #查看本机是否已安装mysql rpm -e --nodeps mariadb-libs #卸载自带的mariadb

rm /etc/my.cnf 删除已有的my.cnf配置文件

3. 安装前的配置

(1)创建用户

创建组 groupadd mysql

创建用户useradd -g mysql mysql

修改密码 passwd mysql

(2) 配置目录权限,并新建数据目录

cd /usr/local

chown -R mysql mysql/

chgrp -R mysql mysql/

cd mysql

mkdir data

chown -R mysql:mysql data

(3)在/etc/目录新建配置文件my.cnf,内容参考如下:

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

[mysqld]

skip-name-resolve

#设置3306端口

port = 3306

# 设置mysql的安装目录

basedir=/usr/local/mysql

# 设置mysql数据库的数据的存放目录

datadir=/usr/local/mysql/data

# 允许最大连接数

max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

lower_case_table_names=1

max_allowed_packet=16M

4.初始化数据库

/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize

坑1:很多教程上用的是mysql_install_db命令,mysql5.7版本不支持mysql_install_db命令,会报错

坑2:如果提示错误error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory,是因为我们系统是最小软件安装,需要yum install libaio

5. 启动数据库

cp ./support-files/mysql.server /etc/init.d/mysqld

chown 777 /etc/my.cnf

chmod +x /etc/init.d/mysqld

/etc/init.d/mysqld start

6.设置开机启动

chkconfig --level 35 mysqld on

chkconfig --list mysqld

chmod +x /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

chkconfig --list mysqld

service mysqld status

 

7获取初始密码登陆数据库

cat /root/.mysql_secret # Password set for user 'root@master121' at 2018-12-02 17:40:02 _pB*3VZl5T<6 这就是初始密码

用这个密码尝试登录数据库,此时又出现大坑,密码居然登不进去。

解决方案:临时关闭密码登陆,直接重置密码

具体方法:

(1)在/etc/my.cnf的mysqld下面添加skip-grant-tables

(2)重启服务 service mysqld restart

(3)无密码登陆数据库 mysql -uroot

(4)登陆成功后执行sql语句:

update mysql.user set authentication_string=password('123456') where user='root' ;

flush privileges

退出mysql

(5)将/etc/my.cnf的skip-grant-tables删除或注释

(6)重启服务 service mysqld restart

(7)此时再次尝试 mysql -uroot -p123456 登录成功

(8)但是执行任何命令时提示You must reset your password using ALTER USER statement before executing this statement.

执行set password = password('123456');后正常,刚才已经重置了密码,这一步不知道为何又要设置一遍,原因不详。

8. 至此,mysql安装完毕,但是还需要配置远程访问权限

登录mysql后,查看已有用户

select host,user from user

创建一个新用户可以进行远程登录

create user 'root'@'%' identified by '123456'; 这里 @‘%’ 表示在任何主机都可以登录

退出mysql后重启服务

systemctl restart mysql.service

/etc/init.d/mysqld restart

9 安装 mysql connector

下载地址https://dev.mysql.com/downloads/connector/j/

tar zxvf mysql-connector-java-5.1.47.tar.gz

mkdir -p /usr/share/java

cp mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/share/java/

ln -s /usr/share/java/mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar

10.mysql安装完成后,还需要建一些表,以备后面安装CDH时使用

执行以下sql语句

-- on mysql server

 

-- create database

-- for clousera manager

create database scm DEFAULT CHARACTER SET utf8;

-- for Reports Manager

create database rman DEFAULT CHARACTER SET utf8;

-- for Hive Metastore Server

create database hive DEFAULT CHARACTER SET utf8;

-- for oozie

create database oozie DEFAULT CHARACTER SET utf8;

-- for hue

create database hue DEFAULT CHARACTER SET utf8;

-- for Activity Monitor

create database amon DEFAULT CHARACTER SET utf8;

 

-- create corresponding user

CREATE USER 'scm'@'localhost' IDENTIFIED BY 'Ab123456';

CREATE USER 'rman'@'localhost' IDENTIFIED BY 'Ab123456';

CREATE USER 'hive'@'localhost' IDENTIFIED BY 'Ab123456';

CREATE USER 'oozie'@'localhost' IDENTIFIED BY 'Ab123456';

CREATE USER 'hue'@'localhost' IDENTIFIED BY 'Ab123456';

CREATE USER 'amon'@'localhost' IDENTIFIED BY 'Ab123456';

 

-- grant permissions

grant all on scm.* TO 'scm'@'%' IDENTIFIED BY 'Ab123456';

grant all on rman.* TO 'rman'@'%' IDENTIFIED BY 'Ab123456';

grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'Ab123456';

grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'Ab123456';

grant all on hue.* TO 'hue'@'%' IDENTIFIED BY 'Ab123456';

grant all on amon.* TO 'amon'@'%' IDENTIFIED BY 'Ab123456';

flush privileges;

 

七. 配置ntp服务

1.所有节点安装ntp

yum install ntp

2.选定一个节点作为NTP服务器,例如master121

修改/etc/ntp.conf

删除默认的以下四个:

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

添加

server ntp4.aliyun.com iburst #如果能联网,将与阿里云的ntp服务同步

server 127.127.1.0 iburst #与本机同步

fudge 127.127.1.0 stratum 10

 

 

启动ntp服务并设置开机启动

启动前先查看一下当前时间 date,如果与真实时间偏差较大,需手工更改,或与阿里云ntp服务手工同步一次

启动服务:

systemctl start ntpd

systemctl enable ntpd

 

查看ntp状态 ntpstat

显示synchronised to NTP serverxxx at stratum 即为已启动并开始同步

 

3.在其他节点上启动ntp服务

修改/etc/ntp.conf

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

添加 server master121 iburst

 

与ntp服务器手工同步一次

ntpdate -u master121

启动服务

systemctl start ntpd

systemctl enable ntpd

查看ntp状态 ntpstat

 

八. 安装Cloudera Manager

1. 安装CM

yum install cloudera-manager-daemons cloudera-manager-server -y

2. 为CM配置外部数据库

/usr/share/cmf/schema/scm_prepare_database.sh -h master01 mysql scm scm Ab123456

以上最后是mysql数据库中scm用户的密码,在安装mysql时已经设置

3.启动 Cloudera Manager服务

chkconfig cloudera-scm-server on

service cloudera-scm-server start

 

查看服务是否启动

systemctl status cloudera-scm-server

稍等一两分钟后,可以通过http://192.168.1.121:7180端口进入Cloudera Manager管理页面

 

 

九. 安装CDH

1. 进入Cloudera Manager登陆界面,输入账户密码,默认密码为admin/admin,点击"登录",建议使用firefox或者chrome,不要使用IE

2. 勾选"End User License Terms and Conditions",点击"继续"

3. 选择要安装的集群版本,点击"继续"

4. 了解CDH支持的Hadoop组件信息,点击"继续"

5. 查找并选择需要安装CDH的机器,点击"继续"

6. 点击"使用Parcels(建议)"右侧的"更多选项"按钮,在弹出框中设置CDH Parcel包的URL,点击"确定":

7. 选择本地的parcel包版本,在"自定义存储库"填写依赖包的URL,点击"继续"。

8. 不安装JDK,点击"继续"

9. 不要勾选单用户模式,点击"继续"

10. 输入集群机器的系统登录密码,点击"继续"

11. 安装集群依赖包,安装完后点击"继续"

这一步很可能会报各种错误,可以对照日志寻找解决方案,一般错误有几种:

(1) 各节点的时间不同步,需要检查各节点的ntp服务和同步情况

(2) 各节点ssh免密不通,需检查ssh免密配置

(3) yum存在依赖问题,需确认yum源是否正常,源文件包有没有问题。

(4) 等等

 

12. 安装Parcel包,安装完后点击"继续"

13. 检查主机正确性,如果检查出现任何潜在问题,你可以到集群中进行修复,修复后点击"重新运行"重新检查。解决所有问题后,点击"完成"

14. 选择自定义服务,选择要安装的服务套装,点击"继续"

15. 选择具体的角色分配,点击"继续"

16. 设置数据库,设置完毕后点击"测试连接",测试全部通过后点击"继续", 这里的数据库是在上文安装mysql服务步骤中创建的。

17. 配置集群组件的相关参数,确认datanode和namenode的目录,点击"继续"

18. 启动集群,完成后点击"继续"

 

19. 启动集群后可以在CM管理端查看各服务是否是绿色,如果有红色或黄色,需要看具体的警告或错误提示,各个击破,最终各节点和服务全部变成绿色,集群安装结束。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值