TDH-client 生成步骤

  原理
内容纲要

概要描述

本篇文档仅适用于Manager 8.x之前的版本。

生成tdh-client的前提是已经存在该目录/var/lib/transwarp-manager/master/content/resources/tdh_client,该目录在上传产品包时生成,内容也均来自产品包。

生成tdh-client的过程中只会更新tdh_client下的conf目录、hosts文件以及/etc/krb5.conf文件。


配置项

属性定义

在application.conf中,只有在这里conf-link里定义的sid(key即为sid,sid即namePrefix),才会下载conf到tdhclient中。

tdh-client {
  tar-filename = "tdh-client.tar"
  conf-link {
    hadoop = [yarn, hdfs, argodbcomputing]
    hyperbase = [hyperbase]
    inceptor = [inceptor, argodbcomputing]
    zookeeper = [zookeeper]
    hbase = [hbase]
  }
  conf-filter {
    file-name = ["\\*.keytab", "\\*.jks", "guardian-site.xml", "ldap-conn-pass.txt"]
  }
}

tar-filename:打包后的文件名
conf-link:产品和服务的链接管理,后面会根据此关系生成软链接
conf-filter:需要过滤的配置文件

文件目录

tdh-client.tar所在目录:/var/lib/transwarp-manager/master/content/resources
服务器上可用tdh-client目录:/var/lib/transwarp-manager/master/content/resources/tdh_client
配置所在目录:/var/lib/transwarp-manager/master/content/resources/tdh_client/conf

原理解析

用一句话总结,其实就是把所有已安装的service的相关配置copy到/conf目录下,并打包生成tdh-client.tar文件,以供客户端下载并使用。

具体的流程可以分三步看:

权限校验

组装入参

准备&打包

一、权限校验

check当前登录用户是否具有类型为ADMIN权限,有则继续,否则抛出异常

获取当前已安装并且当前登录用户具有权限的service列表,这里的service不区分集群

校验权限的逻辑(满足一条即可):

具有ADMIN权限

具有service所在集群的CLUSTER_ADMIN权限

具有service的SERVICE_ADMIN权限

二、组装入参

sidHostMultiMap(Map),当前的所有具有admin权限的service,sid与roles的映射

key:service.sid

value:当前service下,所有role的hostname的列表(去重)

ipHost(Map),hostname和ip的映射

key:hostname对应的机器ip地址

value:hostname

kerberosEnabled(Boolean):是否有开启了Kerberos服务,true:有,false:无

三、生成tdhclient

该步骤在代码中


拷贝服务的配置文件

初始化conf目录,即createAndClean

拷贝符合条件的service的conf/到/tdh_client/conf下

过滤已安装服务中不符合条件的服务

sid满足规则:([^0-9])[0-9],即非数字的字符+数字,例如:inceptor1

具有role,并且存在role安装成功

对满足条件的所有service
创建sid的目录,如安装了inceptor1和hdfs1,这里创建两个目录,/conf/inceptor1和/conf/hdfs1

将etc下的conf目录及内容复制到sid目录下

fromDir:/etc/${sid}/conf/

toDir:/var/lib/transwarp-manager/master/content/resources/tdh_client/conf/${sid}/

fromHost:role对应的host,如果有多个host,取第一个

filter:过滤匹配了conf-filter规则的文件

Yarn的定制逻辑

如果/etc/$yarnSid/conf/yarn-env.sh中有配置HDFS_CONF_DIR=/etc/(hdfs[0-9]+)/conf,那么将此hdfsSid复制到yarnSid目录下。

例如:HDFS_CONF_DIR=/etc/hdfs1/conf并且安装了yarn1,会将/etc/hdfs1/conf目录下的文件也拷贝到/var/lib/transwarp-manager/master/content/resources/tdh_client/conf/yarn1/下

将产品的目录链接到sid目录

将conf-link的key作为产品目录,取value中匹配的第一条,作为服务目录,创建产品目录->服务目录的软链
如果一个产品有多个sid,只会指向一条,目前的规则是会关联到最新创建的那一个sid
例如:hadoop = [yarn, hdfs, argodbcomputing]

产品目录为hadoop
服务目录为yarn1,如果此时没有安装yarn1,便会指向hdfs1
如果安装多个yarn(多个集群或单个集群),存在yarn1和yarn2,便会指向yarn2

lrwxrwxrwx 1 root root    5 11月 16 14:51 hadoop -> yarn1
drwxr-xr-x 2 root root  185 11月 16 14:51 hdfs1
drwxr-xr-x 2 root root 4096 11月 16 14:51 yarn1
lrwxrwxrwx 1 root root   10 11月 16 14:51 zookeeper -> zookeeper2
drwxr-xr-x 2 root root  128 11月 16 14:51 zookeeper1
drwxr-xr-x 2 root root  128 11月 16 14:51 zookeeper2

生成hosts文件

在/var/lib/transwarp-manager/master/content/resources/tdh_client目录下创建hosts文件,并写入当前host配置(从入参获取)

如:

172.22.8.200 tdh-200
172.22.8.201 tdh-201
172.22.8.202 tdh-202

拷贝kerberos配置

1,如果kerberos为true,需要更新kerberos/krb5.conf目录
fromDir:/etc/krb5.conf
如果已存在文件,覆盖更新

2,如果kerberos为false,删除kerberos/krb5.conf目录

生成压缩包以供下载

1,准备供打包的临时目录(createAndClean)

临时目录地址:/var/lib/transwarp-manager/master/content/resources/tdh_client_package_root

2,创建目录:TDH-Client
,3,将所需文件复制到TDH-client目录下

即:将/var/lib/transwarp-manager/master/content/resources/tdh_client目录下所有文件复制到TDH-Client文件下

cp -r -p -d /var/lib/transwarp-manager/master/content/resources/tdh_client/* TDH-Client/

4,将TDH-client目录压缩打包成tar文件

将会在/var/lib/transwarp-manager/master/content/resources目录下生成tdh-client.tar

5,清空打包临时目录

TIPS

tdh-client这个目录何时会被更新

1,tdhclient下载(需要在页面手动触发)

会去更新/var/lib/transwarp-manager/master/content/resources/tdh_client下,conf和kerberos目录,并copy文件进来,文件的源头是/etc//conf/*

2,上传产品包

上传产品包本质其实是执行这一条指令,就是去执行产品包里的脚本,具体会对tdhclient目录做什么,要看脚本是怎么编写的

bash <untarDir> /scripts/install.sh --FTP_DIR=<ftpDir> --META_DIR=<metaDir> --TDH_CLIENT_DIR=<tdhClientDir> --TDH_PLUGIN_DIR=<tdhPluginDir>

tdhClientDir 就是/var/lib/transwarp-manager/master/content/resources/tdh_client

/scripts/install.sh 是由组件的产品包里提供的

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。