写点什么

新的 Dataproc 可选组件支持 Apache Flink 和 Docker

Roderick Yao

  • 2020-11-03
  • 本文字数:2445 字

    阅读完需:约 8 分钟

新的 Dataproc 可选组件支持 Apache Flink 和 Docker

Google Cloud 的 Dataproc 让您能够以更简便、更经济的方式来基于 Google Cloud 运行原生 Apache Spark 和 Hadoop 集群。在本文中,我们将介绍在 Dataproc 的 Component Exchange 中提供的最新可选组件:Docker 和 Apache Flink。

Dataproc 中的 Docker 容器

Docker 是一种广泛使用的容器技术。由于它现在是 Dataproc 可选组件,Docker 守护进程 (daemon) 现在可被安装到 Dataproc 集群的每个节点。这将使您能够安装容器化应用程序,并且在集群中轻松地与 Hadoop 集群交互。


此外,Docker 对于支持以下这些功能也至关重要:


1.通过 YARN 运行容器


2.可移植 Apache Beam 作业


在 YARN 中运行容器使您能够单独管理您的 YARN 应用程序的依赖性,并且允许您在 YARN 中创建容器化的服务。可移植 Apache Beam 将作业打包到 Docker 容器,并将其提交至 Flink 集群。了解有关 Beam 可移植性的更多信息


除了默认的 Docker registry,还可对 Docker 可选组件进行配置以使用 Google Container Registry。这使您能够使用由您的组织管理的容器镜像。


以下是利用 Docker 可选组件创建 Dataproc 集群的示例:


gcloud beta dataproc clusters create <cluster-name> \  --optional-components=DOCKER \  --image-version=1.5
复制代码


当您运行 Docker 应用程序时,使用 gcplogs 驱动程序,日志将被传至 Cloud Logging。


如果您的应用程序不依赖任何 Hadoop 服务,核实 Kubernetes 和 Google Kubernetes Engine 是否以原生方式运行容器。要了解有关 Dataproc 使用的更多信息,请参阅我们的相关文档

基于 Dataproc 的 Apache Flink

在流分析技术中,Apache Beam 和 Apache Flink 更加出色。Apache Flink 是一个基于有状态计算的分布式处理引擎。Apache Beam 是定义批处理和流处理管道的统一模式。使用 Apache Flink 作为扩展引擎,除了 Google 的 Cloud Dataflow 服务,您还可以在 Dataproc 中运行 Apache Beam 作业。


Flink 以及在 Flink 中运行 Beam 适合大规模连续作业,可提供:


  • 支持批处理和数据流程序的流优先运行环境

  • 同时支持非常高的吞吐量和低事件延迟的运行环境

  • 具有精确单次处理保证的容错

  • 流程序中的自然背压 (back-pressure)

  • 自定义内存管理以实现在内存和核外数据处理算法之间高效、稳健的切换

  • 与 YARN 以及 Apache Hadoop 生态系统的其他组件集成


Google Cloud 的 Dataproc 团队最近宣布 Flink Operator on Kubernetes 现已可用。它允许您在 Kubernetes 中运行 Apache Flink 作业,具有减少平台依赖性和产生更好的硬件效率的优势。


基本 Flink 概念


Flink 集群包括 Flink JobManager 以及一组 Flink TaskManager。与 YARN 之类的其他分布式系统中的类似角色相似,JobManager 的“责任”包括接受作业、管理资源以及监控作业等。TaskManager 负责运行实际任务。


在 Dataproc 中运行 Flink 作业时,我们将 YARN 用作 Flink 的资源管理器。您可以以两种方式运行 Flink 作业:作业集群和会话集群。对于作业集群,YARN 将为作业创建 JobManager 和 TaskManagers,并且将在作业完成时销毁集群。对于会话集群,YARN 将创建 JobManager 和几个 TaskManager。集群可服务多个作业直至被用户关闭。


如何利用 Flink 创建集群


使用以下命令作为开始:


gcloud beta dataproc clusters create <cluster-name> \  --optional-components=FLINK \  --image-version=1.5
复制代码


如何运行 Flink 作业


在带有 Flink 的 Dataproc 集群启动后,您可以使用 Flink 作业集群直接将您的 Flink 作业提交至 YARN。接受作业后,Flink 将在 YARN 中为此作业启动 JobManager 和任务槽。Flink 作业将在 YARN 集群中运行,直至完成。然后,将关闭所创建的 JobManager。作业日志将在常规 YARN 日志中提供。尝试此命令以运行一个字数统计示例:


  HADOOP_CLASSPATH=`hadoop classpath` flink run -m yarn-cluster /usr/lib/flink/examples/batch/WordCount.jar
复制代码


默认情况下,Dataproc 集群将不启动 Flink 会话集群。相反,Dataproc 将创建脚本“/usr/bin/flink-yarn-daemon”,该脚本将启动 Flink 会话。


如果您要在 Dataproc 创建时启动 Flink 会话,使用 metadata 关键词来允许启动:


  gcloud dataproc clusters create <cluster-name> \  --optional-components=FLINK \   --image-version=1.5 \  --metadata flink-start-yarn-session=true
