01 引言
本文记录在docker下安装和配置streampark。
安装部署官网教程:
- https://streampark.apache.org/zh-CN/docs/user-guide/deployment
- https://streampark.apache.org/zh-CN/docs/user-guide/docker-deployment
02 安装
官方使用的方式很简单,如下:
## 下载docker-compose.yaml wget https://raw.githubusercontent.com/apache/incubator-streampark/dev/deploy/docker/docker-compose.yaml ## 下载.env wget https://raw.githubusercontent.com/apache/incubator-streampark/dev/deploy/docker/.env ## 安装 docker-compose up -d
如果按照官方的教程是可以成功启动的,但是会有很多问题,比如:
- 使用的是H2作为数据库,容器重启后所有配置失效;
- 没有配置hadoop等环境;
- 很多配置都需要手动上传到容器某个目录,如:maven的settings.xml;
- 。。。。。
接下来,本文主要讲解docker-compose.yaml
和.env
这两个文件的配置。
03 配置
我期望的是存储到mysql数据库,且hadoop配置指定到某一个目录。
3.1 env配置
以下是修改后的.env
文件:
TZ=Asia/Shanghai # 数据库:h2、mysql, pgsql SPRING_PROFILES_ACTIVE=mysql # mysql数据库连接 SPRING_DATASOURCE_URL=jdbc:mysql://127.0.0.1:3306/streampark?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8 #SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/streampark?stringtype=unspecified # 数据库账号密码 SPRING_DATASOURCE_USERNAME=root SPRING_DATASOURCE_PASSWORD=root # flink相关 FLINK=flink1.14.5 FLINK_IMAGE=flink:1.14.5-scala_2.12 # 启动命令(下载mysql-connector,启动streampark.sh) RUN_COMMAND='/bin/sh -c "wget -P lib https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.31/mysql-connector-j-8.0.31.jar && bash bin/streampark.sh start_docker "' # job manager 远程调用地址 JOB_MANAGER_RPC_ADDRESS=flink-jobmanager # hadoop 配置目录 HADOOP_HOME=/streampark/hadoop
注意:需要先在mysql
先创建streampark
数据库,然后手动执行对应的schema
和data
里面对应数据源的sql
,可以下载安装包(https://streampark.apache.org/zh-CN/download/)并解压,具体目录如下:
. streampark-console-service-1.2.1 ├── bin │ ├── startup.sh //启动脚本 │ ├── setclasspath.sh //java 环境变量相关的脚本 ( 内部使用,用户无需关注 ) │ ├── shutdown.sh //停止脚本 │ ├── yaml.sh //内部使用解析 yaml 参数的脚本 ( 内部使用,用户无需关注 ) ├── conf │ ├── application.yaml //项目的配置文件 ( 注意不要改动名称 ) │ ├── flink-application.template //flink 配置模板 ( 内部使用,用户无需关注 ) │ ├── logback-spring.xml //logback │ └── ... ├── lib │ └── *.jar //项目的 jar 包 ├── client │ └── streampark-flink-sqlclient-1.0.0.jar //Flink SQl 提交相关功能 ( 内部使用,用户无需关注 ) ├── script │ ├── schema │ │ ├── mysql-schema.sql // mysql的ddl建表sql │ │ └── pgsql-schema.sql // pgsql的ddl建表sql │ ├── data │ │ ├── mysql-data.sql // mysql的完整初始化数据 │ │ └── pgsql-data.sql // pgsql的完整初始化数据 │ ├── upgrade │ │ ├── 1.2.3.sql //升级到 1.2.3版本需要执行的升级sql │ │ └── 2.0.0.sql //升级到 2.0.0版本需要执行的升级sql │ │ ... ├── logs //程序 log 目录 ├── temp //内部使用到的临时路径,不要删除
3.2 docker-compose配置
ok,docker-compose.yaml会引用env文件的配置,修改后的配置如下:
version: '3.8' services: ## streampark-console容器 streampark-console: ## streampark的镜像 image: apache/streampark:latest ## streampark的镜像启动命令 command: ${RUN_COMMAND} ports: - 10000:10000 ## 环境配置文件 env_file: .env environment: ## 声明环境变量 HADOOP_HOME: ${HADOOP_HOME} volumes: - flink:/streampark/flink/${FLINK} - /var/run/docker.sock:/var/run/docker.sock - /etc/hosts:/etc/hosts:ro - ~/.kube:/root/.kube:ro privileged: true restart: unless-stopped networks: - streampark ## flink-jobmanager容器 flink-jobmanager: image: ${FLINK_IMAGE} ports: - "8081:8081" command: jobmanager volumes: - flink:/opt/flink env_file: .env restart: unless-stopped privileged: true networks: - streampark ## streampark-taskmanager容器 flink-taskmanager: image: ${FLINK_IMAGE} depends_on: - flink-jobmanager command: taskmanager deploy: replicas: 1 env_file: .env restart: unless-stopped privileged: true networks: - streampark networks: streampark: driver: bridge volumes: flink:
最后,执行启动命令:
docker-compose up -d
可以使用docker ps来查看是否安装成功,显示如下信息,表示安装成功:
3.3 上传配置至容器
在前面的env文件,声明了HADOOP_HOME
,对应的目录为“/streampark/hadoop
”,所以需要上传hadoop安装包下的/etc/hadoop
至/streampark/hadoop
目录,命令如下:
## 上传hadoop资源 docker cp etc整个目录 streampark-docker_streampark-console_1:/streampark/hadoop ## 进入容器 docker exec -it streampark-docker_streampark-console_1 bash ## 查看 ls
同时,其它配置文件,如maven的settings.xml文件也是以同样的方式上传。
03 使用
浏览器登录 http://服务器ip:10000
,输入默认密码: admin / streampark
:
登录成功,然后配置flink home:
接着配置flin 集群(这里配置了yarn session和standalone集群):
最后新建Application,可以看到都运行成功了:
这里具体的使用细节就不再详述了,本文大致记录了docker下安装与配置streampark的过程,希望能帮助到大家,谢谢大家的阅读,本文完!