关于CDH和Cloudera Manager

CDH (Cloudera’s Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。

官方参考文档

https://www.cloudera.com/documentation/enterprise/6/6.0/topics/installation.html

系统环境

  • 操作系统:2台 CentOS 7.3 x64 (4C/10G/50G)
  • Cloudera Manager:6.0.0
  • CDH: 6.0.0

注:10G以下内存建议还是别折腾了,保证卡的让你失去耐心。 我们正式环境都是7台主机*64G内存。

相关包的下载地址

Cloudera Manager下载地址:
https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/RPMS/x86_64/

  • cloudera-manager-agent-6.0.0-530873.el7.x86_64.rpm
  • cloudera-manager-daemons-6.0.0-530873.el7.x86_64.rpm
  • cloudera-manager-server-6.0.0-530873.el7.x86_64.rpm
  • cloudera-manager-server-db-2-6.0.0-530873.el7.x86_64.rpm
  • oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm

CDH安装包地址:https://archive.cloudera.com/cdh6/6.0.0/parcels/,由于我们的操作系统为CentOS7.3,需要下载以下文件:

准备工作:系统环境搭建

以下操作均用root用户操作。

1.网络配置(所有节点)

在所有节点上把IP和主机名的对应关系写入。

vi /etc/hosts

192.168.10.73 cdh-master.test.com

192.168.10.74 cdh-slave.test.com

在相应的节点主机上修改主机名。

vi /etc/sysconfig/network

修改或者添加HOSTNAME= cdh-master.test.com

执行命令

hostname cdh-master.test.com

CentOS7要多执行以下这步:

执行以下命令:

hostnamectl set-hostname cdh-master.test.com

注意:这里需要将每台机器的ip及主机名对应关系都写进去,本机的也要写进去,否则启动Agent的时候会提示hostname解析错误。

2.打通SSH,设置ssh无密码登陆(所有节点)

在主节点上执行ssh-keygen -t rsa一路回车,生成无密码的密钥对。

将公钥添加到认证文件中:

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

并设置authorized_keys的访问权限

chmod 600 ~/.ssh/authorized_keys

scp文件到所有datenode节点:

  1. scp ~/.ssh/authorized_keys root@cdh-slave.test.com:~/.ssh/

3.关闭防火墙和SELinux

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

关闭防火墙并关闭自启动:

systemctl stop firewalld

Systemctl disable firewalld

关闭SELINUX(实际安装过程中发现没有关闭也是可以的,不知道会不会有问题,还需进一步进行验证):

  1. setenforce 0 (临时生效)
  2. 修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)

4.所有节点配置NTP服务

集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下:

master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。

所有datanode节点以master节点为基础同步时间。

所有节点安装相关组件:yum install ntp

启动服务: systemctl start ntpd

配置开机启动:systemctl enable ntpd

主节点配置

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

ntp服务只有一个配置文件,配置好了就OK。 这里只给出有用的配置,不需要的配置都用#注掉,这里就不在给出:

  1. driftfile /var/lib/ntp/drift
  2. restrict 127.0.0.1
  3. restrict -6 ::1
  4. restrict default nomodify notrap
  5. server ntp1.aliyun.com prefer
  6. minpoll 6
  7. includefile /etc/ntp/crypto/pw
  8. keys /etc/ntp/keys

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

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

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

如果出现异常请等待几分钟,一般等待5-10分钟才能同步。

配置ntp客户端(所有datanode节点)

  1. driftfile /var/lib/ntp/drift
  2. restrict 127.0.0.1
  3. restrict -6 ::1
  4. restrict default kod nomodify notrap nopeer noquery
  5. restrict -6 default kod nomodify notrap nopeer noquery
  6. #这里是主节点的主机名或者ip
  7. server cdh-master.test.com
  8. minpoll 6
  9. includefile /etc/ntp/crypto/pw
  10. keys /etc/ntp/keys

ok保存退出,请求服务器前,请先使用ntpdate手动同步一下时间:ntpdate -u cdh-master.test.com (主节点ntp服务器).

5.准备Parcels,用以安装CDH6

