11# Chunjun开发环境构建
2- 一个基于 ` docker ` 的 ` chunjun ` 本地开发运行环境。
3- 请注意为了保证大家端口基本都可以使用(ps:大家可能机器上装过mysql啥的,3306都可能被占用过),
4- 所有我们都选用5位数的端口,并且一般以4开头,比如3306,我们就使用43306等等。
2+ 一个基于 ` docker ` 的 ` chunjun ` 本地开发运行环境,也可以用于快速搭建chunjun的local开发环境。
53
6- ``` bash
7- // 为了下面能正常运行,请先执行下面的代码
8- ```
94
105## 使用
11- ### 1. 按需修改 .env 配置
6+ ### 1. 按需修改 .env 配置 (主要包含了一些端口,如果被占用,请自行更改)
127~~~
138# 设置时区
149TZ=Asia/Shanghai
@@ -31,11 +26,25 @@ MYSQL8_ROOT_PASSWORD=123456
3126
3227# Redis5 服务映射宿主机端口号,可在宿主机127.0.0.1:46375访问
3328REDIS5_PORT=46375
34- REDIS5_PASSWORD=G62m50oigInC30sf
29+ REDIS5_PASSWORD=123456
3530# Redis6 服务映射宿主机端口号,可在宿主机127.0.0.1:46376访问
3631REDIS6_PORT=46376
37- REDIS6_PASSWORD=G62m50oigInC30sf
32+ REDIS6_PASSWORD=123456
33+
34+ # Dm7 服务映射宿主机端口号,可在宿主机127.0.0.1:45237访问
35+ DM7_PORT=45237
36+ # Dm8 服务映射宿主机端口号,可在宿主机127.0.0.1:45238访问
37+ DM8_PORT=45238
3838
39+ # Zookeeper 服务映射宿主机端口号,可在宿主机127.0.0.1:42181访问
40+ ZOOKEEPER_PORT=42181
41+
42+ # kafka28 服务映射宿主机端口号,可在宿主机127.0.0.1:49092访问
43+ KAFKA28_PORT=49092
44+
45+ # kudu 服务映射宿主机端口号,可在宿主机127.0.0.1:49092访问
46+ KUDU_MASTER_PORT=7051
47+ KUDU_TSERVER_PORT=7050
3948~~~
4049
4150### 2.启动服务
@@ -59,20 +68,105 @@ docker-compose stop
5968# 其他的服务名,请查看docker-compose.yml
6069docker-compose stop chunjun-redis5 chunjun-mysql8
6170```
62- ### 4.kafka操作(ps:kafka已开启自动创建topic的功能)
71+
72+ ### 4.开发示例
73+ 开发方式一般有两种,一种是使用IDEA(或者Jetbrain的gateway)和vscode进行开发,核心思路是远程到我们的app镜像当中开发。 为什么要远程到app镜像当中开发,主要是为了解决一些host映射的问题,我们在容器中debug代码,就不需要把host映射到主机,从而解决hbase,hive的一些host映射问题。
74+ #### 4.1 启动开发环境
75+ ``` shell
76+ cd chunjun-dev
77+ # 等待所有的镜像构建完毕
78+ docker-compose up -d
79+ # 构建部分镜像,(推荐)
80+ docker-compose up chunjun-app
81+ ```
82+ ![ ] ( images/docker_containers.png )
83+
84+ #### 4.2 进入app container,克隆代码
85+ ``` shell
86+ docker exec -it chunjun-dev_chunjun-app_1 bash
87+
88+ cd /root/app/code
89+
90+ git clone https://github.com/DTStack/chunjun.git
91+
92+ cd chunjun
93+
94+ mvn clean package -DskipTests
95+ ```
96+ ![ ] ( images/build_success.png )
97+
98+ #### 4.3 IDE打开,这边使用的是Gateway
99+ ``` shell
100+ 账号密码 root/root,等待进入IDE
101+ ```
102+ ![ ] ( images/new_connection.png )
103+ ![ ] ( images/chunjun_dev.png )
104+ ![ ] ( images/gateway_ide.png )
105+
106+ #### 4.4 第一个测试
107+ ``` shell
108+ // 在chunjun的代码仓库下创建一个job是目录,创建文件mysql_to_print.json,复制下面的json
109+ 运行类 com.dtstack.chunjun.client.Launcher
110+ 运行参数 -job /root/app/code/chunjun/jobs/mysql_to_print.json -jobType sync -chunjunDistDir /root/app/code/chunjun/chunjun-dist
111+ ```
112+ ``` json
113+ {
114+ "job" : {
115+ "content" : [
116+ {
117+ "reader" : {
118+ "name" : " mysqlreader" ,
119+ "parameter" : {
120+ "column" : [
121+ {
122+ "name" : " Host" ,
123+ "type" : " string"
124+ },
125+ {
126+ "name" : " User" ,
127+ "type" : " string"
128+ }
129+ ],
130+ "username" : " root" ,
131+ "password" : " 123456" ,
132+ "connection" : [
133+ {
134+ "jdbcUrl" : [
135+ " jdbc:mysql://chunjun-mysql5.7:3306/mysql?useSSL=false"
136+ ],
137+ "table" : [
138+ " user"
139+ ]
140+ }
141+ ]
142+ }
143+ },
144+ "writer" : {
145+ "name" : " streamwriter" ,
146+ "parameter" : {
147+ "print" : true
148+ }
149+ }
150+ }
151+ ],
152+ "setting" : {
153+ "speed" : {
154+ "channel" : 1 ,
155+ "bytes" : 0
156+ }
157+ }
158+ }
159+ }
160+ ```
161+ ![ ] ( images/success.png )
162+ ``` shell
163+ //运行截图
164+ 1.如果你能得到相同的结果,那么开发环境就构建成功了.
165+ 2.请注意保护chunjun-dev/data/app目录下的文件,你改动的代码都会被同步到这个文件夹
166+ ```
167+ ### 5.kafka操作(ps:kafka已开启自动创建topic的功能)
63168``` bash
64- 请在/etc/host中添加映射
65- linux:
66- vim /etc/host
67- // 添加
68- 127.0.0.1 chunjun-kafka2.8
69- win:
70- C:\W indows\S ystem32\d rivers\e tc
71- // 添加
72- 127.0.0.1 chunjun-kafka2.8
73-
74- // 进入chunjun-kafka的容器内部,docker ps获取容器的id
75- docker exec -it 4ecc98f58db1 /bin/sh
169+ docker exec -it chunjun-dev_chunjun-kafka2.8_1 /bin/sh
76170cd /opt/kafka/bin/
77171
78172//创建topic
@@ -88,16 +182,3 @@ cd /opt/kafka/bin/
88182./kafka-console-consumer.sh --bootstrap-server chunjun-kafka2.8:49092 --topic chunjun-test --from-beginning
89183
90184```
91- ### 5.kudu操作
92- ``` bash
93- docker-compose up -d chunjun-kudu-master-1 chunjun-kudu-master-2 chunjun-kudu-master-3 chunjun-kudu-tserver
94-
95- // Find the web UI url for kudu-master-1:
96- docker ps -q --filter=name=.* kudu-master-1.* | xargs -L1 docker port | grep " ^8051" | cut -d" :" -f2 | sed ' s/.*/http\:\/\/localhost\:&/'
97-
98- // 常见错误
99- org.apache.kudu.client.NonRecoverableException: Couldn' t find any valid locations, exceptions: [java.net.UnknownHostException: Failed to resolve the IP of `ecfbad4be048' ]
100- 处理方案:
101- 1.将对应的containerid加入host文件
102- 127.0.0.1 ecfbad4be048
103- ```
0 commit comments