暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SeaTunnel Kubernetes 快速创建指南

SeaTunnel 2022-07-19
3132

   点亮 ⭐️ Star · 照亮开源之路


GitHub:https://github.com/apache/incubator-seatunnel


作者 | Gezim Sejdiu,SeaTunnel contributor

这篇文章提供了将 SeaTunnel 与 Kubernetes 结合使用的快速指南。
  • 前期准备
  • 安装
    • SeaTunnel Docker 镜像
    • 部署 Flink 算子
  • 运行 SeaTunnel 应用程序

前期准备


需要提前在本地安装:
  • Docker
  • Kubernetes
  • helm
这样 kubectl 和 helm 命令在您的本地系统上可用。

对于 kubernetes,我们可以选择 minikube,本文中使用的是 v1.23.3 版本。您可以使用以下命令启动集群:

    minikube 启动 --kubernetes-version=v1.23.3

    安装


    SeaTunnel Docker 镜像

    DS


    要使用 SeaTunnel 运行镜像,首先创建一个 Dockerfile:

      FROM flink:1.13


      ENV SEATUNNEL_VERSION="2.1.0"


      RUN wget https://archive.apache.org/dist/incubator/seatunnel/${SEATUNNEL_VERSION}/apache-seatunnel-incubating-${SEATUNNEL_VERSION}-bin.tar.gz
      RUN tar -xzvf apache-seatunnel-incubating-${SEATUNNEL_VERSION}-bin.tar.gz


      RUN mkdir -p $FLINK_HOME/usrlib
      RUN cp apache-seatunnel-incubating-${SEATUNNEL_VERSION}/lib/seatunnel-core-flink.jar $FLINK_HOME/usrlib/seatunnel-core-flink.jar


      RUN rm -fr apache-seatunnel-incubating-${SEATUNNEL_VERSION}*

      之后运行以下命令来构建镜像:
        docker build -t seatunnel:2.1.0-flink-1.13 -f Dockerfile
        主机 (minikube) 中需要有镜像 seatunnel:2.1.0-flink-1.13 来进行部署。

        通过以下方式将镜像加载到 minikube:

          minikube image load seatunnel:2.1.0-flink-1.13

          部署 Flink 算子

          DS


          以下步骤演示了如何设置 Flink Kubernetes 算子。

          在您的 Kubernetes 集群上安装证书管理器以启用添加 webhook 组件(每个 Kubernetes 集群只需要安装一次):

            kubectl create -f https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.yaml
            现在,您可以使用 Helm 图表部署最新的稳定 Flink Kubernetes Operator 版本:
              helm repo add flink-operator-repo https://downloads.apache.org/flink/flink-kubernetes-operator-0.1.0/


              helm install flink-kubernetes-operator flink-operator-repo/flink-kubernetes-operator

              您可以通过 kubectl 验证您的安装:
                kubectl get pods
                NAME READY STATUS RESTARTS AGE
                flink-kubernetes-operator-5f466b8549-mgchb             1/1     Running   3 (23h ago)   16d

                运行 SeaTunnel 应用程序


                运行应用程序:SeaTunnel 已经提供了开箱即用的配置(https://github.com/apache/incubator-seatunnel/tree/dev/config)。

                在本指南中,我们将使用 flink.streaming.conf:
                  env {
                  execution.parallelism = 1
                  }


                  source {
                  FakeSourceStream {
                  result_table_name = "fake"
                  field_name = "name,age"
                  }
                  }


                  transform {
                  sql {
                  sql = "select name,age from fake"
                  }
                  }


                  sink {
                  ConsoleSink {}
                  }

                  当我们要将应用程序(SeaTunnel)部署到 Flink 集群(在 Kubernetes 上)时,需要进行此配置,还需要配置 Pod 以使用 PersistentVolume 进行存储。

                  • 在您的节点上创建 mnt/data。打开集群中单个节点的 shell。如何打开 shell 取决于您设置集群的方式。例如,本例中我们使用 Minikube,您可以通过输入 minikube ssh 在节点打开一个 shell。在该节点上的 shell 中,创建一个 mnt/data 目录:
                    minikube ssh


                    # This assumes that your Node uses "sudo" to run commands as the superusersudo mkdir mnt/data
                    将应用程序 (SeaTunnel) 配置文件复制到您的节点。
                      minikube cp flink.streaming.conf mnt/data/flink.streaming.conf
                      当 Flink Kubernetes Operator 如前所述步骤运行,您就可以提交 Flink (SeaTunnel ) 作业了:

                      • 创建 seatunnel-flink.yaml FlinkDeployment 清单:
                        apiVersion: flink.apache.org/v1alpha1
                        kind: FlinkDeployment
                        metadata:
                        namespace: default
                        name: seatunnel-flink-streaming-example
                        spec:
                        image: seatunnel:2.1.0-flink-1.13
                        flinkVersion: v1_14
                        flinkConfiguration:
                        taskmanager.numberOfTaskSlots: "2"
                        serviceAccount: flink
                        jobManager:
                        replicas: 1
                        resource:
                        memory: "2048m"
                        cpu: 1
                        taskManager:
                        resource:
                        memory: "2048m"
                        cpu: 2
                        podTemplate:
                        spec:
                        containers:
                        - name: flink-main-container
                        volumeMounts:
                        - mountPath: data
                        name: config-volume
                        volumes:
                        - name: config-volume
                        hostPath:
                        path: "/mnt/data"
                        type: Directory


                        job:
                        jarURI: local:///opt/flink/usrlib/seatunnel-core-flink.jar
                        entryClass: org.apache.seatunnel.SeatunnelFlink
                        args: ["--config", "/data/flink.streaming.conf"]
                        parallelism: 2
                        upgradeMode: stateless
                        • 运行示例应用程序:
                        kubectl apply -f seatunnel-flink.yaml

                        查看输出

                        DS


                        您可以查看工作日志,在成功启动后(在新环境中初次启动可能需要大约一分钟,之后只需几秒钟),您可以:
                          kubectl port-forward svc/seatunnel-flink-streaming-example-rest 8081
                          Flink Dashboard 在 localhost:8081 可以找到。

                          或者登录 minikube dashboard 查看基于 Web 的 Kubernetes 用户界面。

                          TaskManager Stdout 日志中打印的内容:
                            kubectl logs \
                            -l 'app in (seatunnel-flink-streaming-example), component in (taskmanager)' \
                            --tail=-1 \
                            -f
                            如下所示(内容可能会有所不同,因为我们使用 FakeSourceStream 自动生成随机流数据):
                              +I[Kid Xiong, 1650316786086]
                              +I[Ricky Huo, 1650316787089]
                              +I[Ricky Huo, 1650316788089]
                              +I[Ricky Huo, 1650316789090]
                              +I[Kid Xiong, 1650316790090]
                              +I[Kid Xiong, 1650316791091]
                              +I[Kid Xiong, 1650316792092]
                              想要停止你的 job 并删除 FlinkDeployment,只需:
                                kubectl delete -f seatunnel-flink.yaml

                                活动推荐

                                7月24日 14:00,Apache Doris和Apache SeaTunnel(incubating) 两个社区强强联手,将在本月联合举办线上 Meetup 活动。本次活动为「数据集成及数据分析开发实践」专场,我们邀请到了来自小米、白鲸开源、SelectDB、Dinky 等企业和社区的 5 位技术大咖,针对不同场景应用进行深度解读和实践经验分享!

                                值得一提的是, Apache Doris 从 Apache 软件基金会(ASF)毕业后,这次联合技术活动是 Doris 的毕业首秀,值得期待!


                                点击链接/扫码预约/点击阅读原文报名(免费):

                                https://www.slidestalk.com/m/996/stgongzhonghao


                                扫码预约直播

                                扫码进入群聊


                                Apache SeaTunnel


                                //  保持联络 //

                                微信号 : Seatunnel

                                来,和社区一同成长!


                                Apache SeaTunnel(Incubating) 是一个分布式、高性能、易扩展、用于海量数据(离线&实时)同步和转化的数据集成平台。

                                仓库地址: 
                                https://github.com/apache/incubator-seatunnel

                                网址:
                                https://seatunnel.apache.org/

                                Proposal:
                                https://cwiki.apache.org/confluence/display/INCUBATOR/SeaTunnelProposal

                                Apache SeaTunnel(Incubating) 2.1.0 下载地址:
                                https://seatunnel.apache.org/download
                                 
                                衷心欢迎更多人加入!

                                能够进入 Apache 孵化器,SeaTunnel(原 Waterdrop) 新的路程才刚刚开始,但社区的发展壮大需要更多人的加入。我们相信,在「Community Over Code」(社区大于代码)、「Open and Cooperation」(开放协作)、「Meritocracy」(精英管理)、以及「多样性与共识决策」等 The Apache Way 的指引下,我们将迎来更加多元化和包容的社区生态,共建开源精神带来的技术进步!

                                我们诚邀各位有志于让本土开源立足全球的伙伴加入 SeaTunnel 贡献者大家庭,一起共建开源!

                                提交问题和建议:
                                https://github.com/apache/incubator-seatunnel/issues

                                贡献代码:
                                https://github.com/apache/incubator-seatunnel/pulls

                                订阅社区开发邮件列表 : 
                                dev-subscribe@seatunnel.apache.org

                                开发邮件列表:
                                dev@seatunnel.apache.org

                                加入 Slack:
                                https://join.slack.com/t/apacheseatunnel/shared_invite/zt-1cmonqu2q-ljomD6bY1PQ~oOzfbxxXWQ

                                关注 Twitter: 
                                https://twitter.com/ASFSeaTunnel

                                往期推荐




                                点击阅读原文,免费报名

                                文章转载自SeaTunnel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                评论