草庐IT

java - Hadoop - 在作业配置中设置自定义 jdk 路径/版本

我有一个需要JDK1.8的mapreducejar文件和一个安装并配置了JDK1.7的Hadoop集群。是否可以在不更改Hadoop配置(即不更改hadoop-env.sh)的情况下运行我的jar?所有Hadoop节点也可以访问JDK1.8,我可以轻松地将JAVA_HOME更改为指向JDK1.8,但如果不更改Hadoop环境变量,这似乎没有任何效果。我已经看了submittingHadoopjobwithProcessBuilder和runningmapreducejobfromsimpleJavaprogram但不清楚如何处理您通常拥有的作业配置。例如,我正在使用它来运行我的Hado

python - Hadoop 模式下的 Mrjob : Error launching job , 输入路径错误:文件不存在

我正在尝试运行Mrjobexample来self笔记本电脑上的HadoopwithPython一书,采用伪分布式模式。(文件salaries.csv可以找到here)所以我可以启动名称节点和数据节点:start-dfs.sh返回:Startingnamenodeson[localhost]localhost:startingnamenode,loggingto/home/me/hadoop-2.7.3/logs/hadoop-me-namenode-me-Notebook-PC.outlocalhost:startingdatanode,loggingto/home/me/hadoop

当文件格式为自定义格式时,Hadoop MultipleOutputs 不会写入多个文件

我正在尝试从cassandra中读取并使用MultipleOutputsapi(Hadoop版本1.0.3)将reducers输出写入多个输出文件。在我的案例中,文件格式是扩展FileOutputFormat的自定义输出格式。我已按照MultipleOutputsapi中所示的类似方式配置了我的作业.但是,当我运行作业时,我只得到一个名为part-r-0000的输出文件,它是文本输出格式。如果未设置job.setOutputFormatClass(),默认情况下它会将TextOutputFormat视为格式。此外,它只允许初始化两个格式类之一。它完全忽略了我在MulitpleOutpu

java - 从另一个 Java 程序运行 Hadoop 作业

我正在编写一个程序来接收映射器/缩减器的源代码,动态编译映射器/缩减器并从中生成一个JAR文件。然后它必须在hadoop集群上运行这个JAR文件。对于最后一部分,我通过我的代码动态设置了所有必需的参数。但是,我现在面临的问题是代码在编译时需要编译的mapper和reducer类。但是在编译时,我没有这些类,它们稍后会在运行时接收(例如,通过从远程节点接收到的消息)。如果有任何关于如何解决此问题的想法/建议,我将不胜感激?在下面,您可以找到我最后一部分的代码,问题在于job.setMapperClass(Mapper_Class.class)和job.setReducerClass(Re

java - 无法在 Oozie java 操作中设置 mapred.job.queue.name

我有一个运行紧迫作业的应用程序。我正在尝试将Oozie配置为使用Java操作运行此作业。我的操作如下,${jobTracker}${nameNode}mapred.job.queue.namelaunchercom.test.Main-Dmapred.output.compress=false-Dmapred.textoutputformat.separator=,-Dcrunch.disable.output.counters=trueActionfailed,errormessage[${wf:errorMessage(wf:lastErrorNode())}]但每次我运行Oozi

【Flink系列二】如何计算Job并行度及slots数量

接上文的问题并行的任务,需要占用多少slot?一个流处理程序,需要包含多少个任务首先明确一下概念slot:TM上分配资源的最小单元,它代表的是资源(比如1G内存,而非线程的概念,好多人把slot类比成线程,是不恰当的)任务(task):线程调度的最小单元,和java中的类似。---------------------------------------------------------------------------为更好的去理解后面如何计算并行度及需要的slots数量,先介绍一下几个概念并行度(Parallelism)图1 一个特定算子的子任务(subtask)的个数被称之为并行度(p

java - Hadoop,运行任务

如何以编程方式将任务添加到hadoop并在我的Java应用程序中运行?有任何想法吗?谢谢。 最佳答案 在Java中这很容易:Configurationconf=newConfiguration();Jobjob=newJob(conf);job.setJarByClass(YOUR_MAPPER.class);job.setMapperClass(YOUR_MAPPER.class);job.setReducerClass(YOUR_REDUCER.class);job.setOutputKeyClass(YOUR_OUTPUT_K

java - 一个作业更新另一个作业输出的最佳方式

这是我的场景。我有一份处理大量csv数据并使用Avro将其写出到按日期划分的文件中的工作。我得到了一个小文件,我想用它来更新其中一些文件和第二个作业的附加条目我可以在需要发生时运行,而不是再次重新处理整个数据集。这个想法大概是这样的:工作1:处理大量csv数据,将其写入压缩的Avro文件中,按输入日期拆分为多个文件。源数据未按日期划分,因此此作业将执行此操作。Job2(在Job1运行之间根据需要运行):处理小更新文件并使用它来将条目添加到适当的Avro文件中。如果它不存在,则创建一个新文件。Job3(始终运行):根据Job1(可能还有Job2)的输出生成一些报告指标。因此,我必须以这种

java - 链接两个作业时 hadoop.mapreduce.lib.input.FileInputFormat.getBlockIndex 中的 NullPointerException

我正在尝试构建倒排索引。我链接了两个作业。基本上,第一个作业解析输入并对其进行清理,并将结果存储在文件夹“output”中,该文件夹是第二个作业的输入文件夹。第二个工作应该实际构建倒排索引。当我刚找到第一份工作时,它工作得很好(至少,没有异常(exception))。我像这样链接两个作业:publicclassMain{publicstaticvoidmain(String[]args)throwsException{StringinputPath=args[0];StringoutputPath=args[1];StringstopWordsPath=args[2];Stringfi

hadoop - 如何在两个 map reduce 作业之间传递变量

我链接了两个Mapreduce作业。Job1将只有一个reducer,我正在计算一个浮点值。我想在Job2的reducer中使用这个值。这是我的主要方法设置。publicstaticStringGlobalVriable;publicstaticvoidmain(String[]args)throwsException{intruns=0;for(;runs{publicvoidreduce(Textkey,Iterablevalues,Contextcontext)throwsIOException,InterruptedException{floats=0;for(FloatWri