1

USDP 实测搭建,可替代CDH的免费大数据套件平台

 3 years ago
source link: https://zhuanlan.zhihu.com/p/389336579
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.
neoserver,ios ssh client

USDP 实测搭建,可替代CDH的免费大数据套件平台

在过去几年,Cloudera 和 Hortonworks 两家大数据公司分别为我们提供了 CDP(Cloudera Data Platform)和 HDP(Hortonworks Data Platform)两款企业级 Hadoop 解决方案。其都提供了部署、管理、监控以及运维大数据服务组件和节点的能力,大大提升了大数据运维工程师的效率。但是随着 Cloudera 和 Hortonworks 两家公司的合并,以及一些战略上的变化。Cloudera 从早些时候的 CDH 6.3.3 以后再无免费社区版本,到2021年1月31日开始,所有 Cloudera 软件都需要有效的订阅进行访问!这无疑给我们大数据工程师带来一些影响。

在此背景下,UCloud 基于多年大数据平台开发经验,在不久前正式发布了针对私有化部署场景下的一站式智能大数据平台 USDP 免费版《继CDH收费之后,这家公司率先推出了免费版大数据套件服务!》。USDP 系列版本支持 HDFS、Kudu、ES 全生态,且后续会持续扩充其他服务、组件的支持,助力企业提升大数据开发、运维效率,快速构建大数据业务的分析处理能力。

本文将给大家介绍一下 USDP 免费版的安装部署过程,希望能够给大家一些帮助。

我们从 USDP 提供的资料可以看出,USDP 平台包括 Manager Node 和 Worker Node。Manager Node 中比较重要的服务是 Manager Server,其为 USDP 管理端服务,需配备一个 MySQL 实例存储集群相关的元数据信息。Worker Node 中比较重要的组件是 Agent,其为 USDP 从节点控制端服务,用于管理、操作所在节点以及所在节点上的大数据服务。其中 BigData Service 为各类大数据服务(例如:HDFS、YARN等)。一般生产环境的部署架构如下所示:

v2-ad946b70313f48b52a1784af540cd7a7_720w.jpg

从上图可以看出,USDP 平台需要我们提供最少三个节点的集群。而且系统必须为 CentOS,需要是 7.2 到 7.6 之间的版本 ,因为 USDP 需要从操作系统中获取一些信息来正常运行 USDP 平台。这里我用了三台节点,每台节点都是8c32g,500G数据盘,各个节点部署的服务如下:

v2-4ae9b968d401f534ee55b8f6b2c4aa11_720w.jpg

下载和设置 USDP

确定了集群的规模之后,我们就可以下载 USDP 免费版的安装包了。链接下载:

https://s3-cn-bj.ufileos.com/jungle111111/usdp-1.0.0.0/install/usdp-free-1.0.0.tar.gz

这个文件比较大,大约有43G左右,所以下载大概需要数小时不等。下载完之后,我们将其解压,解压后的文件如下:

[root@node1 usdp-1.0.0]# ll
总用量 44686388
-rw-r--r-- 1 root root 20491532904 2月   1 18:57 epel.tgz
-rw-r--r-- 1 root root     3077630 2月   1 18:56 httpd-rpms.tar.gz
-rw-r--r-- 1 root root 16897158731 2月   1 18:56 mirror.tgz
-rw-r--r-- 1 root root  8367086414 5月  15 13:19 usdp-01-master-privatization-free-1.0.0.0.tar.gz
  • usdp-01-master-privatization-free-1.0.0.0.tar.gz:是 USDP 主程序与大数据服务资源包。
  • httpd-rpms.tar.gz 、mirror.tgz:是 USDP 离线 yum 基础源资源包。
  • epel.tgz:是 USDP 离线 yum 扩展源资源包。

为了后面部署的方便,我们分别创建 /opt/usdp-srv/ 和 /data 文件夹,将 epel.tgz、httpd-rpms.tar.gz 以及 mirror.tgz 移到 /data 文件夹,usdp-01-master-privatization-free-1.0.0.0.tar.gz 移到 /opt/usdp-srv/ 文件夹。并且把 usdp-01-master-privatization-free-1.0.0.0.tar.gz 文件分发到所有 USDP 节点上。

我们到 /opt/usdp-srv/ 目录,解压 usdp-01-master-privatization-free-1.0.0.0.tar.gz 文件(其他节点也都去解压),可以得到如下的目录结构:

