草庐IT

java - Hadoop 在命令行上执行时生成空输出文件

Driver.javapackagedriver;importjava.io.IOException;importmapper.NormalMapper;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapred.FileInputFormat;importorg.apache.hadoop.mapred.FileOutputFormat;importorg.apache.hadoop.mapred.JobClient;importorg.apache.ha

hadoop - 如果 Map 插槽跨机架启动,那么 Job Tracker 如何处理数据?

1.当将任务分配给任务跟踪器进行处理时,作业跟踪器首先尝试在具有包含数据的数据节点的同一服务器上找到具有空闲槽的任务跟踪器(以确保数据局部性)2.如果它没有找到这个TaskTracker,它会在跨机架查找TaskTracker之前在同一机架中的另一个节点上寻找TaskTracker。经验法则:处理逻辑只会到达数据进行处理。假设Tasktracker跨机架启动,相应的处理数据不可用,那么在这种情况下,处理逻辑(程序)如何到达数据,而不是数据到达处理逻辑(程序)? 最佳答案 当本地没有数据时,需要通过网络传输。数据局部性不是一个规则(远

hadoop - 通过 spark job 创建 hive 表

我正在尝试在hadoop集群(BigInsight4.1发行版)上创建hive表作为我的spark(1.5.1版)作业的输出,但我面临权限问题。我的猜测是spark使用默认用户(在本例中为“yarn”而不是作业提交者的用户名)来创建表,因此未能这样做。我尝试自定义hive-site.xml文件以设置一个经过身份验证的用户,该用户有权创建配置单元表,但这没有用。我还尝试将Hadoop用户变量设置为经过身份验证的用户,但它也没有用。我想避免保存txt文件然后创建配置单元表以优化性能并通过orc压缩减小输出的大小。我的问题是:有什么方法可以调用sparkdataframeapi的write函

java - Hadoop 不产生任何输出

我有一个使用旧API运行的hadoop作业,我将我的实现移至新API,但在运行它时遇到问题。当作业运行时,不会抛出任何异常,但我从未生成任何输出文件。在旧的API下,它会生成带有我排序的结果列表的输出文件。这是正在运行的作业:Configurationconfig=newConfiguration();Jobjob=Job.getInstance(config,"sorting");job.setOutputKeyClass(IntWritable.class);job.setOutputValueClass(IntWritable.class);job.setMapperClass(

java - hadoop mapreduce Mapper 从文本文件中读取不正确的值

我正在编写一个mapreduce程序来处理一个文本文件,将一个字符串附加到每一行。我面临的问题是映射器的map方法中的文本值不正确。每当文件中的一行小于前一行时,会自动将几个字符附加到该行以使该行的长度等于上一行的长度。映射方法参数如下*@Overrideprotectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{*我正在记录map方法中的值并观察此行为。有什么指点吗?代码片段DriverConfigurationconfiguration=newCon

hadoop - 独立的 map reduce 作业一个接一个地执行

是否有可能执行独立的mapreduce作业(不在reducer输出的链接中成为映射器的输入。可以一个接一个地执行。 最佳答案 在你的驱动代码中调用两个方法runfirstjob,runsecondjob.就像这样。这只是一个提示,根据你的需要做修改publicclassExerciseDriver{staticConfigurationconf;publicstaticvoidmain(String[]args)throwsException{ExerciseDriverED=newExerciseDriver();conf=new

java - 谁能解释我的 Apache Spark 错误 SparkException : Job aborted due to stage failure

我有一个简单的ApacheSpark应用程序,我在其中从hdfs读取文件,然后将其通过管道传输到外部进程。当我读取大量数据(在我的例子中文件大约有241MB)并且我没有指定最小分区数或将最小分区数指定为4时,我收到以下错误:Exceptioninthread"main"org.apache.spark.SparkException:Jobabortedduetostagefailure:Task1instage0.0failed4times,mostrecentfailure:Losttask1.3instage0.0(TID6,ip-172-31-36-43.us-west-2.co

java - Spring MVC 和 Apache Hadoop 启动 MapReduce Job

我正在尝试通过SpringMVC应用程序启动hadoopMapReduce作业。MVC应用程序使用ApacheTomcat7.0.62运行良好。此外,hadoop应用程序与spring-data-hadoop配合得很好。当我尝试合并这些项目时,MapReduce作业初始化崩溃并出现以下错误。15/05/3116:10:18WARNsupport.ClassPathXmlApplicationContext:Exceptionencounteredduringcontextinitialization-cancellingrefreshattemptorg.springframework

java - 如何从另一个程序运行 hadoop jar?

我需要实现以下功能:publicvoidCreateMRJob(StringjobInputLocation,StringjobJarLocation);这可能看起来相当简单并且是一个重复的问题,但我想在一个单独的文件(WPMampReduce.java如下附件)中执行作业的初始化,因为用户将被允许编辑它的某些部分。这就是我所说的在单独的文件中初始化作业的意思://WPMapReduce.javapublicclassWPMapReduce{publicstaticvoidmain(String[]args)throwsException{Configurationconf=newCo

hadoop - 在 hadoop 作业中指定作业属性和覆盖属性

我有一个hadoop(2.2.0)map-reduce作业,它从指定路径(比如INPUT_PATH)读取文本,并进行一些处理。我不想对输入路径进行硬编码(因为它来自每周更改的其他来源)。我相信hadoop中应该有一种方法可以在通过命令行运行时指定xml属性文件。我应该怎么做?我想到的一种方法是设置一个指向属性文件位置的环境变量,然后在代码中读取这个环境变量,然后读取属性文件。这是可行的,因为env变量的值每周都可以更改,而无需更改代码。但我觉得这是一种加载属性和覆盖的丑陋方式。请告诉我最简单的方法。 最佳答案 没有内置的方法来读取任