草庐IT

hadoop - JVM 重用 MapReduce 2.0 YARN

coder 2024-01-06 原文

我有大量由小文件创建的输入拆分(大约 50,000 个),我想使用 Hadoop 处理这些拆分。但是,我只有 256 个容器可用于处理它。

作业本身使用大量 CPU,但使用相当少的内存。

我正在使用 Hadoop 2.3 并查看了 MapReduce 1.0 中的 JVM 重用功能

我也读过关于 uber tasks 的内容,但它看起来不是一回事 - 或者我对 JVM 重用有不同的理解。

由于我有很多小文件(并且正在为每个文件生成一个 inputSplit),我想为每个容器创建一个 JVM 机器,并为每个已分配的 JVM 运行尽可能多的顺序映射任务。这将减少 JVM 分配时间的开销。

我想对于每个输入拆分都会分配一个新的映射器,从而分配一个新的 JVM,对吗?

我如何在 YARN 中做这样的事情?

哦,我知道我也可以使用压缩来增加 inputSplit 的大小,但是对于这个确切的应用程序,这是不可行的。

最好的问候, 马可洛兹

最佳答案

是的。在 yarn 中,任务在专用的 JVM 中运行。并且与 mapreduce 1 不同,它不支持 JVM 重用。

但是在 mapreduce 1 中,控制任务 JVM 重用的属性是 mapred.job.reuse.jvm.num.tasks。它 指定每个启动的 JVM 的给定作业要运行的最大任务数,默认情况下为 1This answer应该让您更好地了解 1 中的 JVM 重用。

关于hadoop - JVM 重用 MapReduce 2.0 YARN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24835361/

有关hadoop - JVM 重用 MapReduce 2.0 YARN的更多相关文章

  1. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  2. ruby-on-rails - 在 Rails 中分配和重用变量 - 设计模式 - 2

    我一直在使用相同的模式来返回json代码(参见下面的示例)。我正在收集照片并将其存储在变量中。如果存在标记参数,我将获得一个更具体的集合并将其重新分配给同一个变量。然后将其作为json返回。什么是更好的设计模式来实现同样的事情?photos=collection_of_photosifparams[:tag]photos=photos.find_all{|photo|somecondition}endrenderjson:photos 最佳答案 如果照片是ActiveRecord对象,您应该使用scope为您需要的确切数据生成适当的

  3. 大数据之Hadoop数据仓库Hive - 2

    目录:一、简介二、HQL的执行流程三、索引四、索引案例五、Hive常用DDL操作六、Hive常用DML操作七、查询结果插入到表八、更新和删除操作九、查询结果写出到文件系统十、HiveCLI和Beeline命令行的基本使用十一、Hive配置一、简介Hive是一个构建在Hadoop之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类SQL查询功能,用于查询的SQL语句会被转化为MapReduce作业,然后提交到Hadoop上运行。特点:简单、容易上手(提供了类似sql的查询语言hql),使得精通sql但是不了解Java编程的人也能很好地进行大数据分析;灵活性高,可以自定义用户函数(UDF)和

  4. ruby-on-rails - 在多个 Rails 模型中重用方法 - 2

    此处为初学者ruby​​/rails问题。我有一个方法,我目前正在我的“用户”模型中使用。defgenerate_token(列)开始self[列]=SecureRandom.urlsafe_base64在User.exists时结束?(列=>self[列])结束我想在不同的模型中重复使用相同的方法,比如我的帐户模型。在哪里放置这样的代码以便在模型之间共享是个好地方?另外,为了获得调用类,我是否只使用“self.class”?谢谢 最佳答案 Rails4关注点就是为了完成这项工作。http://api.rubyonrails.org

  5. ruby-on-rails - Ruby On Rails - 重用错误消息部分 View - 2

    问题我试图在我的View中重用错误消息block。下面是positions/_error_messages.html.erb中写的blockTheformcontains.*问题是我必须在每个模型中创建类似的部分View,这有点像用不同的对象重复相同的代码,即@user、@client等。补救措施我在共享文件夹shared/_error_messages.html.erb中创建了一个erb并编写了以下代码。Theformcontains.*然后在查看文件中。positions/new.html.erb我写了下面的代码这意味着现在我可以在所有创建和更新操作中使用相同的代码。我想知道,这样

  6. ruby - 不同 Ruby 项目之间代码重用的最佳实践是什么? - 2

    伙计们!我是一名具有Java背景的软件开发人员,我正在使用Ruby网络框架(Padrino/Sinatra)开始一些项目。在我的java项目中,我通常有一些“公共(public)”项目,其类在多个项目中使用。例如,我有一个中央身份验证服务和一个存储用户配置文件的共享数据库。我所有使用此服务的项目都共享一些映射到用户配置文件数据库的模型。那么,尽管有框架、orm库等,跨多个Ruby项目共享代码的最佳方式是什么? 最佳答案 除此之外,ruby'sgems是重用代码公共(public)部分的最佳方式之一。Gem具有名称、版本号和描述,因此

  7. Ubuntu下Hadoop的单机安装 - 2

            云计算实验中要求我们在Linux系统安装Hadoop,故来做一个简单的记录。· 注:我的操作系统环境是Ubuntu-20.04.3,安装的JDK版本为jdk1.8.0_301,安装的Hadoop版本为hadoop2.7.1。(不确定其他版本是否会出现版本兼容问题)Hadoop安装步骤如下:        一、更新apt和安装vim编辑器        二、配置本机无密码登录SSH        三、安装JAVA环境        四、下载安装Hadoop        五、伪分布式搭建一、更新apt和安装vim编辑器1、更新aptsudoapt-getupdate2、安装vim

  8. flink on yarn - 2

    文章目录使用flinksqlclientonyarnsession模式Per-JobCluster模式flinkrunflinkrunapplication-tyarn-application配置任务退出时保留Checkpoint从外部checkpoint恢复应用资料使用安装完hadoop3.3.4之后,启动hadoop、yarn将flink1.14.6上传到各个服务器节点,解压flinksqlclientonyarnhttps://nightlies.apache.org/flink/flink-docs-release-1.15/docs/deployment/overview/Appli

  9. ruby - yarn 未初始化常量 Socket::SOL_TCP - 2

    我在这里尝试使用yarn,遇到了一个可能与ruby​​相关的问题。在执行任何yarn命令,我收到错误.../.rvm/gems/ruby-2.3.0/gems/yarn-0.1.1/lib/yarn/server.rb:14:in':uninitializedconstantSocket::SOL_TCP(NameError)错误堆栈:$yarn.../.rvm/gems/ruby-2.3.0/gems/yarn-0.1.1/lib/yarn/server.rb:14:in':uninitializedconstantSocket::SOL_TCP(NameError)Didyoume

  10. ruby-on-rails - Phusion Passenger 如何重用线程和进程? - 2

    我正在设置一个Apache2网络服务器,使用PhusionPassenger运行多个RubyonRails网络应用程序。我知道Passenger生成Ruby进程来处理请求。我有以下问题:如果必须同时处理多个请求,Passenger会生成多个进程还是多个(Ruby)线程?如何配置它以使其始终生成单线程进程?如果我有两个Rails应用程序,假设对应用程序A的请求进入进程1,然后对应用程序B的请求到达。进程1是否也可能处理此请求?什么时候以及如何做到这一点?换句话说,是否允许一个进程处理多个Rails应用程序的请求?我在多个URL和多个虚拟主机(例如http://和https://)中导出了

随机推荐