草庐IT

hadoop - Spring Yarn @OnContainerStart - 如何调用 Mapper?

我正在将SpringYarn包与SpringBoot一起使用,我正在尝试弄清楚如何从@OnContainerStart事件中启动Mapper。我如何将参数传递给映射器?我如何配置要使用的映射器/缩减器?我正在尝试关注thisguide谢谢 最佳答案 我相信您正在尝试创建一个简单的ApacheHadoopMapReduce应用程序,而SpringYARN并不适用于此。要使用Spring开发MapReduce作业,您可以查看我们的引用文档,可以从SpringforApacheHadoop找到它。SpringYARN是一个开发应用程序的框

hadoop - Mapper 和 Reduce 上的依赖注入(inject)

我想在我的mapper和reduce函数中注入(inject)一个类。有什么方法可以用来传递对象的实例并在mapper/reduce内部获得相同的实例吗?可能使用配置... 最佳答案 如果您使用guice,那很容易。否则我认为您可能不走运,因为hadoop使用反射来构建映射器和缩减器。Mapper和Reducer类有一个空的setup()方法;这是我注入(inject)依赖项的地方。/***Calledonceatthebeginningofthetask.*/protectedvoidsetup(Contextcontext)th

java - Hadoop 中 Mapper 的输入赋值

我的问题是,MapReduce框架(例如Hadoop实现)是在映射器作业开始之前为映射器分配输入还是在运行时完成?也就是说,假设我有一些输入i,和机器m_1,m_2..m_k。机器不需要同等功率,有些机器可能比其他机器具有更好的性能(CPU、内存)。如果主节点将输入拆分到映射器直到映射器任务开始,或者至少将输入分配给特定的映射器节点,则可能存在某些机器(更强的机器)可以完成其工作并等待的情况。但是,如果拆分作业在运行时完成,则不会出现此问题。如果你也指出MapReduce在preMapper阶段的整体拆分机制,我会很高兴。 最佳答案

java - Hadoop 作业制定,将 ArrayList<String> 传递给 Mapper()

尝试制定一个不同于普通字数统计示例的Hadoop作业。我的输入数据是以下形式:makePush,1964makePush,459makePush,357opAdd,2151opAdd,257opStop,135我想将它们传递给Mapper(),然后传递给Reducer()函数,但我在规范方面遇到了问题,即Mapper那么,例如,opAdd将是一个KEYIN,而257将是一个VALUEIN。随后,所有opAdd的总和将是一个KEYOUT,相关数字的总和将是VALUEOUT,这很合理,不是吗?但是,如何以编程方式实现呢?在我看来,它在理论上与字数统计示例并没有太大不同。

java - Configuration.set 可以在 Mapper 中使用吗?

我正在尝试将一些数据从Mapper保存到Job/Main,以便我可以在其他作业中使用它。我尝试在我的主类(包含主函数)中使用静态变量,但是当映射器将数据添加到静态变量并且我尝试在作业完成时打印该变量时,我发现没有新的数据,就像Mapper修改了该静态变量的另一个实例。现在我正在尝试使用配置来设置来自映射器的数据:映射器context.getConfiguration().set("3","somedata");主要booleanstep1Completed=step1.waitForCompletion(true);System.out.println(step1.getConfigu

hadoop - 如何从 Mapper Hadoop 设置系统环境变量?

线下的问题已经解决了,但是我又遇到了一个问题。我正在这样做:DistributedCache.createSymlink(job.getConfiguration());DistributedCache.addCacheFile(newURI("hdfs:/user/hadoop/harsh/libnative1.so"),conf.getConfiguration());在映射器中:System.loadLibrary("libnative1.so");(我也试过System.loadLibrary("libnative1");System.loadLibrary("native1"

hadoop - Mapper 或 Reducer Task 中未处理的异常会使任务失败?

我想知道mapper任务(或reducer任务)中未处理的异常是否会使任务失败,或者仅忽略时间的特定输入对?我想是前者,但不太确定。 最佳答案 这取决于错误。无论哪种方式,我总是强调用try-catchblock包装map和减少逻辑。出现错误时,我递增一个计数器,其名称派生自异常类名。这不仅可以保护hadoop的其余部分免受逻辑错误的影响,还可以让您仅通过查看日志就知道出了多少问题。 关于hadoop-Mapper或ReducerTask中未处理的异常会使任务失败?,我们在StackOv

java - 传递给 Mapper 函数(setup、map、run、cleanup)的 Context 是否始终相同?

传递给设置、映射、运行、清理的上下文是否相同映射器?会不会有不一样的情况?能否将上下文作为设置中的成员字段?Mapper 最佳答案 是的,在相同映射器中,它是setup()中的同一个上下文对象。,map()和cleanup().如您所见,这些方法是从run()中调用的,该方法如下所示:publicvoidrun(Contextcontext)throwsIOException,InterruptedException{setup(context);while(context.nextKeyValue()){map(context.g

java - MapReduce 程序不在 main 和 mapper 之间共享字符串变量

我正在编写一个mapreduce程序,其中必须在Mapper类中共享在Main方法中创建的字符串。这是使用新的mapreduceapi。我正确编码并在main方法中使用配置设置变量,如下所示。Configurationconf=newConfiguration();Jobjob=newJob(conf);SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMddHHmmsss");Stringdate=sdf.format(newDate());StringImagesDir="/user/srini/images/"+date;conf.set

hadoop - mapper和reducer类是否需要部署在一个Hadoop集群的所有节点上

是否需要将包含我的Mapper/Reducer类的jar文件部署到所有运行Hadoop的节点上?还是只在主节点(NameNode)上? 最佳答案 简短回答:否。开始MapReduce作业的节点/网关机器。您需要将主要的MapReduceDriverjar放入本地文件系统,所有依赖jar都可以放入本地文件系统或HDFS小路。因此,当您开始作业时,您将使用-libjars参数传递依赖库jar路径。HDFSjar将在HDFS中的路径中包含hdfs://前缀。本地系统上需要主MapReducejar才能启动mapreduce作业,这实际上是