将CHD6相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中,如果没有此目录,可以自己创建。

注意:最后将• CDH-6.0.0-1.cdh6.0.0.p0.537114-el7.parcel.sha256,重命名为• CDH-6.0.0-1.cdh6.0.0.p0.537114-el7.parcel.sha,这点必须注意否则,系统会重新下载• CDH-6.0.0-1.cdh6.0.0.p0.537114-el7.parcel文件。

正式开始安装

Step 1: Configure a Repository

1.1安装repo

wget https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/

1.2导入GPG key

  1. rpm --import https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/RPM-GPG-KEY-cloudera

Step 2: Install JDK

  1. yum install oracle-j2sdk1.8

Step 3: Install Cloudera Manager Server

带删除线的不用执行。直接略过。

  1. yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

3.1 yum安装CM

  1. yum install cloudera-manager-server(前期只需要安装这个)

If you are using an Oracle database for Cloudera Manager Server, edit the /etc/default/cloudera-scm-server file on the Cloudera Manager server host. Locate the line that begins with export CM_JAVA_OPTS and change the -Xmx2G option to -Xmx4G.

3.2 开启https

开启https支持,由于开启后配置稍微复杂,暂时不配置。

JAVAHOME=/usr/java/_jdk1.8.0_141-cloudera /opt/cloudera/cm-agent/bin/certmanager setup —configure-services

注:后面的章节会重点介绍这部分

Step 4: Install Databases

4.1 Installing the MySQL Server

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

rpm -ivh mysql-community-release-el7-5.noarch.rpm

yum update

yum install mysql-server

systemctl start mysqld

systemctl enable mysqld

Cloudera Manager必须使用innodb引擎。使用MyISAM服务无法启动。

初始化Mysql

/usr/bin/mysql_secure_installation

  1. [...]
  2. Enter current password for root (enter for none):
  3. OK, successfully used password, moving on...
  4. [...]
  5. Set root password? [Y/n] Y
  6. New password:
  7. Re-enter new password:
  8. Remove anonymous users? [Y/n] Y
  9. [...]
  10. Disallow root login remotely? [Y/n] N
  11. [...]
  12. Remove test database and access to it [Y/n] Y
  13. [...]
  14. Reload privilege tables now? [Y/n] Y
  15. All done!

官方推荐配置文件

  1. [mysqld]
  2. datadir=/var/lib/mysql
  3. socket=/var/lib/mysql/mysql.sock
  4. transaction-isolation = READ-COMMITTED
  5. # Disabling symbolic-links is recommended to prevent assorted security risks;
  6. # to do so, uncomment this line:
  7. symbolic-links = 0
  8. key_buffer_size = 32M
  9. max_allowed_packet = 32M
  10. thread_stack = 256K
  11. thread_cache_size = 64
  12. query_cache_limit = 8M
  13. query_cache_size = 64M
  14. query_cache_type = 1
  15. max_connections = 550
  16. #expire_logs_days = 10
  17. #max_binlog_size = 100M
  18. #log_bin should be on a disk with enough free space.
  19. #Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your
  20. #system and chown the specified folder to the mysql user.
  21. log_bin=/var/lib/mysql/mysql_binary_log
  22. #In later versions of MySQL, if you enable the binary log and do not set
  23. #a server_id, MySQL will not start. The server_id must be unique within
  24. #the replicating group.
  25. server_id=1
  26. binlog_format = mixed
  27. read_buffer_size = 2M
  28. read_rnd_buffer_size = 16M
  29. sort_buffer_size = 8M
  30. join_buffer_size = 8M
  31. # InnoDB settings
  32. innodb_file_per_table = 1
  33. innodb_flush_log_at_trx_commit = 2
  34. innodb_log_buffer_size = 64M
  35. innodb_buffer_pool_size = 4G
  36. innodb_thread_concurrency = 8
  37. innodb_flush_method = O_DIRECT
  38. innodb_log_file_size = 512M
  39. [mysqld_safe]
  40. log-error=/var/log/mysqld.log
  41. pid-file=/var/run/mysqld/mysqld.pid
  42. sql_mode=STRICT_ALL_TABLES

4.2 Installing the MySQL JDBC Driver

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

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

mkdir -p /usr/share/java/

cd mysql-connector-java-5.1.46

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

CDH6.0.0详细安装教程及所遇到的问题 - 图1

4.3 Creating Databases for Cloudera Software

需要建的库有

scm、amon、rman、hue、metastore、sentry、nav、navms、oozie

  1. CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  2. GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm@123';
  3. CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  4. GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY ' amon@123';
  5. CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  6. GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman@123';
  7. CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  8. GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue@123';
  9. CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  10. GRANT ALL ON metastore.* TO 'metastore'@'%' IDENTIFIED BY 'metastore@123';
  11. CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  12. GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry@123';
  13. CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  14. GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'nav@123';
  15. CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  16. GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'navms@123';
  17. CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  18. GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie@123';

Step 5: Set up the Cloudera Manager Database

5.1语法

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

[options]

运行/opt/cloudera/cm/schema/scm_prepare_database.sh 可以查看参数

CDH6.0.0详细安装教程及所遇到的问题 - 图2

5.2执行

5.2.1 如果数据库和CM在一台服务器上

  1. /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
  2. Enter SCM password:
  3. JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera
  4. Verifying that we can write to /etc/cloudera-scm-server
  5. Creating SCM configuration file in /etc/cloudera-scm-server
  6. Executing: /usr/java/jdk1.8.0_141-cloudera/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
  7. [main] DbCommandExecutor INFO Successfully connected to database.
  8. All done, your SCM database is configured correctly!

5.2.2 如果数据库和CM不在一台服务器上

  1. /opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h db01.example.com --scm-host cm01.example.com scm scm
  2. Enter database password:
  3. JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera
  4. Verifying that we can write to /etc/cloudera-scm-server
  5. Creating SCM configuration file in /etc/cloudera-scm-server
  6. Executing: /usr/java/jdk1.8.0_141-cloudera/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
  7. [main] DbCommandExecutor INFO Successfully connected to database.
  8. All done, your SCM database is configured correctly!

