大数据相关

史上最全CentOS6离线安装部署Cloudera Manage

2017-11-24  本文已影响638人  荒野雄兵

前言

概述

在公司的服务器上搭建了5遍,
第一遍看别人的文章自己搭,
第二遍全部铲了重新搭边搭边写文章,安装完后发现CM使用的是默认的内嵌数据库
第三遍把Cloudera Manager卸载重新安装,使用Mysql作为CM的数据库
第四遍全部铲了重新搭验证
第五遍全部铲了把内存增加到32G重新搭验证

Cloudera Manager版本选择

Cloudera公司一般都是3个月发布一次版本
但是如果发布之后发现此版本存在重大Bug,
下一个版本会提前发布
笔者写这篇文章的时候Cloudera Manager已经出到了5.13.0
5.11、5.12版本可能存在Bug,不敢用,
5.13版本从发布到现在刚刚一个月,不敢用,
5.10版从5.10.0到5.10.1中间只隔了2个月
保守起见这里选择5.9.3
当然你选择5.10.x版本的应该也没有问题

系统配置

IP地址 主机名 内存 所安装的服务
192.168.60.54 cm01.spark.com 20G cloudera-scm-agent
192.168.60.55 cm02.spark.com 20G mysql,cloudera-scm-server,cloudera-scm-agent
192.168.60.56 cm03.spark.com 20G cloudera-scm-agent

安装包准备

  1. 开始部署之前先下载安装包,等准备工作做完了,安装包也下载好了。
  1. 其他还需要准备的安装包:
  1. 安装包先上传到Linux
    只需要上传到主节点(cloudera-scm-server所在的服务器)就行,上传目录随意,后面会再进行操作

一、 大数据平台集群环境准备

文章主要包括以下部分:

  1. 集群环境准备
  2. 配置ssh无密钥访问
  3. 开启NTP服务
  4. 配置yum源
  5. 安装Mysql
  6. 安装Cloudera Manager
  7. 添加大数据服务组件
  1. 以下所有步骤如无特别说明都是要在所有服务器上都执行一遍
  2. 亲测,以下所有的准备工作都要做,没有的话的话后面出现各种问题还得再补上

1. 配置静态IP

vim /etc/sysconfig/network-scripts/ifcfg-eth0

内容如下:

DEVICE=eth0
HWADDR=00:50:56:93:24:7E
TYPE=Ethernet
UUID=8ca9d801-a91a-4365-8b08-d54c6c3050d0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.60.56
NETMASK=255.255.255.0
GATEWAY=192.168.60.1
DNS1=202.96.209.5
DNS2=202.96.209.133

重启网卡

service network restart

2. 修改主机名

3台服务器分别修改为
cm01.spark.com
cm02.spark.com
cm03.spark.com

vim /etc/sysconfig/network

## 修改为以下内容
NETWORKING=yes
HOSTNAME=cm01.spark.com
第1部分_大数据环境准备_02修改主机名.png

3. hosts文件主机名与IP地址映射

另外你的电脑最好也添加一下,路径是:
C:\Windows\System32\drivers\etc\hosts

vim /etc/hosts

## 添加以下内容
192.168.60.54 cm01.spark.com cm01
192.168.60.55 cm02.spark.com cm02
192.168.60.56 cm03.spark.com cm03
第1部分_大数据环境准备_03hosts文件主机名映射IP地址.png

4. 禁用IPV6

命令行执行以下命令

## 禁用IPv6
echo "                   " >> /etc/modprobe.d/dist.conf
echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf
echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf

## 查看是否追加成功
tail /etc/modprobe.d/dist.conf
第1部分_大数据环境准备_04禁用IPV6.png

5. 关闭防火墙

# 关闭防火墙
service iptables stop

# 永久性关闭防火墙
chkconfig iptables off

# 查看防火墙状态:
service iptables status

第1部分_大数据环境准备_05关闭防火墙.png

生产上根据实际情况进行设置

6. 禁用Selinux

重启机器才会生效,这里先不重启

vim /etc/sysconfig/selinux

## 修改配置项:
SELINUX=disabled
第1部分_大数据环境准备_06禁用Selinux.png

7. 卸载系统自带的JDK

rpm -qa|grep java

# xxx yyy zzz为你要卸载的插件,插件之间以空格隔开
rpm -e --nodeps xxx yyy zzz
第1部分_大数据环境准备_07卸载系统自带的JDK.png

8. 设置文件打开数目和用户最大进程数

## 查看文件打开数目
ulimit -a
## 查看用户最大进程数
ulimit -u
## 设置用户最大进程数
vim /etc/security/limits.conf

## 结尾添加以下内容
*       soft    nofile          32768
*       hard    nofile          1048576
*       soft    nproc           65536
*       hard    nproc           unlimited
*       soft    memlock         unlimited
*       hard    memlock         unlimited

