当前位置: 首页 > 知识库问答 >
问题:

Flink Batch:HDFS上的数据本地规划?

夹谷英奕
2023-03-14

我们和Flink玩了一会儿。到目前为止,我们一直在Hadoop2.x/Yarn上使用Spark和标准M/R。

除了YARN上的Flink执行模型,即AFAIK不像spark那样是动态的,执行者动态地获取和释放YARN中的虚核,问题的要点如下。

Flink似乎很神奇:对于流媒体API,我只想说它很棒,太棒了。

不幸的是,这并不是一个小问题,因为在90%的用例中,您在HDFS上有一个大数据分区存储,通常您会执行以下操作:

  • 读取和筛选(例如,只接受失败或成功)
  • 聚合、减少、使用它

第一部分,当在简单的M/R或spark中完成时,总是用“首选本地处理”的习惯用法来规划,这样数据由保存数据块的同一个节点处理,以更快地避免在网络上传输数据。

请分享你的意见,我希望我只是错过了什么,或者可能它已经在一个新的版本。提前感谢任何花时间回答这个问题的人。

共有1个答案

韩英锐
2023-03-14

Flink使用了一种不同于Hadoop和Spark的本地输入拆分处理方法。Hadoop为每个输入分裂创建一个映射任务,该任务最好被调度到承载分裂所引用的数据的节点。

相反,Flink使用固定数量的数据源任务,即数据源任务的数量取决于运算符配置的并行度,而不取决于输入拆分的数量。这些数据源任务在集群中的某个节点上启动,并开始从主服务器(JobManager)请求输入拆分。如果HDFS中的文件有输入拆分,JobManager会用locality首选项来分配输入拆分。因此,可以从HDFS中读取位置感知的数据。但是,如果并行任务的数量远低于HDFS节点的数量,那么将远程读取许多拆分,因为源任务保留在它们启动的节点上,并且一个接一个地读取拆分(本地的先,远程的后)。另外,如果拆分非常小,竞争条件可能会发生,因为第一个数据源任务可能会在其他源任务发出第一个请求之前迅速请求并处理所有拆分。

IIRC中,本地和远程输入拆分分配的数量被写入JobManager日志文件,也可能显示在web仪表板中。这可能有助于进一步调试该问题。如果您发现了一个与我上面解释的不匹配的问题,如果您可以通过用户邮件列表与Flink社区联系,以找出问题所在,那就太好了。

 类似资料:
  • 加载图层        LSV可以实现本地图层的加载,可以通过选择所需加载的矢量或栅格数据即可在场景数据中加入所选图层。 加入的图层所需格式: 栅格类型:tif、lrp、img、dem、adf、idr、grd、hdr、lrc等; 矢量类型:kml、kmz、shp、dxf、dwg、lgd、ldb、tab、mif、vec等; 加载地形        LSV可以实现本地地形的加载,可以通过选择所需加载的

  • 创建图层        LSV中也可自己创建所需要的图层文件(KML(.kml)数据或LSV数据(.lgd)),并在其上进行自己的操作制作,创建图层选项中选择图层文件保存的地址以及为图层文件命名后即可创建成功。 加载图层        LSV可以实现本地图层的加载,可以通过选择所需加载的矢量或栅格数据即可在场景数据中加入所选图层。 加入的图层所需格式: 栅格类型:tif、lrp、img、dem、a

  • Spark 是一个并行数据处理框架,这意味着任务应该在离数据尽可能近的地方执行(既 最少的数据传输)。 检查本地性 检查任务是否在本地运行的最好方式是在 Spark UI 上查看 stage 信息,注意下面截图中的 "Locality Level" 列显示任务运行在哪个地方。 调整本地性配置 你可以调整 Spark 在每个数据本地性阶段(data local --> process local -

  • 本文向大家介绍使用genymotion访问本地上Tomcat上数据的方法,包括了使用genymotion访问本地上Tomcat上数据的方法的使用技巧和注意事项,需要的朋友参考一下 1、首先 当然是启动genymotion 2、然后Tomcat ,启动tomcat。。如图 将请求的URL地址变为10.0.3.2 ,比如在电脑上访问的是http://localhost:8080/ 那么在genymot

  • 问题内容: 是否有使用freebase数据转储创建数据库的任何现有方法,类似于freebase所提供的,但是在您自己的服务器上?相当多的免费库,但不是通过API在本地进行的吗? 我想可以创建,但是已经有解决方案了吗?还是没有使用API​​的类似数据的其他替代解决方案?我也没有为dbpedia找到这个: 问题答案: 看一下Google Code上的freebase-quad-rdfize项目。它应该

  • 我正在尝试开发我的第一个Wordpress插件,为此我想使用wp_localize_脚本发布表单数据,而不刷新页面。问题是我不太了解如何在wp_localize_脚本中设置$data参数。 更多解释: > 1) 我有一个表格,上面有一个数据列表,每个数据列表都有一个复选框。 2)当我点击一个按钮来保存选中的数据时,我试着把它们发布在admin-ajax.php上,但是我不知道如何在我的函数中设置第