Cloudera Manager集群安装,CDH离线安装记录

概要

1.本文写了什么?
Cloudera Manager 集群部署的离线安装方式,一些其他相关知识
2.写了多久?三天,建议读30分钟以上
3.为什么写,被网上找的一堆部署过程整的头大,这里做个整理

关于CDH和Cloudera Manager

CDH (Cloudera’s Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。

Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。

关于开源版Apache 集群部署

看这里,我以前搭建时的记录: 阿里云部署Hbase集群
这里采用chd版本搭建

搭建步骤

吐槽: 网上搜了很多,写的很杂很乱,官网写的太全面,废话太多,看的费劲

官方文档,所有的搭建都是基于这里整理的
https://www.cloudera.com/documentation/enterprise/latest/topics/installation_installation.html

注:英文不好 自备翻译插件 推荐谷歌翻译

官网推荐方式

官方共给出了3中安装方式:
第一种方法必须要求所有机器都能连网,由于最近各种国外的网站被墙的厉害,我尝试了几次各种超时错误,巨耽误时间不说,一旦失败,重装非常痛苦。
第二种方法下载很多包。
第三种方法对系统侵入性最小,最大优点可实现全离线安装,而且重装什么的都非常方便。后期的集群统一包升级也非常好。这也是我之所以选择离线安装的原因。

生成环境,你就直接离线部署就行了,方便快捷,后期维护和扩展奠定基础

基本环境信息

三台ecs主机,我这里用的联通-阿里云,随便你
操作系统centos7
2H8G2M(2核8G内存2M带宽)

192.168.2.6  master  2核8G内存2M带宽  cm和agen
192.168.2.5  slave1  2核8G内存2M带宽  agen
192.168.2.4  slave2  2核8G内存2M带宽  agen

安装步骤

基本就是准备环境,安装cm(cdh管理软件),安装cdh,建议分布走,做完一步检测一步

  • 环境准备
    • 网络配置
    • 配置ssh免密登陆
    • 关闭防火墙
    • 安装jdk7以上
    • 安装mysql并配置优化(一般装主节点就行了)
    • 配置时间同步 ntp服务
  • 安装cloudera-manager
  • 安装cdh5
  • 图形界面配置,测试集群

安装软件准备

国内网速受限,建议下载安装包,手动处理所有安装,我一开始偷懒用yum install装的,后来又都卸载了,非常痛苦

我这里是centos7 安装cdh5.14版(最新版),你根据你的需要选择下载

《Cloudera Manager集群安装,CDH离线安装记录》

下载完后,上传到服务器(为什么上传,因为联通服务器连外网下载太慢了,fuck!)

复制前辈的忠告:

CHD5 相关的 Parcel 包放到主节点的/opt/cloudera/parcel-repo/目录中
CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 重命名为 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha
本文所有软件包,百度网盘链接http://pan.baidu.com/s/1eSALjAq 密码:vqhg
这点必须注意,否则,系统会重新下载 CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel 文件

开始配置环境

注意,这里的配置都是基于centos7,内核3.10 ,64位操作系统,其他系统请适当修改,或参考官网文档

Linux master 3.10.0-862.3.2.el7.x86_64 #1 SMP Mon May 21 23:36:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

修改hostname

vim /etc/hostname 
然后重启 reboot
记得修改每一台

修改hosts映射

vim /etc/hosts

修改完类似如下:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
# ip地址       域名/主机名
192.168.2.6  master
192.168.2.5  slave1
192.168.2.4  slave2
               

SSH 免密码登录

方便后期之间文件复制。

# # slave1
# ssh-keygen -t rsa
-- 不用输入密码,一路回车就行
# cp ~/.ssh/id_rsa.pub ~/.ssh/slave1_id_rsa.pub
# scp ~/.ssh/slave1_id_rsa.pub master:~/.ssh/

# # slave2
# ssh-keygen -t rsa
# cp ~/.ssh/id_rsa.pub ~/.ssh/slave2_id_rsa.pub
# scp ~/.ssh/slave2_id_rsa.pub master:~/.ssh/

# # master
ssh-keygen -t rsa
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# cat ~/.ssh/slave1_id_rsa.pub >> ~/.ssh/authorized_keys
# cat ~/.ssh/slave2_id_rsa.pub >> ~/.ssh/authorized_kyes
-- 拷贝文件至slave1及slave2
# scp ~/.ssh/authorized_keys slave1:~/.ssh
# scp ~/.ssh/authorized_keys slave2:~/.ssh

验证 ssh 无密登录
开一个其他窗口测试下能否免密登陆
例如:在node3
ssh root@node2
exit 退出

关闭防火墙和SELinux

注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。

-- 关闭防火墙及SELINUX(master、slave1、slave2均需修改)
-- 关闭防火墙
# systemctl stop firewalld.service
# systemctl disable firewalld.service

-- 关闭SELINUX
# vim /etc/selinux/config
-- 注释掉
#SELINUX=enforcing
#SELINUXTYPE=targeted
-- 添加
SELINUX=disabled

-- 重启生效
reboot

切换yum源,换为阿里源,速度快

第一步:备份你的原镜像文件,以免出错后可以恢复。

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

第二步:下载新的CentOS-Base.repo 到/etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

第三步:运行yum makecache生成缓存

yum clean all

yum makecache

设置时间同步 ,安装NTP服务

所有节点安装 NTP
yum install ntp
设置同步
ntpdate -d 182.92.12.11
这里增加一些内容,请参考
.所有节点配置NTP服务
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下:
master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。
所有datanode节点以master节点为基础同步时间。
所有节点安装相关组件:
yum install ntp

。完成后,配置开机启动:
chkconfig ntpd on


,检查是否设置成功:
chkconfig --list ntpd


其中2-5为on状态就代表成功。

主节点配置
在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用65.55.56.206作为对时中心,
ntpdate -u 65.55.56.206



ntp服务只有一个配置文件,配置好了就OK。 这里只给出有用的配置,不需要的配置都用#注掉,这里就不在给出:
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default nomodify notrap 
server 65.55.56.206 prefer
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys



配置文件完成,保存退出,启动服务,执行如下命令:
service ntpd start


检查是否成功,用ntpstat命令查看同步状态,出现以下状态代表启动成功:

synchronised to NTP server () at stratum 2
time correct to within 74 ms
polling server every 128 s



如果出现异常请等待几分钟,一般等待5-10分钟才能同步。
配置ntp客户端(所有datanode节点)

driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
#这里是主节点的主机名或者ip
server n1
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys



ok保存退出,请求服务器前,请先使用ntpdate手动同步一下时间:ntpdate -u n1 (主节点ntp服务器)
这里可能出现同步失败的情况,请不要着急,一般是本地的ntp服务器还没有正常启动,一般需要等待5-10分钟才可以正常同步。启动服务:
service ntpd start

安装jdk7以上版本

这里安装在jdk8

更新系统软件
yum update
查找系统已安装的jdk组件
rpm -qa | grep -E '^open[jre|jdk]|j[re|dk]'
查看java版本
java -version
卸载以前已有的jdk
yum remove java-1.6.0-openjdk
yum remove java-1.7.0-openjdk
在/usr目录中先建名为java的文件夹
mkdir /usr/java
下载jdk-8u111-linux-x64.tar.gz包,并上传至服务器/usr/local文件夹中。
解压jdk-8u111-linux-x64.tar.gz包至/usr/local/jdk1.8.0_111文件夹
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz

tar -xvf jdk-8u111-linux-x64.tar.gz
添加到环境变量
编辑/etc/profile文件,在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL下面添加如下代码:
#jdk
export JAVA_HOME=/usr/local/jdk1.8.0_111
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
执行命令使配置生效
source /etc/profile
验证,是否安装成功
java -version

安装配置mysql,并简单优化

总所周知,MySQL 被 Oracle 收购后,CentOS 的镜像仓库中提供的默认的数据库也变为了 MariaDB,如果想了解 MariaDB 和 CentOS 的区别,可以参考官网介绍,想用 MariaDB 的同学可以参考 MariaDB 安装指南

cdh可以使用的数据库有很多,支持mysql也支持mariadb或者oracle等,其他安装请参考官网 安装和配置外部数据库 , 这里选择mysql

参考这里 https://blog.csdn.net/SmallTankPy/article/details/75451645

首先检查 MySQL 是否已安装

yum list installed | grep mysql

如果有的话 就全部卸载

yum -y remove +数据库名称

添加 MySQL YUM 源

根据自己的操作系统选择合适的安装源,和其他公司一样,总会让大家注册账号获取更新,注意是 Oracle 的账号,如果不想注册,下方有直接下载的地址,下载之后通过 rpm -Uvh 安装。

$wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
$sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
$yum repolist all | grep mysql
mysql-connectors-community/x86_64 MySQL Connectors Community                  36
mysql-tools-community/x86_64      MySQL Tools Community                       47
mysql57-community/x86_64          MySQL 5.7 Community Server                 187

选择安装版本
如果想安装最新版本的,直接使用 yum 命令即可

$sudo yum install mysql-community-server
如果想要安装 5.6 版本的,有2个方法。命令行支持 yum-config-manager 命令的话,可以使用如下命令:

$ sudo dnf config-manager --disable mysql57-community
$ sudo dnf config-manager --enable mysql56-community
$ yum repolist | grep mysql
mysql-connectors-community/x86_64 MySQL Connectors Community                  36
mysql-tools-community/x86_64      MySQL Tools Community                       47
mysql56-community/x86_64          MySQL 5.6 Community Server                 327

或者直接修改 /etc/yum.repos.d/mysql-community.repo 这个文件

Enable to use MySQL 5.6

[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=1 #表示当前版本是安装
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=0 #默认这个是 1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
通过设置 enabled 来决定安装哪个版本。

设置好之后使用 yum 安装即可。

启动 MySQL 服务
启动命令很简单

$sudo service mysqld start 
$sudo systemctl start mysqld #CentOS 7
$sudo systemctl status mysqld
● mysqld.service - MySQL Community Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-05-27 12:56:26 CST; 15s ago
  Process: 2482 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Process: 2421 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 2481 (mysqld_safe)
   CGroup: /system.slice/mysqld.service
           ├─2481 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─2647 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/...

说明已经正在运行中了。

修改 /etc/my.cnf

vi /etc/my.cnf

优化修改配置,使其更好的适应cm集群。配置好的my.cnf应类似如下:

[mysqld]
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links = 0

port=8067
key_buffer_size = 32M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1

max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M

#log_bin should be on a disk with enough free space. Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your system
#and chown the specified folder to the mysql user.
log_bin=/var/lib/mysql/mysql_binary_log

#5.7以上版本开binlog要增加这个属性
server-id=123454 

# For MySQL version 5.1.8 or later. For older versions, reference MySQL documentation for configuration help.
binlog_format = mixed

read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M

# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit  = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M
#配置密码校验规则简单
validate_password_length=1
validate_password_mixed_case_count=0
validate_password_number_count=0
validate_password_policy=LOW
validate_password_special_char_count=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

sql_mode=STRICT_ALL_TABLES

创建mysql数据库

官方推荐创建如下数据库,后边cm安装时会用到,如果你现在不明白可以不创建,等到安装的时候,他会有提示,你记得回来创建即可。sql创建语句如下:

《Cloudera Manager集群安装,CDH离线安装记录》


CREATE DATABASE hive CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
CREATE DATABASE hue CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
CREATE DATABASE oozie CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

这里数据库名称其实可以自定义,我创建三个分别对应hadoop的hive,hue和oozie

下载jdbc-mysql jar包

下载 mysql 驱动包

cd /opt/cloudera-manager/cm-5.12.1/share/cmf/lib
wget http://maven.aliyun.com/nexus/service/local/repositories/hongkong-nexus/content/Mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
启动MySQL服务

service mysql.server start
cd /opt/cloudera-manager/cm-5.12.1/share/cmf/schema/

./scm_prepare_database.sh mysql cm -h node1 -uroot -pmima --scm-host node1 scm scm scm
看到如下信息,恭喜您,配置没毛病

[main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!
格式:

scm_prepare_database.sh mysql cm -h <hostName> -u<username>  -p<password> --scm-host <hostName>  scm scm scm

对应于:数据库类型  数据库 服务器 用户名 密码  –scm-host  Cloudera_Manager_Server 所在节点 数据库 用户名 密码

安装cloudera manager和chd5.x

如果你的网络良好(可以连接国外服务器)推荐在线安装,两条命令即可。如果你网络不好,建议还是手动安装,也方便后期维护。

介绍在线安装,网络不好看下边手动安装

Cloudera Manager 安装
#  在master节点安装Cloudera Manager Server并启动。
     yum install cloudera-manager-daemons cloudera-manager-server
    systemctl start cloudera-scm-server
#在master和node节点安装Cloudera Manager Agent。修改 /etc/cloudera-scm-agent/config.ini 中的server_host为master的IP。
     yum install cloudera-manager-agent cloudera-manager-daemons
    systemctl start cloudera-scm-agent
# 进入 Cloudera Manager的console,[http://Server](http://server/) host:7180,登录后便可以进入CDH的安装部署了。

手动安装,我选的这种

把下载好的cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz安装包上传至 master节点/opt/目录
在 node1 节点拷贝 cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz 到所有 Server、Agent 节点创建 /opt 目录:
for a in {2..7}; do scp /opt/cloudera-manager-*.tar.gz root@node$a:/opt/ ; done
所有 Server、Agent 节点节点解压安装 Cloudera Manager Server & Agent

cd /opt
tar xvzf cloudera-manager*.tar.gz -C /opt

启动 CM Manager&Agent 服务

注意,mysql 服务启动,防火墙关闭

在 node1 (master) 执行:

/opt/cm-5.12.1/etc/init.d/cloudera-scm-server start

在 node2-3 (Agents) 执行:

/opt/cm-5.12.1/etc/init.d/cloudera-scm-agent start

启动 start,停止stop,重启 restart

访问 http://Master:7180 若可以访问(用户名、密码:admin),则安装成功。

Manager 启动成功需要等待一段时间,过程中会在数据库中创建对应的表需要耗费一些时间。

图形安装

图形界面省略。

你可能会遇到问题

问题一
接下来是服务器检查,可能会遇到以下问题:

Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10。当前设置为 30。

使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf,以在重启后保存该设置。

您可以继续进行安装,但 Cloudera Manager 可能会报告您的主机由于交换而运行状况不良。以下主机将受到影响:node[2-7]

echo 0 > /proc/sys/vm/swappiness
问题二
已启用透明大页面压缩,可能会导致重大性能问题。请运行
echo never > /sys/kernel/mm/transparent_hugepage/defrag和 echo never > /sys/kernel/mm/transparent_hugepage/enabled
以禁用此设置,然后将同一命令添加到 /etc/rc.local 等初始化脚本中,以便在系统重启时予以设置。以下主机将受到影响: node[2-7]

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

《Cloudera Manager集群安装,CDH离线安装记录》

后记:

CDH安装失败了,如何重新安装

常见问题

安装CDH时候出现主机运行状态不良情况的解决https://blog.csdn.net/holdbelief/article/details/80287471

一些常见问题 https://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_troubleshooting.html

出现问题,实在不好解决的请查看日志,一般来说都能找到原因

如果你实在解决不了,请留言

    原文作者:互联网编程
    原文地址: https://www.jianshu.com/p/26998a072794
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