1

CDH6安装

 3 years ago
source link: https://blog.csdn.net/mingyunxiaohai/article/details/84727611
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

CDH6安装

chsmy2018 2018-12-02 20:45:36 5555
分类专栏: 大数据

官方文档 https://www.cloudera.com/documentation/enterprise/6/6.0/topics/installation.html

JDK兼容性在不同的Cloudera Manager和CDH版本中也有所不同。某些版本的CDH 5与JDK 7和JDK 8兼容。在这种情况下,请确保所有服务都部署在同一主要版本上。例如,在JDK 8上运行Sqoop时,不应在JDK 7上运行Hadoop。此外,由于Cloudera不支持混合环境,因此群集中的所有节点都必须运行相同的主要JDK版本。Cloudera仅支持Oracle提供的JDK 。对于Cloudera Manager和CDH 6.0.0及更高版本,仅支持Oracle JDK 8。

Cloudera Enterprise 6需要Python 2.7或更高版本(但与Python 3.0或更高版本不兼容)

设置hostname

每个主机的规范名称 / etc / hosts文件 必须是FQDN(例如myhost-1.example.com),而不是不合格的主机名(例如 为myhost-1)。

[root@bigdata .ssh]# vim /etc/hosts
//设置 192.168.75.128 master.test.com 所有主机都要写上
[root@bigdata .ssh]# vim /etc/sysconfig/network
//设置HOSTNAME= master.test.com
[root@bigdata .ssh]# hostnamectl set-hostname master.test.com
[root@bigdata .ssh]# hostname master.test.com
[root@bigdata .ssh]# hostname

设置ssh无密码登陆
在主节点上执行ssh-keygen -t rsa一路回车,生成无密码的密钥对。将公钥添加到认证文件中:

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

设置authorized_keys的访问权限

chmod 600 ~/.ssh/authorized_keys。

scp文件到所有datenode节点:

scp ~/.ssh/authorized_keys root@slave:~/.ssh/

禁用防火墙和selinux(所有会话)

这两个东西都可以在安装并部署CDH后修改回来。

firewall-cmd --state //查看防火墙状态
systemctl stop firewalld //关闭
systemctl disable firewalld  //禁止开机启动

getenforce  检查SELinux状态:
setenforce 0 (临时修改)
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)

启用NTP

CDH要求您在群集中的每台计算机上配置网络时间协议(NTP)服务。要启动NTP并将其配置为在重新引导时自动运行,请在群集中的每个节点上执行以下步骤。

yum install ntp

编辑/etc/ntp.conf文件以添加NTP服务器,如以下示例所示

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org

启动服务:systemctl start ntpd
配置开机启动:systemctl enable ntpd
同步节点:ntpdate -u 0.pool.ntp.org
同步系统时钟(以防止同步问题):hwclock --systohc

在Hue主机上安装Python 2.7
centos7默认python2.7
查看版本 python --version

安装Cloudera Manager和CDH

配置存储库(所有节点)

下载cloudera-manager.repo,可以在Cloudera Manager 6版本和下载信息中查看cloudera-manager的版本sudo wget <repo_file_url> -P /etc/yum.repos.d/

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

导入存储库签名GPG密钥:

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

安装jdk
要安装Oracle JDK,可以使用ClouderaManager安装Cloudera提供的版本,也可以直接安装Oracle的其他版本。
要求:

  • JDK必须是64位。不要使用32位JDK。
  • 已安装的JDK必须是受支持的版本
  • 在相同版本的JDK的Oracle必须安装在每个群集主机上
yum install oracle-j2sdk1.8

安装Cloudera Manager Server

在Cloudera Manager Server主机上,键入以下命令以安装Cloudera Manager软件包

sudo yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

启用Auto-TLS(推荐)注意:官网这里写的推荐,不过最好先不打开,否则后面安装会遇到不好解决的问题,我下面有遇到的问题就是因为这个造成的,最后卸载了cloudera-manager,又从新安装的,不开启Auto-TLS成功的

Auto-TLS极大地简化了在群集上启用和管理TLS加密的过程。它可以自动创建内部证书颁发机构(CA)并在所有群集主机上部署证书。它还可以自动分发现有证书,例如由公共CA签名的证书。
如果要开启Auto-TLS,Auto-TLS支持两种选择:

  1. 使用Cloudera Manager生成内部证书颁发机构和相应的证书
  2. 使用现有的证书颁发机构和相应的证书

这里使用第一种更多详见Auto-TLS为Cloudera Manager和CDH配置TLS加密

仅新安装支持Auto-TLS。在将任何主机添加到Cloudera Manager之前,必须启用Auto-TLS。要使用嵌入式Cloudera Manager CA启用自动TLS,请运行以下命令:

JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera /opt/cloudera/cm-agent/bin/certmanager setup --configure-services

注意:该certmanager实用程序包含在Cloudera Manager Agent中,但不包含在Cloudera Manager Server中。如果你看到有关的错误certmanager 命令未找到,请确保已安装cloudera-manager-agent

安装和配置数据库

Cloudera Manager使用各种数据库和数据存储来存储有关Cloudera Manager配置的信息,以及诸如系统运行状况或任务进度之类的信息。

虽然您可以在单个环境中部署不同类型的数据库,但这样做会产生意外的复杂情况。Cloudera建议为所有Cloudera数据库选择一个受支持的数据库提供程序。

Cloudera建议在不同于服务的主机上安装数据库。将数据库与服务分离可以帮助隔离一个或另一个中的故障或资源争用的潜在影响。它还可以简化具有专用数据库管理员的组织的管理。

我们可以将自己的PostgreSQL,MariaDB,MySQL或Oracle数据库用于Cloudera Manager Server和其他使用数据库的服务。有关规划,管理和备份Cloudera Manager数据存储的信息

安装mysql 执行下面步骤

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

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

sudo yum update

sudo yum install mysql-server

sudo systemctl start mysqld

官方推荐mysql的配置 vim /etc/my.cnf

[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

因为我们使用的MariaDB,所以安装MariaDB 执行下面步骤

sudo yum install mariadb-server

官方推荐配置MariaDB vim /etc/my.cnf

[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
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

key_buffer = 16M
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 MariaDB, if you enable the binary log and do not set
#a server_id, MariaDB 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/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

设置数据库的密码 运行:/usr/bin/mysql_secure_installation

[...]
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!

为MariaDB安装MySQL JDBC驱动程序

重要提示:请勿使用yum安装 命令安装MySQL驱动程序包,因为它安装了OpenJDK,然后使用Linux 备择方案 命令将系统JDK设置为OpenJDK。

注意: Cloudera建议仅使用JDBC驱动程序的5.1版。

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

为Cloudera软件创建数据库

为需要数据库的组件创建数据库和服务帐户Cloudera Manager Server,Hue,Oozie,Hive Metastore Server 等等都需要用到数据库

登录数据库 mysql -u root -p
需要建的数据库有 scm、amon、rman、hue、metastore、sentry、nav、navms、oozie

CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm@123';
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY ' amon@123';
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman@123';
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue@123';
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON metastore.* TO 'metastore'@'%' IDENTIFIED BY 'metastore@123';
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry@123';
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'nav@123';
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'navms@123';
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie@123';

设置Cloudera Manager数据库

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

[root@master schema]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
Enter SCM password: 
JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
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.
[                          main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!

如果不在一台主机上运行 /opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h master.test.com scm scm

安装CDH和其他软件

启动Cloudera Manager Server:

systemctl start cloudera-scm-server

第一次启动的时候它会去scm库中创建它需要的一些表
查看启动日志

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

出错(建表出错)

2018-09-11 19:06:30,890 FATAL main:org.hsqldb.cmdline.SqlFile: SQL Error at 'UTF-8' line 57:
"alter table ROLE_CONFIG_GROUPS
    drop column REVISION_ID"
Key column 'REVISION_ID' doesn't exist in table
2018-09-11 19:06:30,890 FATAL main:org.hsqldb.cmdline.SqlFile: Rolling back SQL transaction.
2018-09-11 19:06:30,892 ERROR main:com.cloudera.enterprise.dbutil.SqlFileRunner: Exception while executing ddl scripts.
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Key column 'REVISION_ID' doesn't exist in table
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
# 添加83 84两行内容
vim  /opt/cloudera/cm/schema/mysql/05003_cmf_schema.mysql.ddl

 80 alter table CONFIGS
 81     drop column REVISION_ID;
 82
 83 ALTER TABLE ROLE_CONFIG_GROUPS DROP INDEX IDX_UNIQUE_ROLE_CONFIG_GROUP;
 84 ALTER TABLE ROLE_CONFIG_GROUPS DROP INDEX IDX_ROLE_CONFIG_GROUP_CONFIG_REVISION;
 85
 86 alter table ROLE_CONFIG_GROUPS
 87     drop column REVISION_ID;

注意: 上面的问题根源是数据库版本的问题,可以查看其支持的版本Cloudera Manager支持的数据库的版本由于我用的是mariadb,10.2.19版本,虽然上面的问题解决了但是可能还有别的问题发生,所以最好的解决方法就是讲数据库改成其支持的版本 5.5或者10.0。

如果发生错误,去scm数据库中删除所有表从新执行启动命令 systemctl start cloudera-scm-server

最后日志出现下面的一句说明启动成功

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

登录web界面 http://<server_host>:7180
比如 :http://master:7180
(1)打开连接之后会进入登录页面 用户名 admin 密码 admin 就可以登录了。登录之后进入欢迎页面
(2)“欢迎”页面提供了Cloudera Manager的简要概述,以及指向要安装的版本的发行说明的链接。单击“ 继续”继续安装。
(3)然后进入“接受许可” 页面提供最终用户许可条款和条件 同意后点击继续
(4)在Select Edition页面上,您可以选择要安装的Cloudera Manager版本 选择免费版 点击继续
在这里插入图片描述
(5)添加群集 - 安装的欢迎页面 点击继续
在这里插入图片描述
(6)指定主机 添加运行CDH的主机名字 比如输入master.text.com,点击搜索就能找到对应的主机,可以通过用逗号,分号,制表符或空格分隔多个地址,验证显示的主机数是否与要安装服务的主机数相匹配 如果匹配点击继续
(7)选择要安装的CDH版本 注意: Cloudera Manager仅显示它可以支持的CDH版本。如果可用的CDH版本对于Cloudera Manager版本而言太新,则不会显示。
如果出现:对于此 Cloudera Manager 版本 (6.0.1) 太新的 CDH 版本不会显示。请单击“ 更多选项”按钮以添加版本的存储库URL。CDH 6下载信息,添加存储库后,单击“ 保存更改”并等待几秒钟以显示版本,如果要安装CDH 6,请不要选择KAFKA,KUDU或SPARK包裹,因为它们包含在CDH 6中。
在这里插入图片描述
(8)接受JDK许可 ,要允许Cloudera Manager在群集主机上自动安装Oracle JDK,请阅读JDK许可证,如果接受这些条款,请选中标记为安装Oracle Java SE Development Kit(JDK)的复选框。如果您在步骤2:安装Java Development Kit中安装了自己的Oracle JDK版本,请不要选中此框。
(9)输入登录凭据 选择root作为根帐户

  • 如果选择密码验证,请输入并确认密码
  • 如果选择公钥验证,请提供所需密钥文件的密码和路径
    在这里插入图片描述
    (10)安装代理 “ 安装代理”页面显示安装进度。可以单击任何主机的“详细信息”链接以查看安装日志。如果安装停止,可以单击“ 中止安装”按钮取消安装,然后查看安装日志以解决问题。
    如果在任何主机上安装失败,可以单击“ 重试失败的主机”以重试所有失败的主机,也可以单击特定主机上的“ 重试”链接。在所有主机上安装Cloudera Manager Agent后,单击“ 继续”。
    在这里插入图片描述
    这里遇到了些错误:
    第一个错:
    Exhausted available authentication methods
    Installation failed. Failed to authenticate.
    解决:
执行命令
passwd root
会出现设置新密码 然后设置
解锁root用户
passwd -u root

然后在编辑器中打开修改/etc/ssh/sshd_config

vim /etc/ssh/sshd_config
查找并更新以下行:
PermitRootLogin yes
重启ssh服务。
service restart sshd或 service sshd restart

第二个错:

 安装失败。 无法接收 Agent 发出的检测信号。
请确保主机的名称已正确配置。
请确保端口 7182 可在 Cloudera Manager Server 上访问(检查防火墙规则)。
请确保正在添加的主机上的端口 9000 和 9001 空闲。
检查正在添加的主机上 /var/log/cloudera-scm-agent/ 中的代理日志(某些日志可在安装详细信息中找到)。
如果在 Cloudera Manager 中启用为代理使用 TLS 加密(管理 -> 设置 -> 安全),请确保 /etc/cloudera-scm-agent/config.ini 在正在添加的主机上有 use_tls=1。重启相应的代理,并单击此处的重试链接。

找了很多办法都不成功,最后定位到是因为一开始开始了Auto-TLS造成的。最后的解决办法是从新安装Cloudera Manager先不开启Auto-TLS 步骤如下:

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/*

数据库部分:删掉scm数据库在从新创建   drop database scm. 

(11)安装选中的CDH的包,时间可能有点长,安装完成后,单击“ 继续”。
在这里插入图片描述
(12)检查主机

使用向导设置群集

选择服务 分配角色 根据自己的实际情况分配机器的角色
建议的群集主机和角色分配

在这里插入图片描述

设置数据库
在这个界面设置我们前面设置的数据库的用户和密码,并测试通过,比如hive的数据库是 metastore 密码是 metastore@123 ,测试成功后点击继续
在这里插入图片描述
查看更改
这个界面我们可以设置一些组件的工作目录,日志目录等,可以使用默认的,也可以根据自己的喜好放到目录下面
注意:关于/solr的目录不要修改,不然后面会报错 警告:不要将DataNode数据目录放在NAS设备上。调整NAS大小时,可以删除块副本,从而导致丢失块。

之后就可以等待集群中组件一次启动之后到达首页。

这个时候进入到HDFS页面查看其web界面,结果打不开,执行下面的命令
netstat -apn | grep 9870
可以看到域名被解析成内网ip

所以我这里的问题是,因为服务器有两块网卡,一个内网,一个外网,通过ifconfig查看可以看到内网的名字eth0,外网的名字是eth1。我们配置hostname的时候配置的是eth0

解决办法:
点击配置搜索“通配符”可以看到 NameNode Default Group,DataNode Default Group然后把它勾上
点击保存更改,然后重启HDFS,在去访问就OK啦
其他组件可以使用同样的操作。

OK到这里终于可以愉快的使用CDH6了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK