Skip to content

Commit b330334

Browse files
feature(alldatadc): 引入tis-ansible
1 parent d6a7f25 commit b330334

File tree

229 files changed

+10564
-52
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

229 files changed

+10564
-52
lines changed

Diff for: alldata-k8s/README.md

-27
This file was deleted.

Diff for: assembly/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# CUBE STUDIO FOR ALL DATA
1+
# ASSEMBLY FOR ALL DATA
22

33
```markdown
44

Diff for: buried/README.md

+15-12
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
1-
# DATA ODS FOR ALL DATA PLATFORM 数据采集引擎
1+
# 系统埋点
22

3-
数据平台的人工智能引擎:数据采集引擎
3+
## Logan 开源的是一整套日志体系
44

5-
1、爬虫
5+
> 包括日志的收集存储,上报分析以及可视化展示。
6+
>
7+
> 我们提供了五个组件,包括端上日志收集存储 、[iOS SDK](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/iOS)
8+
>
9+
> [Android SDK](https://github.com/Meituan-Dianping/Logan/tree/master/Example/Logan-Android)
10+
>
11+
> [Web SDK](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/WebSDK)
12+
>
13+
> 后端日志存储分析 [Server](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/Server)
14+
>
15+
> 日志分析平台 [LoganSite](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/LoganSite)
16+
>
17+
> 并且提供了一个 Flutter 插件[Flutter 插件](https://github.com/Meituan-Dianping/Logan/tree/master/Flutter)
618
7-
2、系统埋点
8-
9-
3、Syslog采集
10-
11-
4、Ftp/SSH文件采集
12-
13-
5、Http采集
14-
15-
6、富文本采集FScrawler

Diff for: alldata-k8s/.gitkeep renamed to cluster/.gitkeep

File renamed without changes.

Diff for: cluster/README.md

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# 组件二开,定制化或者定期升级到最新社区稳定版本
2+
3+
> 基于Docker拉起大数据集群组件
4+
>
5+
> 1、配置/etc/hosts
6+
>
7+
> 10.0.12.4 namenode
8+
> 10.0.12.4 resourcemanager
9+
> 10.0.12.4 elasticsearch
10+
> 10.0.12.4 kibana
11+
> 10.0.12.4 prestodb
12+
> 10.0.12.4 hbase-master
13+
> 10.0.12.4 jobmanager
14+
> 10.0.12.4 datanode
15+
> 10.0.12.4 nodemanager
16+
> 10.0.12.4 historyserver
17+
> 10.0.12.4 hive-metastore
18+
> 10.0.12.4 hive-metastore-pg
19+
> 10.0.12.4 hive-server
20+
> 10.0.12.4 zookeeper
21+
> 10.0.12.4 kafka
22+
> 10.0.12.4 elasticsearch
23+
> 10.0.12.4 jobmanager
24+
> 10.0.12.4 taskmanger
25+
> 10.0.12.4 hbase-master
26+
> 10.0.12.4 hbase-regionserver
27+
> 10.0.12.4 hbase-thrift
28+
> 10.0.12.4 hbase-stargate
29+
> 10.0.12.4 alluxio-master
30+
> 10.0.12.4 alluxio-worker
31+
> 10.0.12.4 alluxio-proxy
32+
> 10.0.12.4 filebeat
33+
>
34+
> 2、docker-compose up -d
35+
>
36+
> 3、访问hive
37+
>
38+
> 3.1 进入hive-metastore 9083
39+
> docker exec -it hive-metastore /bin/bash
40+
> 3.2 进行hive客户端
41+
> hive --hiveconf hive.root.logger=INFO,console
42+
> 4、页面访问
File renamed without changes.
File renamed without changes.

Diff for: cluster/tis-ansible/.gitkeep

Whitespace-only changes.

Diff for: cluster/tis-ansible/DockerApp/Dockerfile

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM java:8
2+
# 在主机/var/lib/docker创建临时文件链接到容器的/tmp
3+
VOLUME /tmp
4+
# 将jar包添加到容器中并更名为real-app.jar
5+
ADD docker-app.jar real-app.jar
6+
# 运行jar包
7+
RUN bash -c 'touch /real-app.jar'
8+
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/real-app.jar"]
9+

Diff for: cluster/tis-ansible/DockerApp/build.sh

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
docker build -t docker-app .
2+
docker run -d -p 8080:8080 docker-app

Diff for: cluster/tis-ansible/README.md

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# 组件二开,定制化或者定期升级到最新社区稳定版本
2+
3+
> 3.6.0

Diff for: cluster/tis-ansible/tis-ansible-3.6.0/.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
**/*.retry
2+
**/*.swo
3+
**/*.swp
4+
inventory/hosts.custom

Diff for: cluster/tis-ansible/tis-ansible-3.6.0/README.md

+190
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
# 使用方法
2+
3+
## 通过编译向本地安装
4+
```
5+
ansible-playbook ./deploy-tis-by-compile.yml --tags initos,zk,hadoop,spark,pkg,pkg-plugin,ng-tis,tjs,assemble,indexbuilder,solr --skip-tags=deploy -i ./inventory/hosts
6+
```
7+
注意:不需要向仓库中部署需要添加`--skip-tags=deploy`参数
8+
## 通过Release本地安装
9+
```
10+
ansible-playbook ./deploy-tis-by-release.yml --tags initos,zk,hadoop,spark,tjs,assemble,indexbuilder,solr -i ./inventory/hosts
11+
```
12+
13+
## Spark安装介绍
14+
15+
该脚本集成了下面一些功能:
16+
17+
- 系统初始化:安装必备的软件,并做一些设置
18+
- 安装系统依赖的jdk、spring-boot
19+
- 安装 zookeeper
20+
- 安装 hadoop 的 hdfs、 yarn
21+
- 安装 spark,支持tidb的 tispark,方便通过jdbc连接的 thriftserver及对应yarn的spark-shuffle
22+
- 安装 solr
23+
- 安装 tis-console、tis-assemble
24+
- 安装对应全量构建需要的 index-builder
25+
26+
脚本在 CentOS 7.6 上通过测试。
27+
28+
**安装前必读**
29+
30+
当前版本将程序、数据主要目录都安装到 `/opt` 目录下,如果 `/opt` 不是最大分区,安装脚本会尝试将当前系统最大分区通过 symbol link 的方式链接到 `/opt`
31+
这种方式在目前会造成已知的BUG:**如果 hdfs、yarn 几台服务器 /opt 对应的最大分区挂载目录不一致,将导致 namenode、resourcemanager 节点最大分区挂载目录不一致的其它服务器无法启动对应的服务**
32+
导致该问题的原因是 `start-dfs.sh``start-yarn.sh` 会在一开始通过命令 `dirname "${BASH_SOURCE-$0}"` 获取脚本所在路径,并以此目录为基础查找其它可执行程序。该命令将忽略掉 symbol link,直接获取物理分区所挂载路径。
33+
为了避免这个问题,需要在安装前将需要安装的机器最大磁盘分区都挂载到相同路径。通过命令:`lsblk | awk '{if ($7) print $4 " " $7}' | sort -h | tail -n 1 | awk '{print $2}'` 可以检查这些机器的最大分区是否为同一个目录。
34+
35+
## 准备阶段
36+
37+
### 配置 vars
38+
39+
需要配置 vars.yml 文件,修改下面几个参数以定制安装需要的组件,如果不安装,则需要确保这些主机已经是可用状态:
40+
41+
```file
42+
need_install_zookeeper: true
43+
need_install_hadoop: true
44+
need_install_spark: true
45+
need_install_tispark: true
46+
need_install_spark_shuffle: true
47+
```
48+
49+
具体依赖关系看其中的注释。
50+
51+
需要修改 vars.yml 中的参数 yarn_nodemanager_resource_memorymb 以配置 yarn nodemanager 可用的最大内存,根据机器的实际内存进行修改。在创建索引时,提交的物理内存为配置的 nodemanager 可用最大内存的 80%。
52+
53+
### 配置 hosts
54+
55+
inventory/hosts 文件示例如下,为了自动生成 hosts 文件,请在主机名后通过 ansible_ssh_host 指定IP,指定IP如下:
56+
57+
```file
58+
[solr]
59+
solr1.xxx ansible_ssh_host=10.33.9.192
60+
solr2.xxx ansible_ssh_host=10.33.9.193
61+
62+
[hadoop-hdfs-datanode]
63+
hadoop1.xxx ansible_ssh_host=10.1.1.1
64+
hadoop2.xxx ansible_ssh_host=10.1.1.2
65+
hadoop3.xxx ansible_ssh_host=10.1.1.3
66+
```
67+
68+
上面例子中 `solr` 为一组主机,solr1.xxx 为单个主机,下面的操作都会指定一组主机或单个主机。
69+
70+
**注意**:上面例子中的主机不全,需要根据实际安装的组件,配置全部的主机和参数:
71+
72+
- 必须配置主机 hadoop-yarn-resource-manager、hadoop-yarn-node-manager,用于安装indexbuild;
73+
- 如果要安装 hadoop:需要配置主机 hadoop-hdfs-namenode、hadoop-hdfs-datanode;
74+
- 如果需要安装zookeeper:需要配置主机 zookeeper
75+
- 如果需要安装 tispark:需要配置主机 tidb
76+
- 必须配置参数 如果hdfs namenode没有配置ha,则配置为系统的namenode主机即可。
77+
- 必须配置参数 tisconsole_db_url、 tisconsole_db_username、 tisconsole_db_password 为tis console 的sql语句所在的数据库连接信息。
78+
- 如果需要安装 spark shuffle,要根据内存配置参数 spark_shuffle_max_executor、 spark_shuffle_executor_memory ,以便实现内存的有效利用。在启动 thriftserver 时,会启动一个 ApplicationMaster,消耗2G内存,另外启用一个 Container,消耗(2G + spark_shuffle_executor_memory) 的内存。后续每次启动一个 Container,就消耗 (2G + spark_shuffle_executor_memory) 的内存。内存要满足:yarn_nodemanager_resource_memorymb \* nodemanager机器数量 >= 2G + (2G + spark_shuffle_executor_memory) \* spark_shuffle_max_executor,最好流出一些余量,以免创建Container失败。
79+
80+
## 确保主机可以由中控机ssh免密登陆
81+
82+
如果在ansible中控机没有做过 ssh-copy-id 到其它需要安装的主机,可以通过 ssh-keygen 先在中控机生成一个可以,使用下面的命令可以通过 `copy_root_sshkey.yml` 辅助拷贝到其它主机,注意如果需要一组或多组主机拷贝,则要确保一组主机有相同的root密码:
83+
84+
```shell
85+
ansible solr,hadoop-hdfs-datanode -m authorized_key -a "user=root key='{{ lookup('file', '/root/.ssh/id_rsa.pub') }}'" -k
86+
ansible solr1.xxx -m authorized_key -a "user=root key='{{ lookup('file', '/root/.ssh/id_rsa.pub') }}'" -k
87+
```
88+
89+
然后可以通过下面的方式验证是否实现了免密登陆,可以一次性测试多组主机:
90+
91+
```shell
92+
ansible solr,hadoop-hdfs-datanode -m ping
93+
ansible solr1.xxx -m ping
94+
```
95+
96+
## 通过已经发布的releas文件安装
97+
98+
cd 到ansible脚本所在目录:
99+
100+
```shell
101+
ansible-playbook ./deploy-tis-by-release.yml
102+
```
103+
104+
## 启动和停止系统
105+
106+
进入当前目录:
107+
108+
```shell
109+
# 启动系统
110+
ansible-playbook ./start.yml
111+
# 停止系统
112+
ansible-playbook ./stop.yml
113+
```
114+
115+
如果只是因为 thriftserver 和 yarn 不稳定,需要重启 yarn 和 thriftserver,可以在当前目录用下面的命令停止和启动:
116+
117+
```shell
118+
# 停止 thriftserver 和 yarn
119+
ansible-playbook ./stop-yarn-and-thriftserver.yml
120+
# 启动 yarn 和 thriftserver
121+
ansible-playbook ./start-yarn-and-thriftserver.yml
122+
```
123+
124+
## 初始化tis
125+
126+
第一次安装tis,需要向mysql数据库中,初始化数据库,其中的sql是通过下面的命令导出的:
127+
128+
```shell
129+
# the option '-d' means nodata just table struct
130+
mysqldump -d -uxx -pxxx -h127.0.0.1 tis_console > tis_console_mysql.sql
131+
```
132+
133+
在启动tis后,可以通过 tis.xx:8080 通过web访问系统,需要初始化几个值:
134+
135+
- zkaddress:设置为几个主机,后加 `/tis/cloud` 路径,`zk1.xxx:2181,zk2.xxx:2181,zk3.xxx:2181/tis/cloud`
136+
- tis_hdfs_root_dir: 设置为如下路径 `/xxx/data`,不需要前面类似于 `hdfs://hadoop1.xxx:9000` 这样的URL。
137+
138+
3.重启solr服务,注意要加上'--become'才能得到sudo权限
139+
140+
```file
141+
ansible solr -i ./inventory/hosts -m service --become -a "name=spring-boot state=restarted"
142+
```
143+
144+
4.在第一次进行全量构建时,可能会因为hdfs的权限导致tag文件无法写入,需要在 hdfs 的机器上进行下面的设置:
145+
146+
```shell
147+
su - hadoop
148+
hdfs dfs -chmod -R 777 /
149+
```
150+
151+
# 执行例子
152+
153+
## 编译
154+
155+
1. 编译打包`datax-docker`
156+
157+
``` shell script
158+
ansible-playbook ./deploy-tis-by-compile.yml --tags pkg,datax-docker --skip-tags=deploy -i ./inventory/hosts
159+
```
160+
2. 编译打包`uber`执行包
161+
``` shell script
162+
ansible-playbook ./deploy-tis-by-compile.yml --tags pkg,pkg-plugin,ng-tis,uber --skip-tags=deploy -i ./inventory/hosts
163+
```
164+
165+
## 发布
166+
167+
``` shell script
168+
ansible-playbook ./deploy-tis-by-compile.yml --tags pkg,pkg-plugin,ng-tis,uber,datax-docker,flink-docker,update-center,deploy -i ./inventory/hosts
169+
```
170+
171+
172+
173+
## 向ansible脚本中新添加一个role
174+
175+
```shell
176+
ansible-galaxy init --init-path=roles taskcenter-worker
177+
```
178+
179+
## 远程安装java
180+
181+
``` shell
182+
ansible all -i "ip," -m include_role -a "name=jdk" -e "@vars.yml" -u root
183+
```
184+
185+
## 向仓库中部署构件
186+
```
187+
ansible-playbook ./deploy-tis-by-compile.yml --tags pkg,pkg-plugin,ng-tis,deploy
188+
```
189+
190+

0 commit comments

Comments
 (0)