CDH私有部署

一、背景
响应项目需求,为了能够在学校部署我们现有的系统,数据平台提供的数据计算能力也需要部署到学校中。

数据平台的私有化部署首先涉及的是Hadoop集群的搭建方案,然后将我们布在各项目中的技术方案迁移到集群中。

这里涉及两方面的主要工作:1、hadoop集群搭建与维护工作  2、搭建完成之后的技术方案迁移稳定性

二、Hadoop集群的本地搭建方案
业界内提供有多种开源搭建Hadoop集群的方式,目前比较成熟的搭建方案:原生Apache包安装、HDP+Ambari、Cloudrea Manager+CDH三种方式。

其中CDH是Apache Hadoop和相关项目的最完整,经过测试的流行发行版。 CDH提供了Hadoop的核心元素 - 可扩展的存储和分布式计算 - 以及基于Web的用户界面和重要的企业功能。

Cloudera Manager可以轻松管理任何生产规模的Hadoop部署。通过直观的用户界面快速部署,配置和监控群集 - 完成滚动升级,备份和灾难恢复以及可定制警报。

CDH是业界内使用比较多的方案,同时也提供有线上环境的Web管理方案,这里我们会借助Cloudera Manager进行高效的管理部署,基于CDH进行Hadoop集群搭建的探索。

三、机器购买信息

本次集群搭建使用机器为阿里云购买的ECS云服务器。

机器名称 ip cpu 内存 系统盘容量 数据盘容量 服务器版本 在CDH中的角色
seg-prod-cdh001 172.16.1.42 8 16GB 40GB 200GB CentOS 7.6.1810 Cloudrea Server+mysql数据库
seg-prod-cdh002 172.16.1.43 8 16GB 40GB 200GB CentOS 7.6.1810 Cloudrea agent
seg-prod-cdh003 172.16.1.41 8 16GB 40GB 200GB CentOS 7.6.1810 Cloudrea agent
seg-prod-cdh004 172.16.1.45 8 16GB 40GB 200GB CentOS 7.6.1810 Cloudrea agent
四、机器准备工作

参考官网链接

https://www.cloudera.com/documentation/enterprise/6/6.2/topics/cm_ig_reqs_space.html

1、配置各机器的ip解析关系

seg-prod-cdh001的hosts配置信息:

cdh002-cdh004的配置规则同上,将所有节点的ip解析规则配置即可。

2、关闭防火墙

在centos 7机器中使用 firewalld

安装firewalld

yum -y install firewalld

开机启用/禁用服务

systemctl enable/distable firewalld

启动/关闭服务

systemctl stop/start firewalld

查看服务状态

systemctl status firewalld

这里我们关闭防火墙服务和开启开机禁用服务即可。

3、关闭SELINUX

SELINUX是Linux内核自带的安全服务,安装CDH需要在集群各个节点关闭SELINUX

查看SELINUX的状态

如果对应机器的SELINUX状态非disabled,可以修改状态:

vim /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled

4、配置时间同步NTP

为了一些服务的一致性,我们需要配置集群的时间同步。

这里我们使用的阿里云ECS机器内部配置了时间同步策略,为了保证集群服务的稳定性,这里的环境不太支持演示配置NTP,具体私有部署可以再进行操作。

5、配置集群SSH免密登录

———————————————————————————————————————————————————————————————————————————

如下所示在cdh001机器使用ssh登录到cdh002需要输入密码,这里配置集群之间的免密登录方便使用。

第一步:首先,在集群的cdh001节点机器中生成rsa方式加密的公钥和私钥,这里我们以root用户执行,具体操作如下

这里一直按回车即可,我们使用空的秘钥。

第二步:执行完成之后,我们切换到~/.ssh/下,看一下生成的文件:

其中有我们对应的公钥/私钥信息和认证的公钥信息文件。

第三步:对集群中所有的机器进行配置免密登录

在集群其他机器中的root用户的~/.ssh/路径下 将已经生成的 id_rsa 私钥文件拷贝进去。这里我们需要将每一台机器的 ~/.ssh/id_rsa 文件的linux权限设置为 rw------- 使用 chmod 600 id_rsa即可;否则会报权限错误的问题。

然后就是配置公钥信息了,关于公钥信息的配置有两种方式:

方式一:在所有机器的 authorized_keys 文件中写入  id_rsa.pub内容。

方式二:在cdh001中使用命令   ssh-copy-id root@主机名    来将公钥依次拷贝到集群各机器中。(这种方式需要输入各机器的root用户密码)

到这里我们集群的ssh免密登录就配置完成了,使用 ssh ip地址 -p端口号  就可以直接登录到集群各机器中了。

———————————————————————————————————————————————————————————————————————————

到这里我们所有linux机器的安装准备工作已经完成,后面进行安装步骤。

五、CDH版本选择

这里我们选用的CM版本为6.0.1,其中的选择标准主要根据CM的官方文档提供的系统版本和我们现有的组件版本进行对比来选型的。

关于CM版本组件选择依据参见:https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_requirements_supported_versions.html

1、我们现在使用的emr集群各组件版本:

2、CM6.0.1自带的组件版本

经过对比和考虑兼容性,最终选择的是6.0.1,鉴于本次是测试安装而且CM是可以进行升级的,其稳定性可以在后续进行测试,而且可以测试关于CM中管理组件升级的功能如何实现。

六、CM和CDH安装

CDH官网安装指南  https://www.cloudera.com/documentation/enterprise/6/6.0/topics/install_cm_cdh.html

CDH安装方式主要分为三种:

  1. Path A:由Cloudera Manager自动安装,使用嵌入式数据库,适合测试环境,不建议生产环境使用,随着集群的增长,有可能需要数据库的迁移。
  2. Path B:使用Cloudera Manager的Parcels or Packages安装(比如yum命令安装)。
  3. Path C:手动安装,使用tar压缩包。

方法3在CM5.9.0已经过期了,从CM6.0.0开始,将会被移除,所以,这里选择方法2进行在线安装。

1、安装JAVA

(1)版本选用

在CM/CDH 5.3及更高版本时,开始支持JDK8,这里考虑版本的兼容性,我们选用CDH识别的官网  1.8u102版本的JDK。

(2)下载JDK

我们可以在Java官网找到对应的JDK下载链接进行下载:

jdk1.8.102版本的官网下载地址https://download.oracle.com/otn/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz

这里下载需要我们使用Oracle账号进行登录后即可进行下载。

(3)上传到linux服务器

使用远程连接工具连接到远程Linux机器,安装rzsz命令: yum -y install lrzsz 即可;

使用rz 命令,在本机的包存放路径下拉取文件到远程linux机器即可完成上传。

(4)解压jdk并分发到集群

在cdh001节点解压jdk并发送到/usr/java/目录下(注意这里必须安装在/usr/java/目录下否则后续步骤无法进行)

将java包拷贝到cdh002-cdh004节点中,如下:

scp -P5044 -r jdk1.8.0_102 root@seg-prod-cdh002:$PWD   该命令可以直接在集群之间发送软件包,使用该命令时需要注意当前路径为 /usr/java/  则其他机器的jdk包也会在 /usr/java/ 路径下。

分别在cdh002、cdh003、cdh004机器分发即可。

(5)配置环境变量

在cdh001-cdh004各机器修改 /etc/profile 文件为所有用户添加环境变量:

vim /etc/profile    然后在文件底添加JAVA_HOME和PATH配置即可

配置完成后执行    source /etc/profile     然后进行验证:

如果能够展示java 版本信息则说明java环境配置成功。以上步骤在各节点均进行操作,验证成功即可。

2、配置yum的repo(所有节点)

使用yum时,如果可以联网,需要将cloudrea-manager.repo仓库信息放到/etc/yum.repos.d中;如果服务器无法联网,可以创建本地仓库,将cloudrea-manager.repo中的地址指向本地,或者直接将rpm包下载下来,本地安装。

这里我们使用的是CDH官方提供的仓库地址进行各个组件的下载,需要下载cloudrea-manager.repo文件并引用到/etc/yum.repos.d中。

这里我们使用的repo_file_url为:https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/cloudera-manager.repo

使用root账号进行操作即可完成配置:

可以使用yum search来验证我们的yum repo是否配置成功,

验证命令:yum search cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

配置成功界面如图:

3、安装CM Server

这里我们需要下载CM的安装包进行安装,上面我们已经配置过了yum的仓库地址,直接从CM的远程仓库下载对应版本即可。

(1)在CM server节点也就是cdh001机器需要安装如下几个包

cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

安装命令:   yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

在底部显示completed并且没有安装信息即表示安装成功;如果安装失败根据Error信息具体情况分析即可。

这里会去CDH仓库下载组件包,下载速度很慢,建议在配置repo时使用本地仓库,使用本地仓库提供的软件包。

(2)在CM agent节点也就是cdh002-cdh004机器安装如下几个包

cloudera-manager-daemons cloudera-manager-agent

安装命令:   yum install cloudera-manager-daemons cloudera-manager-agent

(3)配置Agent(所有Agent节点)

这里需要配置Agent寻找Server的Host和port,修改/etc/cloudera-scm-agent/config.ini即可

配置信息如图

(4)设置开机自启动

我们需要将 cloudrea-scm-server和cloudrea-scm-agent服务设置为开机启动服务,方便管理。在集群重启的时候,可以不用担心服务的问题。

主节点:

systemctl start cloudera-scm-agent

systemctl start cloudera-scm-server

systemctl enable cloudera-scm-server

systemctl enable cloudera-scm-agent

其他节点:

systemctl start cloudera-scm-agent

systemctl enable cloudera-scm-agent

(5)关于开启TLS

CDH官网的文档中给出了是否开启Auto-TLS的选项,这里我们不选择开启Auto-TLS;网上相关资料不建议配置Auto-TLS的原因:配置后的后续web安装时会出现agent通信检测超时。

4、安装数据库

使用CDH时需要在集群的一个节点安装数据库作为数据存储(hive、hue、CM账号等),支持的数据库有postgre、mysql、mariadb、oracle这四种数据库。这里我们使用Mariadb作为CM集群的数据存储,安装在CM Server节点 cdh001机器中。

(1)安装MariaDB server

yum install mariadb-server

(2)配置mariaDB server

这里需要修改/etc/my.cnf文件,建议保留一个备份。CM官方文档给出的默认配置如下:

[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
(3)启动mariaDB并配置开启自启动

为mariaDB配置开机启动: systemctl enable mariadb

启动mariaDB server: systemctl start mariadb

配置root账号密码:/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!  If you’ve completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

(4)mariaDB安装Mysql JDBC Driver

安装Mysql JDBC 因为mariaDB的jdbc还不支持。需要在CM的Server节点和安装MariaDB的节点同时安装Mysql的JDBC驱动,这里集群中的Server和MariaDB是安装在同一台机器中的,如果不是需要注意同时安装JDBC驱动。

Note:这里CDH只能够识别5.1版本的JDBC driver。

步骤一:下载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

步骤二:将文件拷贝到/usr/share/java目录下

创建 /usr/share/java目录:mkdir /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

(5)创建数据库

CM和CDH中以下角色需要MariaDB存储数据:

Cloudera Manager Server
Cloudera Management Service roles:
Activity Monitor (if using the MapReduce service in a CDH 5 cluster)
Reports Manager
Hue
Each Hive metastore
Sentry Server
Cloudera Navigator Audit Server
Cloudera Navigator Metadata Server
Oozie
需要在MariaDB中配置的数据库信息如下:

Service Database User
Cloudera Manager Server scm scm
Activity Monitor amon amon
Reports Manager rman rman
Hue hue hue
Hive Metastore Server metastore hive
Sentry Server sentry sentry
Cloudera Navigator Audit Server nav nav
Cloudera Navigator Metadata Server navms navms
Oozie oozie oozie
下面进行配置:

a、使用root用户登录数据库:

mysql -u root -p配置的root密码

b、创建对应的数据库并为用户授权:

CREATE DATABASE DEFAULT CHARACTER SET DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON .* TO ‘’@’%’ IDENTIFIED BY ‘’;
database取自上述配置信息  如scm;character set 使用 utf8即可。

user也是取自上述配置信息对应即可,如scm数据库对应scm用户;password自己配置并记录即可。

c、进行验证:

SHOW DATABASES;
SHOW GRANTS FOR ‘’@’%’;

5、CM配置数据库信息

使用CM自带的脚本来为CM添加MariaDB的数据库信息;使用如下命令:

/opt/cloudera/cm/schema/scm_prepare_database.sh
databaseType: mariaDB对应为   mysql

databaseName:数据库名称  如:scm

databaseUser:数据库用户    如:scm

我们需要将在MariaDB中自添加的所有数据库都进行上述操作,让CM识别我们创建的数据库信息。

以scm数据库为例:

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

如上,依次添加至完成即可。

六、安装CDH和其他软件

1、启动CM Server

systemctl start cloudera-scm-server
2、验证CM Server是否成功启动

CM启动后需要等待几分钟才能启动成功,使用命令:

tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
等待出现如下信息时表明启动成功:

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

3、打开CM的Web UI

http://:7180

这里的 server_host  可以是 CM Server机器的FQDN(全限定域名)或者IP地址。

CM登录的默认用户名和密码都是 admin ,默认用户名无法修改;在安装向导运行完成后可以修改admin密码,如果不想使用admin用户作为管理员使用,可以新建一个用户对其授权,然后删除admin用户即可。

4、CM页面安装向导

(1)Welcome

(2)Accept License

(3)Select Edition

这里我们使用Cloudera Express版本:

(4)Welcome(Add Cluster-Installation)

(5)Specify Hosts 指定主机

这里我们一共有4台主机,已经内置到管理主机中了;如果有新机器需要在新主机的选项中进行添加。

(6)Select Repository 选择一个CDH的下载仓库

如CDH建议,我们这里使用pacel包进行安装CDH各组件,方便组件的升级。对应的CDH版本号为6.0.1

这里可以选择附加包来添加组件,CDH6的版本中自带了Spark、Kafka、Kudu等服务,不需要再进行添加。

然后会进入下载页面和检查主机正确性页面,在检查主机正确性页面检查是否需要修复某些问题。

本次主机正确性检查出现的一个问题:

(7)群集设置

选择安装所有服务,我们会用到Hive和Spark等等。

角色分配:自行修改

数据库配置:参考上述MariaDB安装中的配置信息

进行初始化页面:

初始化完成之后进入管理页面:

七、各组件配置信息

你可能感兴趣的:(CDH私有部署)