[root@node1 usdp-srv]# tar -zxf usdp-01-master-privatization-free-1.0.0.0.tar.gz
[root@node1 usdp-srv]# cd usdp/
[root@node1 usdp]# ls -l
总用量 4
drwxr-xr-x 2 root root   33 5月  14 12:06 agent
drwxr-xr-x 2 root root  136 5月  14 12:07 bin
drwxr-xr-x 2 root root   65 5月  14 12:06 config
drwxr-xr-x 2 root root  137 12月 16 2020 jmx_exporter
drwxr-xr-x 2 root root   35 5月  14 12:06 recommend
drwxr-xr-x 6 root root   59 5月  14 12:06 repair
drwxr-xr-x 3 root root   21 4月  20 16:21 repository
drwxr-xr-x 2 root root 4096 12月 16 2020 scripts
drwxr-xr-x 2 root root   34 5月  14 12:07 server
drwxr-xr-x 2 root root   29 5月  14 15:03 sql
drwxr-xr-x 3 root root   21 5月  14 12:06 templated
drwxr-xr-x 2 root root    6 12月 16 2020 verify
drwxr-xr-x 2 root root   29 5月  14 12:06 versions

上面的各个目录解释如下:

  • agent:USDP 分布式客户端程序
  • bin:USDP 程序启停脚本
  • config:USDP 程序配置文件
  • jmx_exporter:进程监控指标采集程序
  • recommend:大数据服务部署预置模板
  • repair:部署前环境初始化脚本与资源包
  • repository:大数据服务资源包
  • scripts:USDP 相关程序脚本
  • server:USDP 分布式管理端程序
  • sql:USDP 元数据信息初始化 SQL
  • templated:大数据服务配置模板
  • verify:证书存放路径
  • versions:USDP 大数据资源包版本信息

USDP 平台部署

USDP 免费版准备好之后,我们就可以部署了。这里以首次全量部署为例进行说明。首次全量部署需要用到 /opt/usdp-srv/usdp/repair 模块,其目录结构如下所示:

[root@node1 usdp]# cd repair/
[root@node1 repair]# ll
总用量 8
drwxr-x--- 2 root root 4096 5月  14 12:06 bin
drwxr-x--- 2 root root  105 5月  14 12:06 config
drwxr-x--- 4 root root 4096 4月  20 16:38 packages
drwxr-x--- 2 root root   23 5月  14 12:06 sbin

上面目录的作用如下:

  • bin:单个修复模块脚本所在目录,无需手动管理
  • config:一键修复脚本所需配置文件目录,需要用户手动修改;
  • packages:修复过程中安装 USDP 所需依赖压缩包存放目录;
  • sbin:一键修复主脚本所在目录,无需手动管理;

在 config 目录下面有三个配置文件:

  • repair.properties:主要配置私有化 yum 源安装节点信息、namp 安装节点信息、mysql 数据库安装节点信息、修复机器总数,以及修复模块日志存放位置。用户根据需要自行修改相关配置项;
  • repair-host-info.properties:节点全量修复,需要配置此文件,具体配置所有节点内网 Ip、密码、端口号以及主机名;
  • repair-host-info-add.properties:集群新增节点时,需要配置此文件,具体配置新增节点内网 Ip、密码、端口号以及主机名;

由于我们是全量修复,所以需要用到 repair.properties 和 repair-host-info.properties 两个配置文件。根据我们上面节点的信息,修改如下:

repair.properties

# Set the YUM source host IP
yum.repo.host.ip=10.23.110.136
#The Host information for installing the NMAP service
namp.server.ip=10.23.110.136
namp.server.port=22

namp.server.password=abcd123456
# The Host information for installing the NTP service(Master)
ntp.master.ip=10.23.110.136
# Install MySQL machine node information
mysql.ip=10.23.110.136
mysql.host.ssh.port=22
mysql.host.ssh.password=abcd123456
# Set the MYSQL database login password
mysql.password=abc123456
# The total number of machines needed to be repaired.
repair.host.num=3
# The total number of added machines needed to be repaired.
repair.add.host.num=0
# Common Settings.
repair.log.dir=./logs

上面各个参数的详细含义如下:

repair-host-info.properties