第1部分_大数据环境准备_08设置文件打开数目和用户最大进程数.png

9. 统一时区为东八区(GMT+0800)

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

10. Linux操作系统系统语言采用英文版

# 查看操作系统系统语言
echo $LANG

# 修改操作系统系统语言
vim /etc/sysconfig/i18n
LANG="en_US.UTF-8"

用中文的话后面使用Oozie的时候会发生乱码

11. 关闭透明大页面

执行命令

# 临时关闭透明大页面(立即生效)
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

# 永久关闭透明大页面(重启生效)
echo '            ' >> /etc/rc.local
echo '# 关闭大透明页面' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled' >> /etc/rc.local

# 查看是否已经关闭
cat /sys/kernel/mm/redhat_transparent_hugepage/defrag
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
第1部分_大数据环境准备_11关闭透明大页面.png

12. 修改swappiness

# 临时修改
sysctl -w vm.swappiness=1

# 永久修改
echo "vm.swappiness=1" >> /etc/sysctl.conf
第1部分_大数据环境准备_12修改swappiness.png

13. 安装JDK1.8

rpm -ivh jdk-8u65-linux-x64.rpm
  1. 配置JAVA_HOME
#修改环境变量
vim /etc/profile

# 末尾追加以下内容
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 查看是否安装成功
java -version
  1. 重新加载环境变量使配置生效
source /etc/profile

# 查看是否配置成功
echo $JAVA_HOME

14. 重启服务器

reboot

二、配置ssh无密钥访问

1. 生成密钥

# 生成密钥
ssh-keygen -t rsa
# 执行后一路回车
第2部分_配置ssh无密钥访问_01生成密钥.png

2. 复制公钥

cd ~/.ssh/
cp id_rsa.pub authorized_keys

# 下面的命令是把其他主机的公钥复制到本机
ssh-copy-id -i cm01
ssh-copy-id -i cm02
ssh-copy-id -i cm03
第2部分_配置ssh无密钥访问_02复制公钥.png

3. 测试连接

ssh cm01
ssh cm02
ssh cm03
第2部分_配置ssh无密钥访问_03测试连接.png

三、开启NTP服务

Centos6默认安装ntp服务

1. 所有服务器屏蔽默认server

# 修改ntp配置文件
vim /etc/ntp.conf

# 屏蔽默认server 将配置文件里下面的内容注释掉
#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

2. 配置ntp主服务器

我这里是cm02.spark.com服务器

# 修改ntp配置文件
vim /etc/ntp.conf

#添加如下内容
server 127.127.1.0
fudge 127.127.1.0 stratum 10
第3部分_开启NTP服务_01配置NTP主服务器.png

3. 配置ntp从服务器

# 修改ntp配置文件
vim /etc/ntp.conf

# 同步cm02.spark.com的时间
server cm02.spark.com
第3部分_开启NTP服务_02配置NTP从服务器.png

4. 启动所有服务器上的服务

# 启动ntp服务器
service ntpd start

# 设置开机启动ntp服务器
chkconfig  ntpd on

5. 验证ntp服务器是否开启

# 验证ntp服务器是否开启
ntpq -p

主服务器:


第3部分_开启NTP服务_03验证ntp主服务器是否开启.png

从服务器:


第3部分_开启NTP服务_04验证ntp从服务器是否开启.png

四、配置yum源

1. 配置网络yum源为阿里云源

三台服务器都需要配置

  1. 备份原来的配置
mkdir -p /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
  1. 下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
  1. 生成缓存
yum makecache

2. 搭建本地yum源

  1. 开启HTTP服务
# 安装httpd服务(如果已安装跳过)
yum install httpd

# 启动httpd服务
service httpd start

# 设置开机启动
chkconfig httpd on
  1. 浏览器验证是否启动成功
    输入地址: http://cm02.spark.com/
    httpd服务默认80端口,浏览器访问如果是80端口的话可以不输入端口号

    第4部分_配置yum源-01验证httpd服务是否启动成功.png
  2. 将Cloudera Manager安装包和Parcel包放在指定的目录并解压

## 所有安装包都放在/opt/software/cloudera目录下
mkdir -p /opt/software/cloudera/CDH-5.9.3

mv CDH-5.9.3-1.cdh5.9.3.p0.4-el6.parcel /opt/software/cloudera/CDH-5.9.3
mv CDH-5.9.3-1.cdh5.9.3.p0.4-el6.parcel.sha1 /opt/software/cloudera/CDH-5.9.3
mv manifest.json /opt/software/cloudera/CDH-5.9.3

tar -zxf cm5.9.3-centos6.tar.gz -C /opt/software/cloudera

## 其实这个放哪儿都行
mv cloudera-manager-installer.bin /opt/software/cloudera
ln -s /opt/software/cloudera/cm /var/www/html/cm
ln -s /opt/software/cloudera/CDH-5.9.3/ /var/www/html/cdh
  1. 添加ClouderaManager和parcel源
vim /etc/yum.repos.d/cloudera-manager.repo
# 添加如下内容
[cloudera-manager]
name=Cloudera Manager, Version 5.9.3
baseurl=http://cm02.spark.com/cm/5
gpgcheck=0

vim /etc/yum.repos.d/cm.repo
# 添加如下内容
[cm]
name=cm
baseurl=http://cm02.spark.com/cm/5
enabled=1
gpgcheck=0
第4部分_配置yum源-02配置ClouderaManager的yum源.png

五、安装Mysql数据库

这里Mysql安装在cm02.spark.com服务器
Mysql版本这里是5.6.x。5.7.x的安装与此不一样,如果你是5.7的话这部分看其他的教程

1. 安装Mysql

附上Mysql的下载地址:
https://dev.mysql.com/downloads/mysql/

第5部分_安装Mysql数据库_05官网下载Mysql5.6.png 第5部分_安装Mysql数据库_06根据操作系统选择Mysql版本.png
  1. 解压tar包,并添加执行权限
# 解压tar包
tar xvf MySQL-5.6.38-1.el6.x86_64.rpm-bundle.tar -C /opt/software/mysql/

cd /opt/software/mysql/
# 添加执行权限
chmod u+x *.rpm
  1. 安装MySQL-shared-compat替换系统自带的mysql-libs
# 先查看一下是否有系统自带的mysql插件,我这里是有的
rpm -qa | grep -i mysql

# 先安装MySQL-shared-compat
rpm -ivh MySQL-shared-compat-5.6.38-1.el6.x86_64.rpm

# 再卸载mysql-libs
yum remove mysql-libs
  1. 安装mysql
# 安装MySQL-server
rpm -ivh MySQL-server-5.6.38-1.el6.x86_64.rpm 

# 安装MySQL-client
rpm -ivh MySQL-client-5.6.38-1.el6.x86_64.rpm 
大数据环境准备0114-安装Mysql.png

2. 配置Mysql

安装完以后Mysql生成一个随机密码保存在/root/.mysql_secret

# 启动Mysql
service mysql start
# 不用再配置开机启动了,安装包已经设置Mysql开机启动

# 查看Mysql密码
more ~/.mysql_secret

# 进行Mysql的基本配置
/usr/bin/mysql_secure_installation --user=mysql
第5部分_安装Mysql数据库_01配置Mysql.png 第5部分_安装Mysql数据库_02配置Mysql.png

3.开启远程登陆

# 命令行登陆Mysql
mysql -uroot -p123123

# 添加远程登陆权限
Grant all privileges on *.* to 'root'@'%' identified by '123123' with grant option;

# 重新加载权限
flush privileges;
第5部分_安装Mysql数据库_03开启远程登陆.png

本地通过Navicat远程连接Mysql:


第5部分_安装Mysql数据库_04本地通过NavicatForMysql连接.png

4. 将Mysql驱动包放入Java 共享目录

三台服务器都要做

#重命令Mysql驱动包,把版本号去掉
mv mysql-connector-java-5.1.44-bin.jar mysql-connector-java.jar

# 将jar包移到java共享目录下
mv mysql-connector-java.jar /usr/share/java/

# 将Mysql驱动包分发到另外两台服务器
scp /usr/share/java/mysql-connector-java.jar root@cm01:/usr/share/java
scp /usr/share/java/mysql-connector-java.jar root@cm03:/usr/share/java

5. 创建数据库及用户并添加权限

create database if not exists amon default charset utf8 collate utf8_general_ci;
create database if not exists rman default charset utf8 collate utf8_general_ci;
create database if not exists nav default charset utf8 collate utf8_general_ci;
create database if not exists navms default charset utf8 collate utf8_general_ci;
create database if not exists sentry default charset utf8 collate utf8_general_ci;
create database if not exists hue default charset utf8 collate utf8_general_ci;
create database if not exists hive;
create database if not exists oozie;

grant all on amon.* to 'amon'@'%' identified by 'amon' with grant option;
grant all on rman.* to 'rman'@'%' identified by 'rman' with grant option;
grant all on nav.* to 'nav'@'%' identified by 'nav' with grant option;
grant all on navms.* to 'navms'@'%' identified by 'navms' with grant option;
grant all on sentry.* to 'sentry'@'%' identified by 'sentry' with grant option;
grant all on hue.* to 'hue'@'%' identified by 'hue' with grant option;
grant all on hive.* to 'hive'@'%' identified by 'hive' with grant option;
grant all on oozie.* to 'oozie'@'%' identified by 'oozie' with grant option;