复制代码


如果您要在 Dataproc 创建后启动 Flink 会话,可在主节点运行下列命令:


  $ . /usr/bin/flink-yarn-daemon
复制代码


向该会话集群提交作业。您需要获得 Flink JobManager URL:


  HADOOP_CLASSPATH=`hadoop classpath` flink run -m <JOB_MANAGER_HOSTNAME>:<REST_API_PORT> /usr/lib/flink/examples/batch/WordCount.jar
复制代码


如何运行 Java Beam 作业


运行以 Java 编写的 Apache Beam 作业非常简单。无需额外的配置。只要您将 Beam 作业打包为 JAR 文件,不需要进行任何配置即可在 Flink 中运行 Beam。以下是您可以使用的命令:


 $ mvn package -Pflink-runner$ bin/flink run -c org.apache.beam.examples.WordCount /path/to/your.jar--runner=FlinkRunner --other-parameters
复制代码


如何运行以 Python 编写的 Python Beam 作业


以 Python 编写的 Beam 作业使用不同的执行模式。要基于 Dataproc 在 Flink 中运行它们,您还需要启用 Docker 可选组件。以下是创建集群的示例:


  gcloud dataproc clusters create <cluster-name> \  --optional-components=FLINK,DOCKER
复制代码


您还需要安装 Beam 所必需的 Python 库,例如,apache_beam 和 apache_beam[gcp]。您可以传递一个 Flink 主 URL,让它在会话集群中运行。如果您未传递 URL,需要使用作业集群模式来运行此作业:


  import apache_beam as beamfrom apache_beam.options.pipeline_options import PipelineOptionsoptions = PipelineOptions([  "--runner=FlinkRunner",  "--flink_version=1.9",  "--flink_master=localhost:8081",  "--environment_type=DOCKER"])with beam.Pipeline(options=options) as p:  ...
复制代码


编写 Python 作业后,只需运行它以提交:


  $ python wordcount.py
复制代码


2020-11-03 14:10892

评论

发布
暂无评论
发现更多内容

《操作系统实战 45 讲》笔记1——引导部分

袁世超

操作系统 Cosmos LMOS

那些把爱好当事业的人,最后怎么样了?

最新动态

软件测试 |Object类 - 匿名内部类

测吧(北京)科技有限公司

测试

直播弹幕源码开发很难?一招教你解决

山东布谷网络科技

直播源码

TypeChat入门指南:从安装到对话流程设计

星辰编程理财

typescript typechat

网络加速与文件传输软件:如何通过优化网络提升文件传输速度

镭速

文件传输 文件传输软件

第五期(2022-2023)传统行业云原生技术落地调研报告——央国企篇

York

容器 云原生 IT 平台工程 央国企数字化转型

所谓的职场抗压,到底咋回事

老张

职场经验

基于SDK方式的小程序监控

郑州埃文科技

网络性能

对线面试官 - TCP_IP四层网络模型经典连环问

派大星

TCP/IP Java 面试题

小灯塔系列-中小企业数字化转型系列研究-BPM测评报告

向量智库

BeanDefinition解密:构建和管理Spring Beans的基石

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

明道云联合EMQ基于IIoT场景技术白皮书

明道云

软件测试 | 什么是安全测试

测吧(北京)科技有限公司

测试

流计算 Oceanus 操作效率提升指南(一)

腾讯云大数据

流计算 Oceanus

大环境下,企业如何找到大数据传输解决方案

镭速

大数据传输

网易云信回声消除量化评估方法

网易智企

回声消除 音视频通话

软件测试 | Object类-接收任意引用类型的对象

测吧(北京)科技有限公司

测试

网易云信回声消除量化评估方法

网易云信

回声消除 音视频技术

数据库运维是什么意思?主要工作包含哪些?

行云管家

数据库 数据库运维 IT运维

岳阳等保测评机构有几家?在哪里?电话是多少?

行云管家

等级保护 等保测评 岳阳

小灯塔系列-中小企业数字化转型系列研究——费控测评报告

向量智库

打造自己的站长在线工具箱

echeverra

站长工具

从生成式AI到合成式AI ,MarTech下一步如何进化

ToB行业头条

SaaS,PaaS和IaaS:有什么区别,应该使用哪个?

2D3D前端可视化开发

云计算 可视化 IaaS PaaS SaaS

软件测试 | 查看网页的HTML源代码

测吧(北京)科技有限公司

测试

Supersonic 发行平台独家上线“知识中心”,为出海开发者打造游戏智库

科技热闻

大数据传输的定义与大数据传输解决方案的选择

镭速

大数据传输 大数据传输技术

精准测试探索 | 京东云技术团队

京东科技开发者

测试 精准测试 代码覆盖率 企业号 8 月 PK 榜 静态链路

腾讯用数字孪生技术,帮这群中学生打造了第一款应用

科技热闻

软件测试 | 什么是Web应用

测吧(北京)科技有限公司

测试

新的 Dataproc 可选组件支持 Apache Flink 和 Docker_文化 & 方法_InfoQ精选文章