# 1.Please provide the information of hosts needed to be repaired in the format specified below
# 2.usdp.ip.i(eg:i=1,2,3.....):
# 3.usdp.password.i:
# 4.usdp.ssh.port.i:
# 5.usdp.ssh.port.hostname.i:
usdp.ip.1=10.23.110.136
usdp.password.1=abcd123456
usdp.ssh.port.1=22
usdp.ssh.port.hostname.1=node1
usdp.ip.2=10.23.30.148
usdp.pa
ssword.2=abcd123456
usdp.ssh.port.2=22
usdp.ssh.port.hostname.2=node2
usdp.ip.3=10.23.148.109
usdp.password.3=abcd123456
usdp.ssh.port.3=22
usdp.ssh.port.hostname.3=node3

上面各个参数的详细含义如下:

注意:

  • 为了方便,我们三台节点的登录密码都设置为 abcd123456,也就是 ssh 的登录密码。另外,这个登录密码最好不要有特殊字符,要不然安装的过程会出现问题。
  • repair-host-info.properties 文件里面我们配置了三台 usdp 节点,如果我们有超过三个节点,需要在里面添加对应的信息,有几个节点添加几个。

执行初始化脚本

完成上述步骤后,执行如下命令即可开始一键初始化任务。

cd /opt/usdp-srv/usdp/repair/sbin
bash repair.sh initAll
source /etc/profile

当执行完 bash repair.sh initAll 之后,看到有下面的输出结果说明整个 usdp 平台的部署完成。

[root@node1 sbin]# bash repair.sh initAll
Bash Path: /opt/usdp-srv/usdp/repair/sbin
REPAIR_PATH: /opt/usdp-srv/usdp/repair/sbin
UDP_PATH: /opt/usdp-srv/usdp
REPAIR_BIN_PATH: /opt/usdp-srv/usdp/repair/bin
REPAIR_BIN_PATH: /opt/usdp-srv/usdp/repair/bin
REPAIR_SBIN_PATH: /opt/usdp-srv/usdp/repair/sbin
PACKAGES_PATH: /opt/usdp-srv/usdp/repair/packages
REPAIR_PATH: /opt/usdp-srv/usdp/repair
UDP_PATH: /opt/usdp-srv/usdp
REPAIR_BIN_PATH: /opt/usdp-srv/usdp/repair/bin
REPAIR_SBIN_PATH: /opt/usdp-srv/usdp/repair/sbin
PACKAGES_PATH: /opt/usdp-srv/usdp/repair/packages
.........
这里省了很多输出
.........
SUCCESS: All encryption-free login links have been repaired successfully
SUCCESS: All closing firewall links have been repaired successfully
SUCCESS: All closing swap links have been repaired successfully
SUCCESS: set hostname links have been repaired successfully
SUCCESS: Set  ntp  have been repaired successfully
SUCCESS: Set  libxslt devel  have been repaired successfully
SUCCESS: Set  psmisc  have been repaired successfully
SUCCESS: Set mysql-client links have been repaired successfully
SUCCESS: Set  mysql-python  have been repaired successfully
SUCCESS: All transparent_hugepage links have been repaired successfully
SUCCESS: Set JDK links have been repaired successfully
SUCCESS: Set xdg-utils links have been repaired successfully
SUCCESS: Set redhat-lsb links have been repaired successfully
SUCCESS: Set python-devel links have been repaired successfully
SUCCESS: Set cyrus-sasl links have been repaired successfully
SUCCESS: Set python36-devel links have been repaired successfully
SUCCESS: Set gcc-c++ links have been repaired successfully
SUCCESS: Set  Cython links have been repaired successfully
SUCCESS: Set  Six links have been repaired successfully
SUCCESS: Set  websocket-client links have been repaired successfully
SUCCESS: Set  ecdsa links have been repaired successfully
SUCCESS: Set  pytest-runner links have been repaired successfully
SUCCESS: Set krb5-devel links have been repaired successfully
The USDP deployment environment of all nodes has been repaired successfully . Please proceed to the next step

说明:

  • 我们只需要在执行 repair 的节点上下载 usdp-free-1.0.0.tar.gz,然后把解压后的 usdp-01-master-privatization-free-1.0.0.0.tar.gz 文件分发到所有节点,并解压到 /opt/usdp-srv/ 目录即可。不需要配置。
  • 上面的配置只需要在执行 repair 的节点上设置即可,别的节点不需要额外的设置;因为执行 bash repair.sh initAll 的时候会把上面修改的两个配置文件分发到所有 node 上。
  • usdp 需要依赖 JDK、Python 以及 MySQL 等,这些都会在执行 bash repair.sh initAll 的时候自动安装好,而且所有的节点都会自动安装,我们不需要额外处理。