5.2.3 如果你的数据库是oracle

  1. /opt/cloudera/cm/schema/scm_prepare_database.sh -h cm-oracle.example.com oracle orcl sample_user sample_pass
  2. JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera
  3. Verifying that we can write to /etc/cloudera-scm-server
  4. Creating SCM configuration file in /etc/cloudera-scm-server
  5. Executing: /usr/java/jdk1.8.0_141-cloudera/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/*cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
  6. [ main] DbCommandExecutor INFO Successfully connected to database.
  7. All done, your SCM database is configured correctly!

Step 6: Install CDH and Other Software

6.1 启动cm服务

  1. systemctl start cloudera-scm-server

6.2 查看日志

  1. tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

显示如下表示服务已经正常起来。

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

6.3 登录cm WEB界面

http://:7180

如果你配置了auto-TLS,可以通过https登录。

https://:7183

用户名admin

密码admin

CDH6.0.0详细安装教程及所遇到的问题 - 图3

6.4 具体安装步骤

WELCOME

CDH6.0.0详细安装教程及所遇到的问题 - 图4

Accept License

CDH6.0.0详细安装教程及所遇到的问题 - 图5

Select Edition

版本选择免费版,已经够用。

CDH6.0.0详细安装教程及所遇到的问题 - 图6

Welcome (Add Cluster - Installation)

CDH6.0.0详细安装教程及所遇到的问题 - 图7

Specify Hosts

CDH6.0.0详细安装教程及所遇到的问题 - 图8

Select Repository

CDH6.0.0详细安装教程及所遇到的问题 - 图9

JDK 安装选项

CDH6.0.0详细安装教程及所遇到的问题 - 图10

要允许Cloudera管理器在集群主机上自动安装Oracle JDK,请阅读JDK许可并选中标有install Oracle Java SE Development Kit (JDK)的复选框(如果您接受这些条件)。

如果您在步骤2中安装了自己的Oracle JDK版本:安装Java开发工具包,请不要选中该框。

如果您允许Cloudera管理器安装JDK,则会出现第二个复选框,该复选框标有install Java Unlimited Strength Encryption Policy文件。在JDK版本中,要启用小于1.8u161的AES-256加密,需要这些策略文件。JDK 1.8u161及更高版本默认支持无限强度加密,并且不需要策略文件。在阅读许可条款并检查适用框之后,单击Continue。

Enter Login Credentials

CDH6.0.0详细安装教程及所遇到的问题 - 图11

Install Agents

CDH6.0.0详细安装教程及所遇到的问题 - 图12

Install Parcels

CDH6.0.0详细安装教程及所遇到的问题 - 图13

Inspect Hosts

CDH6.0.0详细安装教程及所遇到的问题 - 图14

6.5 遇到的问题

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

6.5.1 虚拟内存设置

Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机由于交换运行状况不佳。以下主机受到影响:

临时解决

通过echo 0 > /proc/sys/vm/swappiness即可解决。

永久解决

sysctl -w vm.swappiness=0

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

6.5.2 大内存页设置

大内存页禁用

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

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

6.5.3 升级软件依赖版本

Starting with CDH 6, PostgreSQL-backed Hue requires the Psycopg2 version to be at least 2.5.4, see the documentation for more information. This warning can be ignored if hosts will not run CDH 6, or will not run Hue with PostgreSQL. The following hosts have an incompatible Psycopg2 version of ‘2.5.1’:

解决方法:可以忽略。

yum install python-pip

pip install —upgrade psycopg2

6.5.4 无法正常安装agent

CDH6.0.0详细安装教程及所遇到的问题 - 图15

原因:由于我一开始起用了Https支持,所以安装agent时无法和master进行加密通信。其实agent是已经安装好了。最后把CM卸载重新安装,不启用https。

下面附卸载命令:

service cloudera-scm-agent stop

service supervisord stop

systemctl stop cloudera-scm-server

yum remove cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

rm /opt/cloudera/*

数据库部分:drop database scm.

6.5.5 安装Parcel提示主机运行状况不良

Cloudera 安装Parcel提示主机运行状况不良

CDH6.0.0详细安装教程及所遇到的问题 - 图16

解决方法

删除agent目录下面的cm_guid文件,并重启失败节点的agent服务恢复。

[root@esgyn001 ~]# cd /var/lib/cloudera-scm-agent/

cm_guid response.avro uuid

[root@esgyn001 cloudera-scm-agent]# rm -rf cm_guid

[root@esgyn001 cloudera-scm-agent]# service cloudera-scm-agent restart

Stopping cloudera-scm-agent: [ OK ]

Starting cloudera-scm-agent:

Step 7: Set Up a Cluster

7.1 具体步骤

Select Services

CDH6.0.0详细安装教程及所遇到的问题 - 图17

自定义角色分配

选择要安装角色到那台服务器上。

CDH6.0.0详细安装教程及所遇到的问题 - 图18

角色分配官方推荐:

https://www.cloudera.com/documentation/enterprise/6/6.0/topics/cm_ig_host_allocations.html#host_role_assignments

CDH6.0.0详细安装教程及所遇到的问题 - 图19

数据库设置

CDH6.0.0详细安装教程及所遇到的问题 - 图20

审核更改

mkdir –p /data/

CDH6.0.0详细安装教程及所遇到的问题 - 图21

需要修改的选项如下:(不修改也可以,根据自己需要)

HDFS 根目录 /data/hbase

DataNode 数据目录 /data/dfs/dn

NameNode 数据目录 /data/dfs/nn

HDFS 检查点目录 /data/dfs/snn

Hive 仓库目录 /data/user/hive/warehouse

ShareLib 根目录 /data/user/oozie

NodeManager 本地目录 /data/yarn/nm

注意:关于/solr的目录不要修改,不然后面会报错。

命令详细信息

CDH6.0.0详细安装教程及所遇到的问题 - 图22

CDH6.0.0详细安装教程及所遇到的问题 - 图23

Solr服务初始化失败

如果安装过程中,遇到如下错误安装过程中,我修改了默认的/solr的目录为/data/solr,报错无法执行初始化操作。

解决方法

退到上一步,重新修改目录为默认目录。不要修改默认目录。默认是/solr

CDH6.0.0详细安装教程及所遇到的问题 - 图24

Summary

CDH6.0.0详细安装教程及所遇到的问题 - 图25

点击完成,安装完成。

7.2 完成界面及警告处理

界面如下,红色和×××的部分是警告,根据提示来做相应处理。

CDH6.0.0详细安装教程及所遇到的问题 - 图26

此处遇到的问题

  1. 问题1. NFS GATEWAY
  2. No portmap or rpcbind service is running on this host. Please start portmap or rpcbind service before attempting to start the NFS Gateway role on this host.
  3. 解决方法:
  4. 安装yum install portmap
  5. [root@my-cdh-01 hue-httpd]# service rpcbind start
  6. [root@my-cdh-01 hue-httpd]# systemctl enable rpcbind

问题2. q-bi-07: Memory Overcommit Validation Threshold Suppress… (此问题是生产环境遇到的)

主机 q-bi-07 上的内存被调拨过度。总内存分配额是 53.5 GiB 个字节,但是 RAM 只有 62.8 GiB 个字节(其中的 12.6 GiB 个字节是保留给系统使用的)。如需获得分配详细信息,请访问“主机”页面上的“资源”选项卡。重新配置主机上的角色以降低总内存分配额。请注意:Java 最大堆大小乘以 1.3 等于近似的 JVM 开销。

答: 当为该节点上的服务分配的内存大于该节点可用的总内存时(注意,默认情况下,20%的内存是为系统保留的),这个错误就支持了我们转到每个主机上的参考资料页,查看每个服务使用了多少内存。您可以通过转到configuration选项卡(用于每个服务)并更改它(在配置页面的搜索栏中使用“memory”或“heap”来打开这些属性)来降低每个服务使用的内存数量这样做可以避免这个错误,但这不是推荐的修复方法。

首先出现这个错误的原因是您可能在集群上运行了太多的服务。试着去掉一些你不用的东西。您总是可以稍后添加它们(当您添加更多内存时。

选择主机—所有主机—选择报警的主机—资源(检查相应角色的内存分配,然后选择服务—配置—搜索“memory”或“heap”进行相应的更改,并重启相应服务,生效)

CDH6.0.0详细安装教程及所遇到的问题 - 图27

Step8安全:加密传输数据

为Cloudera管理器配置TLS加密。传输层安全(TLS)是一套工业标准的加密协议,用于保护网络上的通信安全。TLS是从安全套接字层(SSL)发展而来的。由于SSL术语仍然广泛使用,Cloudera软件和文档将TLS称为TLS/SSL,但实际使用的协议是TLS。在Cloudera软件中没有使用SSL。

除了TLS/SSL加密之外,使用远程过程调用(rpc)的HDFS和HBase传输数据。为了保护这个传输,您必须启用RPC加密。有关启用TLS/SSL和RPC加密的说明,请查看官方文档。

8.1 配置自动TLS加密为Cloudera管理器和CDH

自动TLS说明

对于新安装,Cloudera建议将自动tls作为安装过程的一部分。

自动TLS极大地简化了在集群上启用和管理TLS加密的过程。它自动创建内部证书颁发机构(CA)并跨所有集群主机部署证书。它还可以自动分发现有证书,例如由公共CA签名的证书。在启用自动tls的集群中添加新的集群主机或服务,将自动创建和部署所需的证书。

有关启用自动TLS的说明,请参阅使用自动TLS安装Cloudera管理器、CDH和托管服务以及为Cloudera管理器和CDH配置TLS加密。

8.1.1 允许自动tls自动创建证书

在Cloudera管理器服务器主机上安装了Cloudera管理器代理之后,在启动Cloudera管理器之前,按照如下方式启用自动tls。

在Cloudera管理器服务器主机上,初始化证书管理器并配置Cloudera管理器服务器,以通过运行以下命令启用自动tls:

  1. JAVA_HOME=/usr/java/jdk1.8.0_141 /opt/cloudera/cm-agent/bin/certmanager setup --configure-services
  2. 用您环境的正确路径替换JDK版本。如果希望将文件存储在默认目录(/var/lib/cloudera-scm-server/certmanager)以外的目录中,请添加—location选项如下:
  3. JAVA_HOME=/usr/java/jdk1.8.0_141 /opt/cloudera/cm-agent/bin/certmanager --location/opt/cloudera/CMCAsetup --configure-services

用要使用的目录路径替换/opt/cloudera/CMCA。这个目录是自动创建的,在运行命令之前不存在。检查/var/log/cloudera-scm-agent/certmanager.log 日志文件,以确认目录已创建。

如果Cloudera管理器服务器正在运行,重新启动它:

  1. systemctl restart cloudera-scm-server

8.1.2 使用现有证书启用自动-TLS

在启用自动tls之前,请确保您拥有所有集群主机的主机证书。在Cloudera管理器服务器主机上安装了Cloudera管理器代理之后,在启动Cloudera管理器之前,按照如下方式启用自动tls:

a、初始化证书管理器并配置Cloudera管理器服务器,以使用自定义证书目录启用自动tls:

  1. JAVA_HOME=/usr/java/jdk1.8.0_141 /opt/cloudera/cm-agent/bin/certmanager --location/opt/cloudera/CMCAsetup_custom_certdir --configure-services --host-cert/path/to/hostcert.pem--host-key/path/to/hostkey.pem--ca-cert/path/to/cacert.pem--keystore-pw-file/path/to/keystore_pw_file--truststore-pw-file/path/to/truststore_pw_file
  2. 用适合您环境的正确路径替换JDK版本及其它相关路径。如:/path/to/hostcert.pem,/path/to/hostkey.pem 观察日志是否有报错:
  3. /var/log/cloudera-scm-agent/certmanager.log
  4. b、对于每个集群主机(具有唯一的证书和密钥),运行以下命令:
  5. JAVA_HOME=/usr/java/jdk1.8.0_141 /opt/cloudera/cm-agent/bin/certmanager --location /opt/cloudera/CMCA add_custom_cert --host-cert <host_cert> --host-key <host_key> <hostname>

用适合您环境的正确路径替换JDK版本。

c、如果Cloudera Manager Server是运行的状态,请重启。

  1. systemctl restart cloudera-scm-server

8.1.3 自动tls代理文件位置

由自动tls生成的证书、密钥存储库和密码文件存储在每个Cloudera管理器代理上的

/var/lib/Cloudera -scm- Agent/Agent-cert中。文件名如下:

Auto-TLS Agent Files
Filename Description
cm-auto-global_cacerts.pem CA证书和其他PEM格式的受信任证书
cm-auto-global_truststore.jks CA证书和JKS格式的其他受信任证书
cm-auto-in_cluster_ca_cert.pem PEM格式的CA证书
cm-auto-in_cluster_truststore.jks JKS格式的CA证书
cm-auto-host_key_cert_chain.pem 代理主机证书和PEM格式的私钥
cm-auto-host_cert_chain.pem PEM格式的代理主机证书
cm-auto-host_key.pem 代理主机私钥的PEM格式
cm-auto-host_keystore.jks 代理主机私钥的JKS格式
cm-auto-host_key.pw 代理主机私钥密码文件

8.2Cloudera Manager配置TLS加密

现有集群不支持Auto-TLS。要在现有集群上启用TLS(在已经安装好的集群上启用TLS),请遵循下面的说明。

https://www.cloudera.com/documentation/enterprise/6/6.0/topics/how_to_configure_cm_tls.html#concept_wk4_jlx_qw

  1. Generate TLS Certificates
  2. Configure TLS for the Cloudera Manager Admin Console
  3. Configure TLS for Cloudera Manager Agents
  4. Enable Server Certificate Verification on Cloudera Manager Agents
  5. Configure Agent Certificate Authentication