(1) Cloudera(Manager) 搭建(V 6.2.0)

本文详细介绍了在局域网环境下,如何通过一系列步骤完成CDH集群的安装与配置,包括网络配置、防火墙与SELinux设置、NTP时间同步、免密登录、JDK安装、CM与CDH软件安装、数据库配置等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下安装全部基于root用户(也可以使用免密的sudo用户)

一、安装前置准备

1、由于国内网络环境与国外资源通信不佳,为节约安装时间,直接跳到“2.1.法A 搭建Cloudera本地包存储库”,然后再回头处理其它步骤

2、同理,因网络问题,可先执行 2.4.1 安装 MySQL 数据库

1.1. 局域网 网络名

1.1.1. hostname修改

[root@cdh01 ~]# vim /etc/hostname

三台服务器的配置如下所示(以外网IP和"-"作为hostname)

  • 主(202)
cdh01
  • 从-1(21)
cdh02
  • 从-2(28)
cdh03

1.1.2. 设置host文件

用于解析hostname对应的内网IP

[root@cdh01 ~]# vim /etc/hosts

三台服务器的配置如下:

  • 主(202)
# ...
127.0.0.1 10.*.*.75
# 内网IP hostname
10.*.*.75 cdh01
10.*.*.213 cdh02
10.*.*.210 cdh03
  • 从-1(21)
# ...
127.0.0.1 10.*.*.213
10.*.*.75 cdh01
10.*.*.213 cdh02
10.*.*.210 cdh03
  • 从-2(28)
# ...
127.0.0.1 10.*.*.210
10.*.*.75 cdh01
10.*.*.213 cdh02
10.*.*.210 cdh03

不可以将127.0.0.1 10.*.*.75 改为 127.0.0.1 cdh01

会导致cm在启动时报错:找不到localhost/127.0.0.1

1.1.3. 修改 Network Names

[root@cdh01 ~]# vim /etc/sysconfig/network

三台服务器的配置如下:

  • 主(202)
HOSTNAME=cdh01
  • 从-1(21)
HOSTNAME=cdh02
  • 从-2(28)
HOSTNAME=cdh03

测试配置

[root@cdh01 ~]# uname -a
[root@cdh01 ~]# host -v -t A $(hostname)

1.2. 防火墙相关

1.2.1. 防火墙

需要关闭每台服务器的防火墙,每个服务器都要执行以下操作

  • 备份iptables规则
[root@cdh01 ~]# iptables-save > ~/firewall.rules
  • 关闭防火墙
[root@cdh01 ~]# sudo systemctl disable firewalld
[root@cdh01 ~]# sudo systemctl stop firewalld

firewall-cmd --state

systemctl disable firewalld.service

systemctl stop firewalld.service

firewall-cmd --state

1.2.2. 设置 SELinux

检查SELinux状态:

[root@cdh01 ~]# getenforce
enforcing
[root@cdh01 ~]#

如果输出的是PermissiveDisabled,您可以跳过此步骤,

如果输出的是enforcing,继续下一步。

  • 设置开机启用:
[root@cdh01 ~]# vim /etc/selinux/config
SELINUX=permissive
  • 立即禁用(或者 重新启动系统)
[root@cdh01 ~]# setenforce 0

ps:安装并部署CDH后,可以再次开启SELinux

1.3 配置NTP

网络时间协议(Network Time Protocol)

CDH要求您在群集中的每台计算机上配置网络时间协议(NTP)服务。大多数操作系统都用 ntpd 时间同步服务。

ps: 如果系统中存在默认的 chronyd,可能会跟 ntpd 对时间同步产生冲突。

  • 安装 ntp 包
[root@cdh01 ~]# yum install ntp
  • 设置ntp配置文件
[root@cdh01 ~]# vim /etc/ntp.conf
  1. ntp服务器的配置
#设置可以访问NTP服务的客户端

#cdh01 主节点 IP
restrict 10.*.*.75

#cdh02 从节点-1 IP
restrict 10.*.*.213

#cdh03 从节点-2 IP
restrict 10.*.*.210


restrict 10.*.*.0 mask 255.255.0.0 nomodify notrap

###############################################
#设置NTP服务地址
server 127.127.1.0
server ntp1.aliyun.com     #阿里云时间服务器(ntp1...21等)
server 127.0.0.1           #表示允许在前面同步失败的情况从本机同步

#这个配置主要用来设定本机作为为其他机器的时间源的时候,其层数为多少,层数必须在15层之内,一般取10。
fudge  127.127.1.0 stratum 8

restrict 表示允许某一个ip访问(或某一个网段访问)当前ntp节点服务端

server 表示使用某一机器作为ntp服务器(可以为是ip或hostname),从多个server中依次获取服务,第一个取不到,就取第二个,直到成功为止。

  1. ntp客户端的配置

server ntp_server_hostname

server cdh01

参考:

centos7 ntp服务器配置

Linux配置ntp时间服务器(全)

  • 重启ntp
systemctl restart ntpd
  • 测试安装结果
[root@cdh01 ~]# ntpstat
synchronised to local net at stratum 9 
   time correct to within 959 ms
   polling server every 64 s

如果是unsynchronised polling server every 8 s(或者unsynchronised time server re-starting polling server every 8 s)都是正常的,ntp服务器配置完毕后,需要等待5-10分钟才能与/etc/ntp.conf中配置的标准时间进行同步。等一段时间之后,再次使用ntpstat命令查看状态。

[root@cdh01 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*LOCAL(0)        .LOCL.           8 l    5   64   37    0.000    0.000   0.000
 120.*.115.20   10.*.*.7      2 u   64   64   17   39.304   26.804   0.732

1.4. 配置免密登录

1.4.1. 配置为cm登录管理子节点的密钥

这一步可以略过

1.4.2. 配置免密登录:

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub root@cdh01
passwd

ssh-copy-id -i ~/.ssh/id_rsa.pub root@cdh02
passwd

ssh-copy-id -i ~/.ssh/id_rsa.pub root@cdh03
passwd

ssh-copy-id 需要密码

所有服务器都要设置

二、 安装 CM(Cloudera Manager) 和 CDH

2.1. 配置yum源

下面提供了A、B两种方法,只需要其中一种即可,强烈推荐A方法

2.1.法A 搭建Cloudera本地包存储库

强烈(强行)建议点击链接访问具体步骤

2.1.法B 配置远程yum源

源是在官方doc上找的:
Cloudera Manager 6 Version and Download Information

  1. 使用 命令’wget <repo_file_url> -P /etc/yum.repos.d/ ’ ,来新增cloudera源,将<repo_file_url>替换成上方的rpo源地址

(为了方便, CentOS 7 对应的 6.2 版本的 yum.rpo源地址 已经拷下来了:RHEL 7 Compatible - Repo File)

[root@cdh01 ~]# wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/
  1. 导入存储库签名GPG密钥
[root@cdh01 ~]# rpm --import https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPM-GPG-KEY-cloudera

2.2. 安装JDK

这里是下载JDK压缩包的方式安装

2.2.1. Java要求

6.2 版本的CM 只支持 “”Oracle JDK 1.8, OpenJDK 1.8

具体参考官方提示:支持的JDK版本

2.2.2. 手动安装 JDK

将JDK解压缩到 /usr/java/jdk-version

[root@cdh01 ~]# tar xvfz /path/to/jdk-8u<update_version>-linux-x64.tar.gz -C /usr/java/

2.2.3. 配置环境变量

所有节点都需要配置,否则会导致集群配置失败

  • 编辑环境变量
[root@cdh01 ~]# vim /etc/profile
#在文件的末尾添加如下内容
# 自定义系统环境变量
# JAVA_HOME && PATH  [ && classpath ]
export JAVA_HOME=/usr/java/jdk1.8.1_11
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • 刷新配置,使环境变量马上生效
[root@cdh01 ~]# source /etc/profile
  • 测试环境变量
[root@cdh01 ~]# echo $JAVA_HOME
/usr/local/java/jdk1.8.1_11
[root@cdh01 ~]# java -version
1.8.1_11

2.3. 安装Cloudera Manager Server

2.3.1. 安装Cloudera Manager Packages

这一步需要以 2.1. 配置yum源 为前提

[root@cdh01 ~]# sudo yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

如果前置工作做完了,可能会安装失败,不必担心,可能是网络的问题,再试一次

2.3.2. 启用Auto-TLS

官方推荐,暂时不用,第一次启用导致了安装失败。

有的博客上也表示,安装后会导致一些安装过程中发生问题

2.4 安装和配置数据库

这里安装的是mysql,如果需要其他的数据库,参考官网安装和配置数据库

2.4.1 安装 MySQL 数据库

RHEL不再包含MySQL。所以必须从MySQL站点下载存储库并直接安装它。

这一步类似 2.1. 配置yum源 的操作

  • 配置源
[root@cdh01 ~]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
[root@cdh01 ~]# sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
  • 安装mysql-server
[root@cdh01 ~]# yum update
[root@cdh01 ~]# yum install mysql-server
[root@cdh01 ~]# systemctl start mysqld
  • 测试安装结果
[root@cdh01 ~]# mysql
...
mysql> exit
[root@cdh01 ~]# 

2.4.2. 配置和启动MySQL服务器

如果要对现有数据库进行更改,请确保在继续之前停止使用该数据库的任何服务。

  1. 如果mysql服务正在运行,先停止mysql
[root@cdh01 ~]# sudo systemctl stop mysqld
  1. /var/lib/mysql/ 位置之外,
    备份InnoDB日志文件 /var/lib/mysql/ib_logfile0/var/lib/mysql/ib_logfile1
[root@cdh01 ~]# cp /var/lib/mysql/ib_logfile* ~/backup/
  1. 确定配置文件 my.cnf 的位置

默认情况 /etc/my.cnf

  1. 修改 my.cnf 以符合CM的要求

(参照官网Configuring and Starting the MySQL Server 的 第4小点 “Update my.cnf so that it conforms to the following requirements”)

官方推荐配置如下

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
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

#In later versions of MySQL, if you enable the binary log and do not set
#a server_id, MySQL will not start. The server_id must be unique within
#the replicating group.
server_id=1

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. 如果AppArmor在安装了MySQL的主机上运行,则可能需要配置AppArmor以允许MySQL写入二进制文件。
  2. 设置开机启动
[root@cdh01 ~]# sudo systemctl enable mysqld
  1. 启动mysql服务
[root@cdh01 ~]# sudo systemctl start mysqld
  1. 运行 /usr/bin/mysql_secure_installation 以设置MySQL的 root密码和其他与安全相关的设置。
[root@cdh01 ~]# sudo /usr/bin/mysql_secure_installation

由于在新的安装中,root密码为空,当系统提示输入root密码时,由于初始密码为空,直接按Enter键。

对于其余提示,可根据下方示例操作(来自官网):

[...]
Enter current password for root (enter for none):
OK, successfully used password, moving on...
[...]
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
[...]
Disallow root login remotely? [Y/n] N
[...]
Remove test database and access to it [Y/n] Y
[...]
Reload privilege tables now? [Y/n] Y
All done!

2.4.3. 安装 MySQL JDBC 驱动

重要提示(官方): 在JDK安装OpenJDK之前 ,使用yum install命令来安装MySQL驱动程序包,然后使用Linuxalternatives命令来将系统JDK设置为OpenJDK 。如果你打算使用Oracle JDK,确保它在使用yum install 安装MySQL驱动程序之前就已经安装好了。
或者,使用以下步骤手动安装驱动程序。

  1. Download Connector/J 下载MySQL JDBC驱动程序(.tar.gz格式)。

截至撰写之时,你可以使用wget下载版本5.1.47,如下:

[root@cdh01 ~]# wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.tar.gz
  1. 解压
[root@cdh01 ~]# tar zxvf mysql-connector-java-5.1.47.tar.gz
  1. 将重命名的JDBC驱动程序复制到 /usr/share/java/
    如果目标目录尚不存在,请创建它。
    如下:
[root@cdh01 ~]# sudo mkdir -p /usr/share/java/
[root@cdh01 ~]# cd mysql-connector-java-5.1.47
[root@cdh01 ~]# sudo cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
  1. 将 /usr/share/java/mysql-connector-java.jar 分发到 其它的集群结点相对目录下

执行以下命令前,请先在各结点建好目录“/usr/share/java/”

[root@cdh01 ~]# scp /usr/share/java/mysql-connector-java.jar root@cdh02:/usr/share/java/mysql-connector-java.jar
[root@cdh01 ~]# scp /usr/share/java/mysql-connector-java.jar root@cdh03:/usr/share/java/mysql-connector-java.jar

如果没有分发jdbc驱动,将会导致在该结点上新增服务失败,如果后续步骤遇到cm新增管理服务提示数据库连接不上时,请检查这个目录下的jdbc驱动在不在。

2.4.4. 为 Cloudera 创建 Databases

以下列出了需要连接数据的服务(作参考):

  • Cloudera Manager Server
  • Cloudera Management Service roles:
    • Activity Monitor (如果在 CDH 5集群中使用MapReduce service)
    • Reports Manager
  • Hue
  • Each Hive metastore
  • Sentry Server
  • Cloudera Navigator Audit Server
  • Cloudera Navigator Metadata Server
  • Oozie

以root用户(或具有create和grant权限的其他用户)登录:

[root@cdh01 ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.6.44-log MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

下面的“Cloudera software 所需的数据库”表,列出了Cloudera Manager配置中的默认名称,但并不一应要用这些。

这一步创建的DB用户,将在后续的webUI界面配置新增服务时 被使用到

Cloudera software 所需的数据库

ServiceDatabaseUser
Cloudera Manager Serverscmscm
Activity Monitoramonamon
Reports Managerrmanrman
Huehuehue
Hive Metastore Servermetastorehive
Sentry Serversentrysentry
Cloudera Navigator Audit Servernavnav
Cloudera Navigator Metadata Servernavmsnavms
Oozieoozieoozie

使用以下命令为集群中部署的每个服务创建数据库。
<database><user><password>参数,替换成所需要的值。
(所有数据库 配置成 UTF8 字符集)

CREATE DATABASE <database> DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

GRANT ALL ON <database>.* TO '<user>'@'%' IDENTIFIED BY '<password>';

根据以上官方提出的信息,整理了一下

  • 数据库创建:
mysql> 
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  • 数据库对应用户的创建
mysql> 
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '123456';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY '123456';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY '123456';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY '123456';
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY '123456';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY '123456';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY '123456';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY '123456';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456';

有的博客写的教程中,metastore用户也是metastore

GRANT ALL ON metastore.* TO ‘metastore’@’%’ IDENTIFIED BY ‘123456’;

(这些都无所谓,关键是记录号对应的配置,后续配置将用到这些信息)

  • 刷新权限
mysql> FLUSH PRIVILEGES;

必须使用flush privileges的两种情况:改密码授权超用户

  • 验证操作结果

mysql> SHOW DATABASES;

mysql> SHOW GRANTS FOR 'hive'@'%';

PS:记录配置好的“数据库名称、用户名、密码”。Cloudera Manager安装向导要求此信息,来正确连接到这些数据库。

2.5. 设置Cloudera Manager数据库

Cloudera Manager Server包含一个可以为自己创建和配置数据库的脚本。该脚本可以:

  • 创建Cloudera Manager Server数据库配置文件。
  • (MariaDB,MySQL和PostgreSQL)为Cloudera Manager
    Server创建和配置数据库以供使用。
  • (MariaDB,MySQL和PostgreSQL)为Cloudera Manager Server创建和配置用户帐户。

虽然脚本可以创建数据库,但以下过程必须在“2.4 安装和配置数据库”的基础之上操作。

以下部分描述了脚本的语法并演示了如何使用它:

1. scm_prepare_database.sh的语法
Parameter(Required in bold)Description
支持的数据库类型: mysql(MariaDB/MySQL)、oracle(Oracle)、postgresql(PostgreSQL)
Cloudera Manager Server 要用的的database名字。 对于MySQL,MariaDB和PostgreSQL数据库,脚本可以创建指定(如果指定)的数据库-u 和 -p用户(具有创建数据库和授予权限的用户)凭据的选项。Cloudera Manager配置设置中提供的默认数据库名称是scm,但不强制使用它。
要创建或使用的Cloudera Manager Server数据库的用户名。Cloudera Manager配置设置中提供的默认用户名是scm,但不强制使用它。
<databaseUser> 创造或使用的密码。如果您不希望密码在屏幕上可见,或存储在命令历史记录中,可以在命令里先不指定密码,系统会在下方提示输入密码:“Enter SCM password:”

具体语法参数,可参考官网“Syntax for scm_prepare_database.sh”,也可以使用以下命令

查看语法:

/opt/cloudera/cm/schema/scm_prepare_database.sh

查看参数

/opt/cloudera/cm/schema/scm_prepare_database.sh -?

2. 准备Cloudera Manager Server数据库

执行以下语句(注意:这里的命令仅适用于DB和CM在同一个主机的情况):

[root@cdh01 ~]# sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm

会提示输入密码,这里密码跟上面统一设置即可。

其实在执行时可以带入相关参数,但是如果Cloudera Manager Server 和 database 安装在同一台机器上,不要使用下面2个参数。
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h cdh01 --scm-host cdh02 scm scm

-h 安装DB的 IP(或hostname),默认为localhost

–scm-host 安装“Cloudera Manager Server”的hostname

可以参考官方提供的不同场景的使用示例:Preparing the Cloudera Manager Server Database - Example

2.6. 安装CDH

设置Cloudera Manager数据库后,启动Cloudera Manager Server,然后登录Cloudera Manager Admin Console:

1. 启动Cloudera Manager Server:
[root@cdh01 ~]# sudo systemctl start cloudera-scm-server
2. 等待几分钟,以启动Cloudera Manager Server。

要观察启动过程,请在Cloudera Manager Server主机上运行以下命令:

[root@cdh01 ~]# sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

当您看到此日志条目时,Cloudera Manager管理控制台已准备就绪:

INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.

如果Cloudera Manager Server未启动,请参阅排除安装问题(官网)

或者参考采坑实录

3. 在Web浏览器中访问http://<server_host>:7180

其中<server_host> 是运行Cloudera Manager Server的主机的域名或IP地址,如下:

http://120...202:7180

注意: 如果启用了auto-TLS,你将重定向到https://<server_host>:7183,并会显示一个安全警告。 需要点击信任的证书,或者点击 跳转到Cloudera Manager Server 。

4. 登录Cloudera Manager Admin Console。

默认凭据为:

  • Username: admin
  • Password: admin

注意: Cloudera Manager不支持更改管理已安装帐户的用户名。运行安装向导后,可以使用Cloudera Manager更改密码。虽然你无法改变 admin 的用户名,您可以添加新用户,为新用户分配管理权限,然后删除默认用户 admin 帐户。

5. 登录后,安装向导将启动。

根据向导提示,按步骤执行即可

可参考:
Welcome to Cloudera Manager

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值