为 USDP 配置 MySQL 数据库

上面初始化工作完成之后,我们需要配置以下 USDP 服务节点的 MySQL 信息,只需要打开 /opt/usdp-srv/usdp/config/application-server.yml 文件,找到 datasource 配置片段,修改为如下内容即可:

  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    #    driver-class-name: org.gjt.mm.mysql.Driver
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    url: jdbc:p6spy:mysql://node1:3306/db_udp?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: abc123456

注意:这个 mysql 服务节点的地址和密码需要根据实际情况填写。因为我在 repair.properties 文件里面把 MySQL 安装在 10.23.110.136(也就是 node1) 节点,登录密码设置为 abc123456。

启动 USDP 服务端程序

节点修复完成后,进入 USDP 管理端所在节点后,并进入 USDP 安装根目录,通过 root 用户执行如下命令,以启动 USDP 管理端服务:

[root@node1 sbin]# cd /opt/usdp-srv/usdp/
[root@node1 usdp]# bin/start-udp-server.sh
BASE_PATH: /opt/usdp-srv/usdp/bin
JMX_PATH: /opt/usdp-srv/usdp/jmx_exporter
ln -s /opt/usdp-srv /data/usdp-srv
ln -s /opt/usdp-srv/srv/udp /srv/
ln -s /data/var/log/udp /var/log/
REPAIR_PATH: /opt/usdp-srv/usdp/repair
UDP_PATH: /opt/usdp-srv/usdp
REPAIR_BIN_PATH: /opt/usdp-srv/usdp/repair/bin
REPAIR_SBIN_PATH: /opt/usdp-srv/usdp/repair/sbin
PACKAGES_PATH: /opt/usdp-srv/usdp/repair/packages
nmap-6.40-19.el7.x86_64
nmap exists
UDP Server is running with: 10691
Done.
[root@node1 usdp]#

看到 UDP Server is running with: 10691 之后说明 USDP 管理节点启动成功了。

USDP 集群配置

USDP 管理节点启动成功之后,需要等待一会。接着我们可以通过浏览器访问如下地址即可打开 USDP Web 页面:http://10.23.110.136,如下:

第一次访问 USDP Web 页面需要设置管理员密码,设置完毕后,即可进行下一步操作。也就是需要激活 USDP:

我们点击上面的 导入许可证 按钮,然后会弹出以下的页面:

我们复制下来上面的硬件识别码(D2060300FFFB8B07),然后到http://117.50.84.208:8002/licenseManagement/generate页面生成一个免费版证书:

点击上面的 下载 按钮,无需解压,直接在 USDP 页面中上传证书即可。这时候就可以看到 新建集群 的页面:

我们点击 新建集群向导 就可以进入集群配置的流程。

从包含服务组件可以看出,免费版的 USDP 支持计算、存储、监控、可视化、调度以及安全等六种组件。USDP 涵盖了 HDFS、Hive、HBase、Spark、Flink、Presto、Atlas、Ranger 等众多开源大数据组件,目前,UCloud 一站式智能大数据平台 USDP 所支持的服务如表格所示,同时还在持续拓展更多开源生态组件服务。

我们点击下一步按钮,到指定集群节点页面。由于我们在 repair-host-info.properties 文件里面配置了各个节点的 hostname(比如 usdp.ssh.port.hostname.1=node1),所以在执行 repair 的时候系统已经在 /etc/hosts 里面为我们设置好了相关配置。所以这个页面我们只需要要如下配置就可以:

点击 下一步,USDP 系统自动给我们识别好了各个节点的情况。由于 USDP 需要最少三节点的部署,所以我们选中上面三个节点,然后进入下一步。这个环节 USDP 会为我们检查节点的环境:

如果感兴趣的话,可以点击上面的 检查中 查看检查了什么东西:

如果是用 USDP 的 repair 脚本修复的话,上面的检查环境一般都会顺利通过,如下:

点击下一步,就可以进入到选择服务页面,如下:

USDP 为我们提供了三个推荐方案,我们可以根据自己的需要选择不同的组件部署。当然,如果 USDP 给我们推荐的方案都不满足我们的需求,那么我们是可以选择自定义来选择不同的服务组合。这里由于是测试,我们选择 推荐方案 B,然后点击下一步。

这时候进入了在各个节点安装组件的选项,这里我选择了智能推荐,也就是进入了上述的页面,然后点击下一步。

这块需要配置 HDFS 和 HIVE 的配置选项,主要是 HDFS DataNode 数据目录和 Hive MetaStore 的配置,我这块用的是默认配置,然后点击下一步。

这一步是我们前面选择各个组件的部署信息预览,如果没问题的话可以点击 开始部署 ,这时候会进入下面页面:

这个页面等进度到 100% 的时候,部署就完成了。

点击 集群详情 就可以看到集群的部署情况了。

到这里就 USDP 集群就安装完成了。另外,我们可以看到 USDP 给我们提供了丰富的监控指标和报警告警设置。

在监控指标收集方面,主要包括以下三个当面:

  • JMX全量指标采集
  • Http常用指标采集
  • 自定义指标采集

以上三部分监控数据最终将汇总于 USDP 的 Promethues 中,并在每个服务的概览页面中,展示最常用的监控指标。同时,在 Grafana 中,通过 USDP 官方预置的监控模板(Dashboard),用户可以查看最详细监控指标。如果 USDP 预置的监控图标无法满足业务需求,用户也可以自定义添加所需的监控图表。

在告警方面,USDP 提供丰富的预置告警模板,用户只需要引导进行简单配置,即可实现向不同目标(微信、钉钉、邮件、接口调用等)发送集群指标告警的需求。与监控指标的设计相似,如果用户认为预置的告警模板无法满足业务需求,也可以自定义对告警模板进行修改,或添加新的告警规则。

USDP 集群使用

安装好了 USDP 集群之后,我们来试用一下这个集群好不好用。这里以使用 Hive 来简单查询数据为例进行说明。

在 USDP 任一安装过 hive 客户端的节点,进入 hadoop 用户,然后使用下面命令就可以进入 Hive 命令行模式了:

[root@node1 templated]# su hadoop
[hadoop@node1 templated]$ /srv/udp/1.0.0.0/hive/bin/hive
hive (default)> 

我们按照下面步骤创建一张名为 iteblog_test_usdp_hive 的 Hive 表:

hive (default)> create table iteblog_test_usdp_hive (id int, name string, age int);
OK
Time taken: 3.014 seconds
hive (default)> show create table iteblog_test_usdp_hive;
OK
CREATE TABLE `iteblog_test_usdp_hive`(
  `id` int,
  `name` string,
  `age` int)
ROW FORMAT SERDE
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://iteblog/user/hive/warehouse/iteblog_test_usdp_hive'
TBLPROPERTIES (
  'transient_lastDdlTime'='1625383436')
Time taken: 0.185 seconds, Fetched: 14 row(s)
hive (default)>

然后我们插入一条数据,并查询:

hive (default)> insert into iteblog_test_usdp_hive values (1, 'iteblog', 100);
OK
_col0    _col1    _col2
Time taken: 10.321 seconds
hive (default)> select * from iteblog_test_usdp_hive;
OK
iteblog_test_usdp_hive.id    iteblog_test_usdp_hive.name    iteblog_test_usdp_hive.age
1    iteblog    100
Time taken: 0.186 seconds, Fetched: 1 row(s)
hive (default)>

在 USDP 中,Hive 默认的执行引擎为 Tez,可以到 UDSP 平台直接修改 hive.execution.engine 参数切换到其他执行引擎。通过 USDP 平台我们可以进入很方面的进入到 Tez 的显示页面,具体如下:

总结

搞过大数据平台的运维部署同学应该很清楚,部署一个大数据集群是很费时费力的体力活,稍不留神很容易出错。CDH 的出现大大减少我们部署运维大数据集群的工作,提升了运维效率;但是随着 CDH 的全面收费,相信给大家组成了一定的困扰。这次 UCloud 大数据团队给我们提供的免费版 USDP 在一定程度上可以完全替掉 CDH 平台,在安装体验过程还是比较顺的,安装部署过程基本都是全自动,减少人工的工作量,减少出错,非常值得给大家推荐。

扫码获取详细USDP 安装手册 加入UCloud大数据技术交流群

https://docs.ucloud.cn/usdp_community/README (二维码自动识别)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK