CDP数据中心版7.0.3是Cloudera与Hortonworks合并后,第一个融合CDH和HDP所有组件的on-premise版本,CDP Data Center主要由Cloudera Runtime构成,Cloudera Runtime由超过35个开源项目组成,当然CDP Data Center还包括其它功能如管理功能Cloudera Manager,Key Management,专业支持等.
Cloudera Runtime的主要组件版本如下图所示:
Component | Apache Version |
---|---|
Atlas | 2.0.0 |
Avro | 1.8 |
DAS | 1.4 |
Hadoop | 3.1 |
HBase | 2.2 |
Hive | 3.1 |
Hive Warehouse Connector | 1.0 (Technical Preview) |
Hue | 4.3 |
Impala | 3.3 |
Kafka | 2.3 |
Kudu | 1.11 |
Oozie | 5.1 |
ORC | 1.5 |
Ozone | 0.4.0 (Technical Preview) |
Parquet | 1.1 |
Phoenix | 5 |
Ranger | 2 |
Solr | 7.4 |
Spark | 2.4 |
Sqoop | 1.4 |
Tez | 0.9 |
Zookeeper | 3.5.5 |
本文档主要描述如何在Redhat7.6安装CDP Data Center。CDP Data Center的安装步骤一致,主要包括以下四部分:
- 安全前置准备,包括安装操作系统、关闭防火墙、同步服务器时钟等;
- 外部数据库如PostgreSQL安装
- 安装Cloudera Manager;
- 安装Cloudera Runtime集群;
01
—
前提条件
请务必注意CDP DataCenter的安装前置条件,请到https://docs.cloudera.com/cdpdc/7.0/release-guide/topics/cdpdc-requirements-supported-versions.html查询对应版本的前提条件。对应CDP 数据中心版7.0来讲,前提条件包括如下:
1.1. 硬件需求
要评估群集的硬件和资源分配,您需要分析要在群集上运行的工作负载的类型,以及将用于运行这些工作负载的运行时组件。您还应该考虑要存储和处理的数据大小,工作负载的频率,需要运行的并发作业的数量以及应用程序所需的速度。
创建集群的体系结构时,需要在集群的主机之间分配Cloudera Manager和Runtime角色,以最大程度地利用资源。Cloudera提供了一些有关如何向群集主机分配角色的准则。请参阅推荐的群集主机和角色分配。将多个角色分配给主机后,将主机上每个角色的总资源需求(内存,CPU,磁盘)加在一起即可确定所需的硬件。
关于特定组件的硬件需求的更多信息,请参考https://docs.cloudera.com/cdpdc/7.0/release-guide/topics/cdpdc-hardware-requirements.html
1.2. 操作系统
目前支持的操作系统为:RHEL/CentOS/ OL with RHCK Kernel 7.6
1.2.1 软件依赖关系
- Python-默认情况下,操作系统随附的Python版本以及更高版本均支持Hue除外的CDP数据中心以及更高版本,但与Python 3.0或更高版本不兼容。
- 例如,在与RHEL 7兼容的操作系统上,CDP数据中心需要Python 2.7或更高版本。
- Spark 2需要Python 2.7或更高版本。如果默认情况下未选择正确的Python级别,请在运行pyspark命令之前将PYSPARK_PYTHON和PYSPARK_DRIVER_PYTHON环境变量设置为指向正确的Python可执行文件。
- 不支持Python 3。
- Perl -Cloudera Manager需要perl。
- python-psycopg2 -Cloudera Manager 7对软件包具有依赖性 python-psycopg2。Runtime 7中的Hue需要psycopg2比Cloudera Manager依赖项更高的版本。有关更多信息,请参见安装psycopg2Python软件包。
- iproute软件包-CDP数据中心对iproute软件包有依赖性。任何运行ClouderaManager Agent的主机都需要该软件包。所需版本取决于操作系统:
表1. iproute软件包 | |
---|---|
操作系统 | iproute版本 |
兼容RHEL 7 | iproute-3.10 |
1.2.2. 文件系统要求
Hadoop分布式文件系统(HDFS)设计为在操作系统中的基础文件系统之上运行。Cloudera建议您使用在支持的操作系统上测试的以下两个文件系统之一:
- ext3:这是用于HDFS的最受测试的基础文件系统。
- ext4:ext3的此可扩展扩展在最新的Linux版本中受支持。
Cloudera不支持从ext3到ext4的就地升级。Cloudera建议您在将磁盘用作数据目录之前将其格式化为ext4。
- XFS:这是RHEL 7中的默认文件系统。
- S3:亚马逊简单存储服务
Kudu文件系统要求-ext4和XFS支持Kudu。Kudu需要支持打孔(hole punching)的内核版本和文件系统。
1.2.3. 文件存取时间
Linux文件系统保留访问每个文件的时间的元数据的记录。这意味着即使读取也会导致对磁盘的写入。为了加快文件读取速度,Cloudera建议您atime
使用以下noatime
选项中的mount选项禁用名为的选项/etc/fstab
:
/dev/sdb1 /data1 ext4 defaults,noatime 0
应用更改而无需重新启动:
代码语言:javascript复制mount -o remount /data1
1.2.4. 文件系统挂载选项
文件系统mount
选项具有一个sync
允许您同步写入的选项。
使用sync
文件系统挂载选项会降低将数据写入磁盘的服务的性能,例如HDFS/YARN/Kafka和Kudu。在CDH中,大多数写入已被复制。因此,对磁盘的同步写入是不必要的、昂贵的,并且不能显着提高稳定性。
即使使用分层存储功能,也不支持将NFS和NAS选项用作DataNode Data Directory挂载。
1.2.5. 文件系统需求
Cloudera Manager会自动在/etc/security/limits.conf
中设置nproc
配置,但是该配置可以被/etc/security/limits.d/
中的单个文件覆盖。这可能会导致Apache Impala和其他组件出现问题。
确保将nproc
限制设置得足够高,例如 65536
或262144
。
1.2.6. Kudu需要nscd
尽管不是严格要求,但强烈建议您为Kudu使用nscd
同时缓存DNS名称解析和静态名称解析。
1.3. 外部数据库支持
Cloudera Manager和Runtime随附有嵌入式PostgreSQL数据库,供在非生产环境中使用。生产环境不支持嵌入式PostgreSQL数据库。对于生产环境,必须将群集配置为使用专用的外部数据库。
安装数据库后,升级到最新补丁并应用适当的更新。可用更新可能特定于安装它的操作系统。
代码语言:javascript复制笔记:
Cloudera建议您使用与群集节点的操作系统相对应的数据库的默认版本。如果选择使用默认数据库以外的数据库,请参考操作系统的文档以验证支持。
对所有自定义数据库使用UTF8编码。
Table 1. PostgreSQL Support for CDP Data Center 7 | |
---|---|
PostgreSQL Version | CDP Data Center 7 |
10.x | Recommended for production |
9.x | Trial installations |
注意:
如果需要使用DAS,则需要使用PostgreSQL9.6版本。
1.4. JDK
仅支持64位JDK。
不支持在不同JDK版本上的同一群集中运行Runtime节点。所有群集主机必须使用相同的JDK更新级别。
Supported JDKs
CDP Data Center Version | Supported JDK |
---|---|
7.0 | OpenJDK 1.8 |
Table 1. OpenJDK 8 versions that are tested and recommended
OpenJDK Version | Notes |
---|---|
1.8u232 | Minimum required / Latest version tested |
1.5. 测试环境
- Cloudera Manager和Cloudera Runtime版本为7.0.3
- CentOS7.6
- OpenJDK1.8.0_141
- PostgreSQL 10.5
- root用户安装
- 4节点
02
—
前置准备
2.1 Hostname及hosts配置
集群中各个节点之间能互相通信使用静态IP地址。IP地址和主机名通过/etc/hosts配置,主机名通过/etc/hostname进行配置。
以cm节点(172.31.118.74)为例:
2.1.1. hostname配置
/etc/hostname文件如下:
代码语言:javascript复制[root@grocery-1 ~]# cat /etc/hostname
grocery-1.vpc.cloudera.com
或者你可以通过命令修改立即生效
代码语言:javascript复制[root@grocery-1 ~]# hostnamectl set-hostname grocery-1.vpc.cloudera.com
2.1.2. hosts配置
/etc/hosts文件如下:
代码语言:javascript复制[root@grocery-1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.31.118.74 grocery-1.vpc.cloudera.com grocery-1
以上两步操作,在集群中其它节点做相应配置。确认需要安装的5台主机的hosts文件:
这里使用DNS,所有hosts文件中没有配置所有节点的IP地址。如果使用hosts文件,则需要将所有节点的IP地址配置到/etc/hosts文件中。
2.2. 配置互信
在管理节点上生成密钥,并配置对所有节点的互信。
生成密钥:
代码语言:javascript复制[root@xuefeng-1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:RRLaFGHVSxkfwWF/gkY19oWSVSxpZvEbLyXofaW51c0 root@xuefeng-1.vpc.cloudera.com
The key's randomart image is:
---[RSA 2048]----
| B=o.oB@Oo|
| = o .**O*o|
| . . .. * oB|
| . o.. BO|
| S . =.E|
| = |
| . |
| |
| |
----[SHA256]-----
[root@xuefeng-1 ~]#
对于需要交互输入的部分,输入回车即可(企业如果有内部要求,则按照要求进行)
将生成的密钥分发给所有节点,配置对所有节点的互信。
代码语言:javascript复制for i in {1..4}; do ssh-copy-id -i ~/.ssh/id_rsa.pubgrocery-$i.vpc.cloudera.com ; done
交互式输入yes和对应节点的访问密码即可。
2.2.1. 检查互信
主节点对其他节点的互信完成后,在主节点上执行一个在所有节点上都执行的命令,来进行互信验证,确认不需要输入密码可以访问其他节点。
代码语言:javascript复制[root@grocery-1 ~]# for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com " hostname -A" ; done
grocery-1.vpc.cloudera.com
grocery-2.vpc.cloudera.com
grocery-3.vpc.cloudera.com
grocery-4.vpc.cloudera.com
[root@grocery-1 ~]#
2.3. 配置操作系统repo
如果系统已经挂载了操作系统的repo,则跳过该步。否则需要现在操作机上配置操作系统的镜像。
2.3.1. 挂载操作系统iso文件
代码语言:javascript复制[ec2-user@ip-172-31-2-159 ~]$ sudo mkdir /media/DVD1
[ec2-user@ip-172-31-2-159 ~]$ sudo mount -o loop
CentOS-7-x86_64-DVD-1611.iso /media/DVD1/
配置操作系统repo
代码语言:javascript复制[ec2-user@ip-172-31-2-159 ~]$ sudo vim /etc/yum.repos.d/local_os.repo
[local_iso]
name=CentOS-$releasever - Media
baseurl=file:///media/DVD1
gpgcheck=0
enabled=1
[ec2-user@ip-172-31-2-159 ~]$ sudo yum repolist
2.4. 安装其他工具软件
操作节点安装以下工具软件
代码语言:javascript复制yum -y install createrepo wget unzip
2.5. 安装http服务
2.5.1. 安装httpd服务
代码语言:javascript复制[root@xuefeng-1 ~]# sudo yum -y install httpd
2.5.2. 修改配置文件
修改/etc/httpd/conf/httpd.conf配置文件,在<IfModule mime_module>中修改以下内容
代码语言:javascript复制AddType application/x-gzip .gz .tgz .parcel
4.保存httpd.conf的修改,并重启httpd服务
2.5.3. 设置并启动httpd服务
代码语言:javascript复制[root@grocery-1 ~]# vi /etc/httpd/conf/httpd.conf
[root@grocery-1 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@grocery-1 ~]# systemctl start httpd
[root@grocery-1 ~]#
通过浏览器访问http://grocery-1.vpc.cloudera.com/测试,如果可以正常访问HTTP服务即可,如下图所示。
2.5.4. 重制OS的repo
安装完httpd后,重新制作操作系统repo,换成http的方式方便其它服务器也可以访问
代码语言:javascript复制[ec2-user@ip-172-31-2-159 ~]$ sudo mkdir /var/www/html/iso
[ec2-user@ip-172-31-2-159 ~]$ sudo scp -r /media/DVD1/* /var/www/html/iso/
[ec2-user@ip-172-31-2-159 ~]$ sudo vim /etc/yum.repos.d/os.repo
[osrepo]
name=os_repo
baseurl=http://grocery-1.vpc.cloudera.com/iso/
enabled=true
gpgcheck=false
[ec2-user@ip-172-31-2-159 ~]$ sudo yum repolist
2.5.5. OS的Repo分发
将操作系统的repo文件分发到其他机器上。
代码语言:javascript复制for i in {2..4}; do scp /etc/yum.repos.d/os.repo grocery-$i.vpc.cloudera.com:/etc/yum.repos.d/os.repo;done
2.6. 升级软件和系统内核
使用下面的命令升级所有包同时也升级软件和系统内核。
代码语言:javascript复制for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com " yum -y update " ; done
2.7. 禁用SELinux
在所有节点执行setenforce0 命令,此处使用批处理shell执行:
代码语言:javascript复制for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com 'setenforce 0 ' ;done
修改配置文件来关闭SELinux。
代码语言:javascript复制#关闭selinux
for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com 'echo "SELINUX=disabled" > /etc/selinux/config ' ;done
也可以手工修改/etc/selinux/config文件如下:
代码语言:javascript复制# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
2.8. 关闭防火墙
集群所有节点执行systemctl stop命令,此处通过shell批量执行命令如下:
代码语言:javascript复制##关闭防火墙
for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com 'systemctl disable firewalld' ;done
for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com 'systemctl stop firewalld.service ' ;done
for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com 'systemctl list-unit-files | grep firewalld ' ;done
for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com 'systemctl status firewalld.service' ;done
2.9. 集群时钟同步
在Redhat7.x的操作系统上,已经默认的安装了chrony,我们这里先卸载chrony,然后安装ntp。使用ntp来配置各台机器的时钟同步,将cm(172.31.6.83)服务作为本地ntp服务器,其它3台服务器与其保持同步。
2.9.1. 所有机器卸载chrony
代码语言:javascript复制for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'yum -y remove chrony' ;done
2.9.2. 所有机器安装ntp和ntpdate
代码语言:javascript复制##设置时区和时钟同步
for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com 'yum install -y ntp ntpdate ' ;done
for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com ' timedatectl set-timezone Asia/Shanghai' ;done
for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com 'chkconfig --level 345 ntpd on ' ;done
2.9.3. cm机器配置时钟与自己同步
如果企业有自己的时钟服务器,则都同步企业自身的时钟服务器,否则同步CM的时钟。
代码语言:javascript复制[root@grocery-1 ~]# vim /etc/ntp.conf
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
2.9.4. 集群其它节点,配置找cm机器去同步
代码语言:javascript复制#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
server grocery-1.vpc.cloudera.com
2.9.5. 重启所有机器的ntp服务
所有服务器使用ntpdate强制同步时间
代码语言:javascript复制[root@grocery-1 ~]# for i in {2..4}; do sshgrocery-$i.vpc.cloudera.com ' systemctl stop ntpd' ;done
[root@grocery-1 ~]# #强制和时钟服务器时间同步,排除自己
[root@grocery-1~]# for i in {2..4}; do ssh grocery-$i.vpc.cloudera.com ' ntpdate10.65.51.45' ;done
24Nov 16:12:21 ntpdate[9538]: adjust time server 10.65.51.45 offset 0.000399 sec
24Nov 16:12:27 ntpdate[28877]: adjust time server 10.65.51.45 offset -0.000211sec
24Nov 16:12:33 ntpdate[28874]: adjust time server 10.65.51.45 offset -0.000204sec
启动所有机器的ntp服务
代码语言:javascript复制for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'systemctl enable ntpd ' ;done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'systemctl start ntpd ' ;done
#for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com ' systemctl status ntpd' ;done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com ' ntpq -p' ;done
2.9.6. 验证始终同步
等待几分钟后,在所有节点执行ntpq-p命令,如下使用脚本批量执行
代码语言:javascript复制for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com ' ntpq -p' ;done
左边出现*号表示同步成功。
2.10. 设置swap
管理节点执行
代码语言:javascript复制[root@grocery-1 ~]# #设置vm.swappiness
[root@grocery-1 ~]# for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com ' echo "vm.swappiness = 1" >> /etc/sysctl.conf' ;done
[root@grocery-1 ~]# for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com ' sysctl vm.swappiness=1' ;done
vm.swappiness = 1
vm.swappiness = 1
vm.swappiness = 1
vm.swappiness = 1
[root@grocery-1 ~]#
2.11. 设置透明大页面
2.11.1. 管理节点执行
代码语言:javascript复制#设置透明大页面
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'echo "echo 'never' >/sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local' ;done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'echo "echo 'never' >/sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local' ;done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'echo 'never' >/sys/kernel/mm/transparent_hugepage/defrag' ;done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled' ;done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'chmod x /etc/rc.d/rc.local' ;done
2.11.2. 设置开机自关闭
将如下脚本添加到/etc/rc.d/rc.local文件中
代码语言:javascript复制if test -f/sys/kernel/mm/transparent_hugepage/enabled; then echo never >/sys/kernel/mm/transparent_hugepage/enabled fi
if test -f/sys/kernel/mm/transparent_hugepage/defrag; then echo never >/sys/kernel/mm/transparent_hugepage/defrag fi
2.11.3. 同步到所有节点
代码语言:javascript复制[root@xuefeng-1 ~]# for i in {2..5}; do scp/etc/rc.d/rc.local grocery-$i.vpc.cloudera.com:/etc/rc.d/rc.local; done
rc.local 100% 723 3.7MB/s 00:00
rc.local 100% 723 4.0MB/s 00:00
rc.local 100% 723 3.9MB/s 00:00
rc.local 100% 723 3.9MB/s 00:00
[root@xuefeng-1 ~]#
2.12. 关闭iptables
管理节点执行:
代码语言:javascript复制#关闭iptables
for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com'systemctl stop iptables' ;done
for i in {1..4}; do ssh grocery-$i.vpc.cloudera.com'chkconfig iptables off' ;done
2.13.设置limits
管理节点执行:
代码语言:javascript复制#设置limits
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'echo "hdfs - nofile 32768" >>/etc/security/limits.conf';done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'echo "mapred - nofile 32768" >>/etc/security/limits.conf';done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'echo "hbase - nofile 32768" >>/etc/security/limits.conf';done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'echo "hdfs - noproc 32768" >>/etc/security/limits.conf';done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'echo "mapred - noproc 32768" >>/etc/security/limits.conf';done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'echo "hbase - noproc 32768" >>/etc/security/limits.conf';done
2.14.安装PostgreSQL
2.14.1. 下载并安装yum源
从https://yum.postgresql.org/上下载PostgreSQL10的yum源,
从10进去后,选择对应的操作系统版本:
也可以将对应的链接保存,通过wget命令下载:
代码语言:javascript复制https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
安装PG的yum源
代码语言:javascript复制rpm -ivh pgdg-redhat-repo-latest.noarch.rpm
查看PG的yum源
代码语言:javascript复制ls -lrt /etc/yum.repos.d/
代码语言:javascript复制yum list postgresql*
2.14.2. 安装PostgreSQL
我们这里安装PostgreSQL10的数据库版本,安装命令如下:
代码语言:javascript复制sudo yum -y install postgresql10-server
2.14.3. 安装psycopg2的Python包
在Runtime 7中,Hue需要2.7.5或更高版本的psycopg2 Python软件包才能连接到PostgreSQL数据库。该psycopg2软件包会作为Cloudera Manager Agent的依赖项自动安装,但是安装的版本通常低于2.7.5。
如果要安装Runtime 7并将PostgreSQL用于Hue数据库,则必须psycopg2在所有Hue主机上安装 2.7.5或更高版本,如下所示。这些示例安装版本2.7.5:
- 安装python-pip 软件包:
sudo yum -yinstall python-pip
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com " sudo yum -y install python-pip" ; done
- 升级pip版本
pip install --upgrade pip
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com " pip install --upgrade pip " ; done
- psycopg2使用pip以下命令安装2.7.5 :
sudo pip installpsycopg2==2.7.5 --ignore-installed
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com " sudo pip install psycopg2==2.7.5--ignore-installed " ; done
2.14.4. 配置和启动PostgreSQL服务器
默认情况下,PostgreSQL仅接受回送接口上的连接。您必须重新配置PostgreSQL,以接受来自托管要为其配置数据库的服务的主机的完全限定域名(FQDN)的连接。如果不进行这些更改,则服务将无法连接并使用它们所依赖的数据库。
如果要更改现有数据库,请确保在继续之前停止使用该数据库的所有服务。
- 确保将LC_ALL其设置为en_US.UTF-8并初始化数据库,如下所示:
RHEL 7:
echo 'LC_ALL="en_US.UTF-8"' >>/etc/locale.conf
/usr/pgsql-10/bin/postgresql-10-setup initdb
- 启用MD5身份验证。编辑pg_hba.conf,通常在/var/lib/pgsql/data或/etc/postgresql/<version>/main中找到。
添加以下行:
代码语言:javascript复制host all all 127.0.0.1/32 md5
如果默认pg_hba.conf文件包含以下行:
代码语言:javascript复制host all all 127.0.0.1/32 ident
那么必须在该行之前插入上面显示的host指定md5身份验证的行。否则,运行脚本时可能会导致身份验证错误。
简单点可以允许所有机器通过md5方式访问。
您可以修改上面显示的行的内容以支持不同的配置。
- 配置设置以确保您的系统按预期运行。在/var/lib/pgsql/data/postgresql.conf或 /var/lib/postgresql/data/postgresql.conf文件中更新这些设置。设置因群集大小和资源而异,如下所示:
- 中小型群集-将以下设置视为起点。如果资源有限,请考虑进一步减小缓冲区大小和检查点段。根据每个主机的资源利用率,可能需要进行持续的调整。例如,如果Cloudera Manager Server与其他角色在同一主机上运行,则可以接受以下值:
- max_connection-通常,允许主机上的每个数据库最大100个连接,然后添加50个额外的连接。如连接设置中所述,您可能必须增加可用于PostgreSQL的系统资源。
- shared_buffers -256MB(PG10无此参数)
- wal_buffers -8MB
- checkpoint_segments -16(PG10无此参数)
- checkpoint_completion_target -0.9
- listen_addresses = '*'
- 配置PostgreSQL服务器以在启动时启动。
sudo systemctl enable postgresql-10
- 重新启动PostgreSQL数据库:
sudo systemctl restart postgresql-10
2.14.5. 创建数据库
以下组件需要数据库:
- Cloudera Manager Server
- Cloudera Management Serviceroles:
- Reports Manager
- Hue
- Each Hive metastore
- Oozie
- Data Analytics Studio
- Ranger
必须将数据库配置为支持PostgreSQL UTF8字符集编码。
记录您输入的数据库名称,用户名和密码的值。Cloudera Manager安装向导需要此信息才能正确连接到这些数据库。
注意:
要使用DAS,请安装PostgreSQL数据库9.6版。
步骤:
- 连接到PostgreSQL:
sudo -u postgres psql
- 从下表中为您正在使用的每个服务创建数据库:
CREATE ROLE <user> LOGIN PASSWORD '<password>';
CREATE DATABASE <database> OWNER <user>ENCODING 'UTF8';
您可以为<database>, <user>和<password>使用任何所需的值。以下示例是Cloudera Manager配置设置中提供的默认名称,但是您不需要使用它们:
Table 1. Databases for Cloudera Software | ||
---|---|---|
Service | Database | User |
Cloudera Manager Server | scm | scm |
Activity Monitor | amon | amon |
Reports Manager | rman | rman |
Hue | hue | hue |
Hive Metastore Server | metastore | hive |
Oozie | oozie | oozie |
Data Analytics Studio | das | das |
建表语句如下:
代码语言:javascript复制CREATE ROLE scm LOGIN PASSWORD 'cloudera';
CREATE DATABASE scm OWNER scm ENCODING 'UTF8';
CREATE ROLE amon LOGIN PASSWORD 'cloudera';
CREATE DATABASE amon OWNER amon ENCODING 'UTF8';
CREATE ROLE rman LOGIN PASSWORD 'cloudera';
CREATE DATABASE rman OWNER rman ENCODING 'UTF8';
CREATE ROLE hue LOGIN PASSWORD 'cloudera';
CREATE DATABASE hue OWNER hue ENCODING 'UTF8';
CREATE ROLE hive LOGIN PASSWORD 'cloudera';
CREATE DATABASE metastore OWNER hive ENCODING'UTF8';
CREATE ROLE oozie LOGIN PASSWORD 'cloudera';
CREATE DATABASE oozie OWNER oozie ENCODING 'UTF8';
CREATE ROLE das LOGIN PASSWORD 'cloudera';
CREATE DATABASE das OWNER das ENCODING 'UTF8';
CREATE ROLE rangeradmin LOGIN PASSWORD'!Beijing28';
CREATE DATABASE ranger OWNER rangeradmin ENCODING'UTF8';
GRANT ALL PRIVILEGES ON DATABASE ranger TOrangeradmin;
2.14.6. 安装Postgresql-jdbc驱动
- 安装PostgreSQL连接器:
yum install postgresql-jdbc*
- 将连接器.jar文件复制到Java共享目录:
cp/usr/share/java/postgresql-jdbc.jar/usr/share/java/postgresql-connector-java.jar
- 确认.jar文件位于Java共享目录中:
ls/usr/share/java/postgresql-connector-java.jar
- 将.jar文件的访问模式更改为644:
chmod 644/usr/share/java/postgresql-connector-java.jar
完整命令如下:
代码语言:javascript复制for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com " sudo yum -y install postgresql-jdbc* "; done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com " cp /usr/share/java/postgresql-jdbc.jar/usr/share/java/postgresql-connector-java.jar " ; done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com " ls/usr/share/java/postgresql-connector-java.jar " ; done
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com " chmod 644 /usr/share/java/postgresql-connector-java.jar"; done
2.15.安装JDK
我们这里使用操作系统自带的openjdk,提前安装。也可以只安装Cloudera Manager Server节点,然后通过向导安装openJDK。
代码语言:javascript复制#安装openJDK1.8
for i in {1..4}; do sshgrocery-$i.vpc.cloudera.com 'yum -y install java-1.8.0-openjdk.x86_64java-1.8.0-openjdk-headless.x86_64 java-1.8.0-openjdk-devel.x86_64' ;done
03
—
Cloudera Manager安装
3.1. 配置本地repo源
下载介质时注意选择自己需要的版本和对应的操作系统版本,下面以Cloudera Manager7.0.3和Cloudera Runtime7.0.3为示例。
1. 下载CM7.0.3的安装包,地址为:
代码语言:javascript复制http://archive.cloudera.com/cm7/7.0.3/redhat7/yum/RPMS/x86_64/cloudera-manager-agent-7.0.3-1635136.el7.x86_64.rpm
http://archive.cloudera.com/cm7/7.0.3/redhat7/yum/RPMS/x86_64/cloudera-manager-daemons-7.0.3-1635136.el7.x86_64.rpm
http://archive.cloudera.com/cm7/7.0.3/redhat7/yum/RPMS/x86_64/cloudera-manager-server-7.0.3-1635136.el7.x86_64.rpm
http://archive.cloudera.com/cm7/7.0.3/redhat7/yum/RPMS/x86_64/cloudera-manager-server-db-2-7.0.3-1635136.el7.x86_64.rpm
http://archive.cloudera.com/cm7/7.0.3/redhat7/yum/RPMS/x86_64/enterprise-debuginfo-7.0.3-1635136.el7.x86_64.rpm
http://archive.cloudera.com/cm7/7.0.3/redhat7/yum/RPMS/x86_64/openjdk8-8.0 232_9-cloudera.x86_64.rpm
http://archive.cloudera.com/cm7/7.0.3/allkeys.asc
批量下载命令为:
代码语言:javascript复制wget -nd -r -l1 --no-parenthttps://archive.cloudera.com/cm7/7.0.3/redhat7/yum/RPMS/x86_64/
wget https://archive.cloudera.com/cm7/7.0.3/redhat7/yum/RPM-GPG-KEY-cloudera
wgethttps://archive.cloudera.com/cm7/7.0.3/allkeys.asc
2.下载 ClouderaRuntime7.0.3的安装包,地址为:
代码语言:javascript复制http://archive.cloudera.com/cdh7/7.0.3.0/parcels/CDH-7.0.3-1.cdh7.0.3.p0.1635019-el7.parcel
http://archive.cloudera.com/cdh7/7.0.3.0/parcels/CDH-7.0.3-1.cdh7.0.3.p0.1635019-el7.parcel.sha256
http://archive.cloudera.com/cdh7/7.0.3.0/parcels/manifest.json
批量下载命令为:
代码语言:javascript复制wget -nd -r -l1 --no-parent http://archive.cloudera.com/cdh7/7.0.3.0/parcels/
3.将Cloudera Manager安装需要的5个rpm包以及一个asc文件下载到本地,放在同一目录,执行createrepo命令生成rpm元数据。
代码语言:javascript复制[root@grocery-1 cm7]# ls
allkeys.asc cloudera-manager-server-db-2-7.0.3-1635136.el7.x86_64.rpm robots.txt
cloudera-manager-agent-7.0.3-1635136.el7.x86_64.rpm enterprise-debuginfo-7.0.3-1635136.el7.x86_64.rpm RPM-GPG-KEY-cloudera
cloudera-manager-daemons-7.0.3-1635136.el7.x86_64.rpm index.html
cloudera-manager-server-7.0.3-1635136.el7.x86_64.rpm openjdk8-8.0 232_9-cloudera.x86_64.rpm
[root@grocery-1 cm7]# rm -rf index.html robots.txt
[root@grocery-1 cm7]# createrepo .
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 1 pkgs
Spawning worker 2 with 1 pkgs
Spawning worker 3 with 1 pkgs
Spawning worker 4 with 1 pkgs
Spawning worker 5 with 1 pkgs
Spawning worker 6 with 0 pkgs
Spawning worker 7 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@grocery-1 cm7]#
4. 配置Web服务器
将上述cdh7/cm7目录移动到/var/www/html目录下, 使得用户可以通过HTTP访问这些rpm包。
代码语言:javascript复制[root@ip-172-31-6-83~]# mv cdh7/ cm7//var/www/html/
验证浏览器能否正常访问
5. 制作Cloudera Manager的repo源
代码语言:javascript复制vim /etc/yum.repos.d/cm.repo
[cmrepo]
name = cm_repo
baseurl = http://grocery-1.vpc.cloudera.com/cm7
enable = true
gpgcheck = false
yum源检查,如果检查报错,则检查配置yum的配置文件和网络设置。
代码语言:javascript复制[root@grocery-1 html]# yum repolist
Loaded plugins: amazon-id, search-disabled-repos
cmrepo |2.9 kB 00:00:00
cmrepo/primary_db | 8.5 kB 00:00:00
repo id reponame status
cmrepo cm_repo 6
epel/x86_64 ExtraPackages for Enterprise Linux 7 - x86_64 13,469
pgdg10/7Server/x86_64 PostgreSQL 10 forRHEL/CentOS 7Server - x86_64 1,144
pgdg11/7Server/x86_64 PostgreSQL 11 forRHEL/CentOS 7Server - x86_64 972
pgdg12/7Server/x86_64 PostgreSQL 12 forRHEL/CentOS 7Server - x86_64 313
pgdg94/7Server/x86_64 PostgreSQL 9.4 forRHEL/CentOS 7Server - x86_64 1,073
pgdg95/7Server/x86_64 PostgreSQL 9.5 forRHEL/CentOS 7Server - x86_64 1,123
pgdg96/7Server/x86_64 PostgreSQL 9.6 forRHEL/CentOS 7Server - x86_64 1,164
rhel-7-server-rhui-rh-common-rpms/7Server/x86_64Red Hat Enterprise Linux 7 Server - RH Common from RHUI (RPMs) 239
rhel-7-server-rhui-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Serverfrom RHUI (RPMs) 26,548
rhui-client-config-server-7/x86_64 Custom Repositories - Red Hat UpdateInfrastructure 3 Client Configuration Serve 3
repolist: 46,054
[root@grocery-1 html]#
3.2. 安装Cloudera Manager Server
3.2.1. 通过yum安装Cloudera Manager Server
使用软件包将Cloudera Manager安装在Cloudera Manager Server主机上。
在Cloudera Manager服务器主机上,键入以下命令以安装Cloudera Manager软件包:
代码语言:javascript复制sudo yum -y install cloudera-manager-daemonscloudera-manager-agent cloudera-manager-server
3.2.2. 初始化数据库
初始化数据库的语法如下:
代码语言:javascript复制sudo/opt/cloudera/cm/schema/scm_prepare_database.sh [options] <databaseType><databaseName><databaseUser><password>
参数:
Parameter | Description |
---|---|
<databaseType> | One of the supported database types:MariaDB: mysqlMySQL: mysqlOracle: oraclePostgreSQL: postgresql |
<databaseName> | 要使用的Cloudera Manager Server数据库的名称。对于MySQL、MariaDB和PostgreSQL数据库,如果您指定了-u 和 -p具有具有创建数据库和授予特权特权的用户凭据的选项。Cloudera Manager配置设置中提供的默认数据库名称是scm,但您不需要使用它。 |
<databaseUser> | 要创建或使用的Cloudera Manager Server数据库的用户名。Cloudera Manager配置设置中提供的默认用户名是scm,但您不需要使用它。 |
<password> | <databaseUser>创建或使用的密码。如果您不希望密码在屏幕上可见或存储在命令历史记录中,请不要指定密码,并提示您输入密码,如下所示Enter SCM password: |
选项:
Option | Description |
---|---|
-?|--help | 显示帮助。 |
--config-path | Cloudera Manager服务器配置文件的路径。默认是 /etc/cloudera-scm-server. |
-f|--force | 如果指定,则在发生错误时脚本不会停止。 |
-h|--host | The IP address or hostname of the host where the database is installed. The default is to use localhost. |
-p|--password | The admin password for the database application. Use with the -u option. The default is no password. Do not put a space between -p and the password (for example, -phunter2). If you do not want the password visible on the screen or stored in the command history, use the -p option without specifying a password, and you are prompted to enter it as follows:Enter database password:如果您已经创建了数据库,请不要使用此选项。 |
-P|--port | 用于连接数据库的端口号。对于MariaDB,默认端口为3306,对于MySQL为3306,对于PostgreSQL为5432,对于Oracle为1521。此选项仅用于远程连接。 |
--scm-host | 安装Cloudera Manager Server的主机名。如果Cloudera Manager Server和数据库安装在同一主机上,请不要使用此选项,否则请不要使用-H 选项。 |
--scm-password-script | A script to execute whose stdout provides the password for user SCM (for the database). |
-u|--user | The admin username for the database application. Use with the -p option. Do not put a space between -u and the username (for example, -uroot). If this option is supplied, the script creates a user and database for the Cloudera Manager Server. If you have already created the database, do not use this option. |
这里执行命令如下:
代码语言:javascript复制[root@grocery-1 html]# sudo /opt/cloudera/cm/schema/scm_prepare_database.shpostgresql scm scm cloudera
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64
Verifying that we can write to/etc/cloudera-scm-server
Creating SCM configuration file in/etc/cloudera-scm-server
Executing: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/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.
log4j:ERROR Could not find value for keylog4j.appender.A
log4j:ERROR Could not instantiate appender named"A".
[2019-11-24 17:55:09,042] INFO 0[main] - com.cloudera.enterprise.dbutil.DbCommandExecutor.testDbConnection(DbCommandExecutor.java)- Successfully connected to database.
All done, your SCM database is configuredcorrectly!
[root@grocery-1 html]#
3.2.3. 启动Cloudera Manager Server
- 启动Cloudera Manager Server服务
systemctl startcloudera-scm-server
systemctl status cloudera-scm-server
- 等待几分钟,以启动Cloudera Manager Server。要观察启动过程,请在ClouderaManager Server主机上运行以下命令:
sudo tail -f/var/log/cloudera-scm-server/cloudera-scm-server.log
当您看到此日志条目时,Cloudera Manager管理控制台已准备就绪:
代码语言:javascript复制INFOWebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.
- 检查端口是否监听
[root@grocery-1 html]# netstat -lnpt | grep 7180
tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN 12852/java
- 通过http://grocery-1.vpc.cloudera.com:7180/访问CM
- 使用admin/admin用户登录系统。
04
—
Cloudera Runtime安装
4.1 Cloudera Runtime集群安装向导
1. admin/admin登录到CM
这时有两个选项,一个是上传企业订阅的license,一个是使用60天试用,试用到期后无法访问Cloudera Manager的管理控制台。
我们这里先选择60天试用。弹出试用协议,如下图所示:
选择Yes,进行下一步
2. 点击“继续”,输入Basic集群的名称,也可以使用默认的”Cluster 1”:
3. 输入主机ip或者名称,点击搜索找到主机后点击继续
4. 点击“继续”
5. 选择自定义存储库,输入cm的http地址
“CDH and other software”中选择“Parcel Repositories & Network Settings”,点击“ 更多选项”,点击“-”删除其它所有地址,输入http://grocery-1.vpc.cloudera.com/cdh7,点击“保存更改”
点击Save & Verify Configuration,验证通过,点击关闭
6. 点击“继续”,进入下一步安装jdk. 选择Install a Cloudera-provided versionof OpenJDK,点击继续
我们这里使用OpenJDK,因此跳过。
7. 点击“继续”,进入下一步配置ssh账号密码,确保所有机器的root密码都一致,然后输入root的密码即可。
8. 点击“继续”,进入下一步,安装Cloudera Manager相关到各个节点
等待agent安装完毕后,自动跳转到下一步开始安装parcel
9. 点击“继续”,进入下一步安装cdh到各个节点
10. 自动进入下一步主机检查和网络检查,确保所有检查项均通过。
需要手工点击进行网络性能和主机检查。
如果有错误或者黄色警告,查看“显示检查器结果”,并逐项解决,然后“重新运行”检查,直到所有的检查都通过,否则没办法点击继续下一步。
11. 点击完成进入服务安装向导。
4.2. 集群设置安装向导
1.选择需要安装的服务
自定义服务中可以看到所有组件,可以根据自己的需求来选择。
选择需要安装的服务,根据需要选择,这里随便选择Data Mart,也可以自定义服务
2. 点击“继续”,进入集群角色分配,一台机器作为管理节点,另外三台机器作为DataNode
注意:Cloudera ManagementService中的Activity Monitor现在已经基本上不用,可以不安装该服务。Telemetry Publisher是遥感服务,用于Workload XM通信,如果没有计划使用Workload XM,则不需要安装该服务。ZooKeeper至少安装3节点,需要为奇数节点数。
3. 点击“继续”,进入下一步,测试数据库连接
测试都成功后才能点击继续。
4. 测试成功,点击继续。设置Range相关参数。
首先输入CM的用户名和密码admin/admin
Ranger相关的密码,都需要包含至少一个字母与一个数字,为了安装方便都输入admin@123
5. 点击“继续”,进入参数设置,此处使用默认参数,根据实际情况进行目录修改
6. 点击“继续”,进入各个服务启动
7. 安装成功,点击继续
如果安装的是Data Engineering版本,则截图如下:
8. 点击继续,进入安装总结页面
9. 安装成功后进入home管理界面
系统会自动恢复成没有错误的状态
05
—
问题处理
5.1. HDFS预警处理
集群安装完成后,如果安装的数据节点比较少,hdfs会有纠删码的预警。Hdfs默认是开启纠删码设置的。
只需要把纠删码和纠删码验证测试关闭即可。
5.2. 心跳错误
5.2.1. 症状:
When trying toinstall CDH via Cloudera Manager, you may sometimes encounter"heartbeat" errors similar to the following:
- Installation failed. Failed to receive heartbeat from agent.
- Ensure that the host's hostname is configured properly.
- Ensure that port 7182 is accessible on the Cloudera Manager server(check firewall rules).
- Ensure that ports 9000 and 9001 are free on the host being added.
Check agent logsin /var/log/cloudera-scm-agent/ on the host being added (some of the logs canbe found in the installation details).
适用于Cloudera Manager(所有版本)
5.2.2. 原因:
这种类型的错误可能由多种因素引起,但它们都归结为能够通过网络正确地与Cloudera Manager服务器通信的客户端节点。
此错误的潜在根本原因:
- 您的客户端计算机没有正确配置其IP地址。
- 防火墙和/或iptables可能会阻止网络流量。
- DNS配置错误
- IP Address misconfiguration:
Use"ifconfig -a" to see a listing of your network interfaces, your mainnetwork interface is probably something like "eth0". Assurethat it has a real IP address, not the loopback address (127.0.0.1) assigned toit. Run the "hostname -f" command to find out what hostnameyour local machine is using for itself, then run "nslookup<hostname>" against that hostname (or "dig<hostname>" for more options) to see what IP address it is resolvingto. If DNS does not return an IP address for your host, then the configurationwill be strictly controlled by /etc/hosts. Look in that file to see whatIP address you are assigning to your host.
- 2. Firewalls or iptables: either disable them or assurethey are allowing the correct ports to pass through. Follow you companypolicies to decide which path if best for you.
$ sudo chkconfig iptables --list
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
$ sudo ufw disable
- 3. If "nslookup <hostname>" (where<hostname> is the name of your Cloudera Manager server) does not returnthe correct IP address, then you have a misconfigured DNS, contact your networkadmin.
When it's allsaid and done, all machines in your cluster need to be able to resolve eachother's hostnames and IP addresses as well as connect to each other on thespecific network ports mentioned in the error message. Assure that/etc/hosts or DNS are configured properly so that your hosts can resolve eachother and that each local machine is binding it's hadoop services to a realnetwork IP instead of the loopback address.
If all that iscorrect and you still cannot connect, check to make sure firewalls or otherservices are not blocking the traffic.
5.3. 无法正常安装agent
原因:由于我一开始起用了Https支持,所以安装agent时无法和master进行加密通信。其实agent是已经安装好了。最后把CM卸载重新安装,不启用https。
下面附卸载命令:
代码语言:javascript复制servicecloudera-scm-agent stop
service supervisordstop
systemctl stopcloudera-scm-server
yum removecloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
rm /opt/cloudera/*
数据库部分:
代码语言:javascript复制drop database scm
5.4. 安装DAS报错
安装Data Engineering时,对应DAS的知识库如果不是PostgreSQL9.6,会报下面的错误:
解决方案:自定义服务中不选择DAS,在PostgreSQL9.6服务器上建DAS知识库,然后再安装DAS服务。
5.5. 初始化ZooKeeper中的solr报错
在运行命令启动服务时,报正在初始化ZooKeeper中的solr错误,重新执行即可修改该错误。
5.6. 安装Parcel提示主机运行状况不良
Cloudera 安装Parcel提示主机运行状况不良
解决方法
删除agent目录下面的cm_guid文件,并重启失败节点的agent服务恢复。
代码语言:javascript复制[root@esgyn001 ~]# cd/var/lib/cloudera-scm-agent/
cm_guid response.avrouuid
[root@esgyn001cloudera-scm-agent]# rm -rf cm_guid
[root@esgyn001cloudera-scm-agent]# service cloudera-scm-agent restart
Stoppingcloudera-scm-agent: [ OK ]
Startingcloudera-scm-agent:
06
—
总结
- 从安装方式上来看,CDP DC7与CDH6变化不大,这也方便了CDH6的用户可以较为快速的迁移到CDP DC7,以及适应CDP DC7的安装与使用。
- 安装向导界面有一些变化,现在可以一目了然的看到一共多少步骤,以及每个步骤是干什么。
- 安装条件前置没有任何变化,包括防火墙,Selinux关闭,ntp同步等等。可以参考Fayson之前的文章《CDH安装前置准备》
- Cloudera Manager自带的JDK直接提供的是OpenJDK1.8,而不是Oracle JDK,同样CDP DC也不再支持JDK1.7。
- 进到主界面变化也不大,主要是Cloudera的logo变成了黑色,与Cloudera主页的整体风格一致。
- 在配置Cloudera Manager连接到数据库时的脚本有所变化。以前是/usr/share/cmf/schema/scm_prepare_database.sh,现在是/opt/cloudera/cm/schema/scm_prepare_database.sh
- Cloudera Manager服务的状态在Redhat7通过systemctl status cloudera-scm-server查看是显示正确,而以前是不正确的,可以参考Fayson之前的文章《ClouderaManager Server服务在RedHat7状态显示异常分析》
- 注意CM的安装除了下载rpm包以外,还要下载allkeys.asc文件,否则安装agent的时候会报以下错误:
- 对于离线安装CDH6.0,分发Parcel出现hash校验失败的问题,是因为在CM6中修复了一个bug,让它不再忽略由http服务器发送的“Content-Encoding”的header信息,但是我们在Redhat中安装的httpd服务,当它传输parcel文件时,默认会错误的设置“Content-Encoding”。于是CM server会错误的认为parcel文件已经被httpd压缩并尝试解压缩。所以会导致失败。解决办法是参考2.8章节的,设置httpd的conf文件,AddTypeapplication/x-gzip .gz .tgz .parcel,然后重启httpd服务和CM服务。这个问题在beta的时候就已经存在了,具体请参考《Redhat7.4安装CDH6.0_beta1时分发Parcel异常分析》
- 在创建元数据库时,不需要再创建Navigator和Sentry相关的元数据库,但需要创建Ranger服务相关的元数据库。
- 第一次启动Ranger服务时,创建x_portal_user表时会报以下错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
SQLException : SQL state: 42000 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes ErrorCode: 1071
2019-11-24 01:12:06,672 [E] ranger_core_db_mysql.sql file import failed!
这是因为索引建立的时候,字符长度超过255,由于utf-8字符最长只能为255,超长之后会报错,所以需要对MySQL做如下配置:
代码语言:javascript复制SET GLOBAL innodb_file_per_table = ON,
innodb_file_format = Barracuda,
innodb_large_prefix = ON;
07
—
参考资料
1.0733-7.0.3-如何在Redhat7.6中安装CDP DC7.0.3 https://mp.weixin.qq.com/s/uYpMDip562bILMGEUNtAmg
2.https://docs.cloudera.com/cdpdc/7.0/installation/topics/cdpdc-installation.html