本教程使用 Docker 完成 StreamPark 的部署。

前置条件

  1. Docker 1.13.1+
  2. Docker Compose 1.28.0+

1. 安装 docker

使用 docker 启动服务,需要先安装 docker

2. 安装 docker-compose

使用 docker-compose 启动服务,需要先安装 docker-compose

部署 Apache StreamPark™

1. 基于 h2 和 docker-compose 部署 Apache StreamPark™

该方式适用于入门学习、熟悉功能特性,容器重启后配置会失效,下方可以配置Mysql、Pgsql进行持久化

2. 部署

  1. wget https://raw.githubusercontent.com/apache/incubator-streampark/dev/docker/docker-compose.yaml
  2. wget https://raw.githubusercontent.com/apache/incubator-streampark/dev/docker/.env
  3. docker-compose up -d

服务启动后,可以通过 http://localhost:10000 访问 StreamPark,同时也可以通过 http://localhost:8081访问Flink。访问StreamPark链接后会跳转到登陆页面,StreamPark 默认的用户和密码分别为 admin 和 streampark。想要了解更多操作请参考用户手册快速上手。 Docker 部署 - 图1

该部署方式会自动给你启动一个flink-session集群供你去进行flink任务使用,同时也会挂载本地docker服务以及~/.kube来用于k8s模式的任务提交

Docker 部署 - 图2

4. 配置session集群

Docker 部署 - 图3

注意:在配置flink-sessin集群地址时,填写的ip地址不是localhost,而是宿主机网络ip,该ip地址可以通过ifconfig来进行获取

Docker 部署 - 图4

使用已有的 Mysql 服务

该方式适用于企业生产,你可以基于 docker 快速部署 StreamPark 并将其和线上数据库进行关联 注意:部署支持的多样性是通过.env这个配置文件来进行维护的,要保证目录下有且仅有一个.env文件

  1. wget https://raw.githubusercontent.com/apache/incubator-streampark/dev/docker/docker-compose.yaml
  2. wget https://raw.githubusercontent.com/apache/incubator-streampark/dev/docker/mysql/.env
  3. vim .env

需要先在mysql先创建streampark数据库,然后手动执行对应的schema和data里面对应数据源的sql

然后修改对应的连接信息

  1. SPRING_PROFILES_ACTIVE=mysql
  2. SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/streampark?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
  3. SPRING_DATASOURCE_USERNAME=root
  4. SPRING_DATASOURCE_PASSWORD=streampark
  1. docker-compose up -d

沿用已有的 Pgsql 服务

  1. wget https://raw.githubusercontent.com/apache/incubator-streampark/dev/docker/docker-compose.yaml
  2. wget https://raw.githubusercontent.com/apache/incubator-streampark/dev/docker/pgsql/.env
  3. vim .env

修改对应的连接信息

  1. SPRING_PROFILES_ACTIVE=pgsql
  2. SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/streampark?stringtype=unspecified
  3. SPRING_DATASOURCE_USERNAME=postgres
  4. SPRING_DATASOURCE_PASSWORD=streampark
  1. docker-compose up -d

基于源码构建镜像进行Apache StreamPark™部署

  1. git clone https://github.com/apache/incubator-streampark.git
  2. cd incubator-streampark/docker
  3. vim docker-compose.yaml
  1. build:
  2. context: ../..
  3. dockerfile: docker/Dockerfile
  4. # image: ${HUB}:${TAG}

Docker 部署 - 图5

  1. docker-compose up -d

docker-compse配置

docker-compose.yaml会引用env文件的配置,修改后的配置如下:

  1. version: '3.8'
  2. services:
  3. ## streampark-console容器
  4. streampark-console:
  5. ## streampark的镜像
  6. image: apache/streampark:latest
  7. ## streampark的镜像启动命令
  8. command: ${
  9. RUN_COMMAND}
  10. ports:
  11. - 10000:10000
  12. ## 环境配置文件
  13. env_file: .env
  14. environment:
  15. ## 声明环境变量
  16. HADOOP_HOME: ${
  17. HADOOP_HOME}
  18. volumes:
  19. - flink:/streampark/flink/${
  20. FLINK}
  21. - /var/run/docker.sock:/var/run/docker.sock
  22. - /etc/hosts:/etc/hosts:ro
  23. - ~/.kube:/root/.kube:ro
  24. privileged: true
  25. restart: unless-stopped
  26. networks:
  27. - streampark
  28. ## flink-jobmanager容器
  29. flink-jobmanager:
  30. image: ${
  31. FLINK_IMAGE}
  32. ports:
  33. - "8081:8081"
  34. command: jobmanager
  35. volumes:
  36. - flink:/opt/flink
  37. env_file: .env
  38. restart: unless-stopped
  39. privileged: true
  40. networks:
  41. - streampark
  42. ## streampark-taskmanager容器
  43. flink-taskmanager:
  44. image: ${
  45. FLINK_IMAGE}
  46. depends_on:
  47. - flink-jobmanager
  48. command: taskmanager
  49. deploy:
  50. replicas: 1
  51. env_file: .env
  52. restart: unless-stopped
  53. privileged: true
  54. networks:
  55. - streampark
  56. networks:
  57. streampark:
  58. driver: bridge
  59. volumes:
  60. flink:

最后,执行启动命令:

  1. cd docker
  2. docker-compose up -d

可以使用docker ps来查看是否安装成功,显示如下信息,表示安装成功:

Docker 部署 - 图6

上传配置至容器

在前面的env文件,声明了HADOOP_HOME,对应的目录为 /streampark/hadoop,所以需要上传hadoop安装包下的 /etc/hadoop/streampark/hadoop 目录,命令如下:

  1. ## 上传hadoop资源
  2. docker cp etc整个目录 streampark-docker_streampark-console_1:/streampark/hadoop
  3. ## 进入容器
  4. docker exec -it streampark-docker_streampark-console_1 bash
  5. ## 查看
  6. ls

Docker 部署 - 图7

同时,其它配置文件,如maven的settings.xml文件也是以同样的方式上传。