flush privileges;

六、安装Cloudera Manager

1. 安装Cloudera Manager

# cloudera-manager-installer.bin可以在任意目录下,它会去yum上查找相应的安装文件
# 给cloudera-manager-installer.bin添加执行权限
chmod u+x cloudera-manager-installer.bin 

# 安装
./cloudera-manager-installer.bin --skip_repo_package=1

正常情况下Next、Next、Yes、Next、Yes即安装成功,会有如下提示信息表示安装成功了,比较简单这里就不再给过多的截图了(我每一步都截图了),如果中间有什么问题的话可以去看下日志,日志的位置是/var/log//var/log/cloudera-*/
这个安装包主要做以下的工作:

  1. 安装cloudera-scm-server服务
  2. 安装cloudera-scm-server-db服务这个是CM内置的数据库
  3. 创建cloudera-scm用户
  4. 安装CM内置的JDK(1.7)
  5. 下载一些依赖的插件比如说gcc

此时会在系统会添加两个服务:

# 查看添加的Cloudera服务
rpm -qa | grep cloudera

# 查看服务运行状态
service cloudera-scm-server status
service cloudera-scm-server-db status
第6部分_安装ClouderaManager-08CM安装成功添加的服务服务.png

2. 配置Mysql数据库

  1. ClouderaManager官网对Mysql配置
    Cloudera官网配置Mysql数据库链接
    上面的链接是英文的,我这边仔细阅读过了,
    它的大致意思是:
[mysqld]
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links = 0

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

# 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

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

sql_mode=STRICT_ALL_TABLES
  1. 全局搜索Mysql的配置文件my.cnf
find / -name my.cnf

my.cnf路径一般是/etc/my.cnf没有的话创建,其他地方有的话删除

  1. 修改Mysql的配置文件my.cnf
    把官网给的例子粘贴上去覆盖原来的
  1. 重启Mysql服务
service mysql restart
  1. 测试是否配置成功
    在Mysql中随便创建一个表执行命令show table status发现搜索引擎修改成功
    第6部分_安装ClouderaManager-09修改Mysql数据库配置文件my.cnf.png

3. 为Cloudera Manager配置Mysql数据库

  1. 执行脚本scm_prepare_database.sh
/usr/share/cmf/schema/scm_prepare_database.sh mysql  -uroot -p123123 scm scm scm

如果Mysql与安装的cloudera-scm-server不在同一台服务器,比如说
Mysql在cm01.spark.com,cloudera-scm-server在cm02.spark.com
使用命令:

# 只在cm02.spark.com的服务器执行命令
/usr/share/cmf/schema/scm_prepare_database.sh mysql -h cm01.spark.com -uroot -p123123 --scm-host cm02.spark.com scm scm scm

这个命令的意思是:
为Cloudera Manager指定数据库类型为mysql
通过用户名为root,密码为123123,连接cm01.spark.com上的Mysql数据库。
为在cm02.spark.com的cloudera-scm-server服务,创建一个名叫scm的数据库(第一个scm),并为这个数据库创建一个用户,用户名为scm(第二个scm),密码也为scm(第三个scm)

  1. 停止CM server服务
service cloudera-scm-server stop
service cloudera-scm-server-db stop
  1. 删除内嵌的默认数据库PostgreSQL的配置
rm -f /etc/cloudera-scm-server/db.mgmt.properties
  1. 启动ClouderaManager服务
service cloudera-scm-server start
  1. 浏览器访问地址:http://cm02.spark.com:7180

七、Cloudera Manager添加大数据服务组件

登陆以后next, next, next

第7部分_ClouderaManager添加服务_11CM浏览器访问-提供SSH登陆凭据.png
大数据服务名称 数据库 用户名 密码
Activity Monitor amon amon amon
Reports Manager rman rman rman
Hive Metastore Server hive hive hive
Sentry Server sentry sentry sentry
Cloudera Navigator Audit Server nav nav nav
Cloudera Navigator Metadata Server navms navms navms
Oozie oozie oozie oozie
hue hue hue hue
第7部分_ClouderaManager添加服务_18CM浏览器访问-数据库设置.png

部署完成

之所以把这一步单独列出来,是因为从上张截图到这一步还有很多工作要做,中间你会遇到各种问题,各种报错,都需要你自己根据自己的情况去进行配置,这次我搭了5遍,每次出现的问题都不一样,如果你的内存不足的话问题会更多。
添加服务组件产生的报错,不同的集群,不同的内存及资源分配发生的问题也不一样,不同讨论,实在解决不了的话可以贴出来,大家一块交流交流。

上一篇下一篇

猜你喜欢

热点阅读