获取镜像

  1. # 查看可用的稳定版本
  2. sudo docker search flink
  3. sudo docker pull fhueske/flink-sql-client-training-1.7.2:latest
  4. sudo docker pull flink:1.10-scala_2.11
  5. sudo docker pull wurstmeister/zookeeper
  6. sudo docker pull wurstmeister/kafka:0.11.0.1
  7. sudo docker pull elasticsearch:6.7.0
  8. sudo docker image ls |grep flink

Flink环境准备

此次安装是基于Docker进行的,因此你只需要安装了Docker即可。不需要依赖Java、Scala环境、或是IDE。注意:Docker默认配置的资源可能不太够,会导致运行Flink Job时卡死。因此推荐配置Docker资源到3-4GB,3-4个CPU cores。
此次安装的环境使用Docker Compose来安装,包含了所需的各种服务的容器,包括:

  • Flink SQL Client:用来提交query,以及可视化结果。
  • Flink JobManager 和 TaskManager:用来运行Flink SQL任务。
  • Apache Kafka:用来生成输入流和写入结果流。
  • Apache Zookeeper:Kafka的依赖项。
  • ElasticSearch:用来写入结果。

    服务编排

    1. mkdir -p /share/flink && cd /share/flink
    2. rm -rf /share/flink/docker-compose.yml
    3. vi /share/flink/docker-compose.yml
    编排文件如下:
    1. version: '2'
    2. services:
    3. sql-client:
    4. image: fhueske/flink-sql-client-training-1.7.2:latest
    5. depends_on:
    6. - kafka
    7. - jobmanager
    8. - elasticsearch
    9. environment:
    10. FLINK_JOBMANAGER_HOST: jobmanager
    11. ZOOKEEPER_CONNECT: zookeeper
    12. KAFKA_BOOTSTRAP: kafka
    13. ES_HOST: elasticsearch
    14. jobmanager:
    15. image: flink:1.10-scala_2.11
    16. hostname: "jobmanager"
    17. expose:
    18. - "6123"
    19. ports:
    20. - "8081:8081"
    21. command: jobmanager
    22. environment:
    23. - JOB_MANAGER_RPC_ADDRESS=jobmanager
    24. taskmanager:
    25. image: flink:1.10-scala_2.11
    26. expose:
    27. - "6121"
    28. - "6122"
    29. depends_on:
    30. - jobmanager
    31. command: taskmanager
    32. links:
    33. - jobmanager:jobmanager
    34. environment:
    35. - JOB_MANAGER_RPC_ADDRESS=jobmanager
    36. zookeeper:
    37. image: wurstmeister/zookeeper
    38. ports:
    39. - "2181:2181"
    40. kafka:
    41. image: wurstmeister/kafka:0.11.0.1
    42. ports:
    43. - "9092"
    44. depends_on:
    45. - zookeeper
    46. environment:
    47. HOSTNAME_COMMAND: "route -n | awk '/UG[ \t]/{print $$2}'"
    48. KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    49. volumes:
    50. - /var/run/docker.sock:/var/run/docker.sock
    51. elasticsearch:
    52. image: elasticsearch:6.7.0
    53. environment:
    54. - cluster.name=docker-cluster
    55. - bootstrap.memory_lock=true
    56. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    57. - discovery.type=single-node
    58. ports:
    59. - "9200:9200"
    60. - "9300:9300"
    61. ulimits:
    62. memlock:
    63. soft: -1
    64. hard: -1
    65. nofile:
    66. soft: 65536
    67. hard: 65536

    服务构建

    1. cd /share/flink
    2. sudo docker-compose -f docker-compose.yml build --no-cache # 不带缓存构建(只创建镜像,不会启动容器)
    3. sudo docker-compose -f docker-compose.yml up -d # 构建后运行
    4. sudo docker-compose -f docker-compose.yml up --build # 跟踪方式构建,可用于调试
    5. sudo docker-compose -f docker-compose.yml stop # 停止
    6. sudo docker-compose -f docker-compose.yml down # 移除

    验证

    1. cd /share/flink
    2. # 查看进程
    3. sudo docker-compose -f docker-compose.yml ps
    4. # 进入Flink SQL Client
    5. sudo docker-compose exec sql-client ./sql-client.sh
    6. # jobmanager
    7. sudo docker-compose exec jobmanager /bin/bash
    8. # 批量WordCoun示例
    9. ./bin/flink run examples/batch/WordCount.jar
    10. # 查看日志
    11. sudo docker logs flink
    12. sudo docker logs -f -t --tail=50 flink
    13. # 查看网络
    14. sudo docker network ls
    15. sudo docker inspect flink

    参考

    语雀:Flink SQL训练环境搭建
    https://www.yuque.com/studys/gk4weq/rh1ldu