加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java – Hadoop中的流式或定制Jar

发布时间:2020-12-14 14:26:29 所属栏目:Java 来源:网络整理
导读:我在Hadoop(亚马逊的EMR)上运行流媒体作业,并使用 Python编写的mapper和reducer.我想知道如果我在Java(或使用Pig)中实现相同的映射器和还原器,我将会遇到速度提升. 特别是,我正在寻找人们从流式传输到定制jar部署和/或Pig以及包含这些选项的基准比较的文档的
我在Hadoop(亚马逊的EMR)上运行流媒体作业,并使用 Python编写的mapper和reducer.我想知道如果我在Java(或使用Pig)中实现相同的映射器和还原器,我将会遇到速度提升.

特别是,我正在寻找人们从流式传输到定制jar部署和/或Pig以及包含这些选项的基准比较的文档的体验.我发现这个question,但答案对我来说不够具体.我不是在寻找Java和Python之间的比较,而是比较Hadoop中的自定义jar部署和基于Python的流.

我的工作是从Google图书NGG数据集和计算总体测量中读取NGram计数.似乎计算节点上的CPU利用率接近100%. (我想听听您对有限CPU或IO绑定作业的差异的看法).

谢谢!

AMAC

解决方法

为什么要考虑部署定制罐子?

能够使用更强大的自定义输入格式.对于流媒体作业,即使使用可插拔的输入/输出,就像上述here一样,您只能将其作为文本/字符串的映射器/缩减器的键值和值.您将需要花费一些CPU周期来转换为所需类型.
> Ive还听说Hadoop可以很聪明地在多个作业中重复使用JVM,而在流式传输时不可能(无法确认)

何时使用猪?

> Pig Latin是非常酷的,是一个比java / python或perl高得多的数据流语言.您的猪脚本往往比编写任何其他语言的等效任务要小得多

何时不用猪?

>即使猪本身很自然地知道有多少地图/减少和何时产生地图或减少和无数的这样的事情,如果你确定你需要多少地图/减少你有一些非常具体的您在Map / reduce功能中需要执行的计算,并且您对性能非常具体,那么您应该考虑部署自己的jar.这link显示,猪可以滞后本机hadoop M / R的性能.您还可以看看编写自己的Pig UDFs,它分离出一些计算密集型函数(甚至可以使用JNI在UDF内调用一些本机C/C++代码)

有关IO和CPU绑定作业的注意事项:

>从技术上来说,hadoop和map reduce的全部要点是并行化计算密集型函数,所以我认为你的地图和减少作业是计算密集型的.当数据通过网络发送时,Hadoop子系统忙于执行IO的唯一时间在地图之间,并减少相位.而且,如果您拥有大量数据,并且手动配置太少的映射,并减少导致磁盘泄漏(尽管太多的任务会导致启动/停止JVM和太多小文件的时间太多).流作业还将具有启动Python / Perl VM的额外开销,并将数据复制到JVM和脚本VM之间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读