草庐IT

MAPREDUCE

全部标签

hadoop - 为什么我们在hadoop中使用分布式缓存?

无论如何,mapreduce框架中有很多跨节点的文件传输。那么分布式缓存的使用是如何提高性能的。 最佳答案 DistributedCache是Map-Reduce框架提供的一种设施,用于缓存应用程序所需的文件。一旦你为你的工作缓存了一个文件,hadoop框架将使它在你运行映射/reducetask的每个数据节点(在文件系统中,而不是在内存中)上可用。文件通过网络传输,通常通过HDFS。与将HDFS用于任何非数据本地任务相比,它不会对网络造成更多压力。 关于hadoop-为什么我们在had

java - mapreduce 中永无止境的工作

我已经在我的main方法中设置了一些MapReduce配置configuration.set("mapreduce.jobtracker.address","localhost:54311");configuration.set("mapreduce.framework.name","yarn");configuration.set("yarn.resourcemanager.address","localhost:8032");现在,当我启动mapreduce任务时,会跟踪该进程(我可以在我的集群仪表板(监听端口8088的仪表板)中看到它),但该进程从未完成。它在以下行仍然被阻止:1

java - Hadoop MultipleInputs,具有不同分隔符的TextInputFormat

如何最简单地运行多个不同的映射器类(使用MultipleInputs),所有映射器类都使用相同的输入格式,但使用不同的输入分隔符?MultipleInput允许您添加多个映射器,每个映射器都有自己的输入格式:MultipleInputs.addInputPath(Jobjob,Pathpath,ClassinputFormatClass,ClassmapperClass)TextInputFormat输入中的输入分隔符是通过在作业配置中设置配置键textinputformat.record.delimiter来配置的。方便!但是,这意味着使用MultipleInput.addInput

java - Mapreduce 程序无法读取输入文件

我在hdfs上的这个位置有一个小的csv文件:"hdfs://csehadoop/user/department.csv"。我在我的mapreduce程序中使用以下代码来读取文件的内容并将其存储在hashmap中。brReader=newBufferedReader(newFileReader("hdfs://csehadoop/user/department.csv"));while((strLineRead=brReader.readLine())!=null){StringdeptFieldArray[]=strLineRead.split(",");System.out.pri

Java Map Reduce 从不同格式读取 - Avro、文本文件

我有几个Hive表,其中一些是Avro格式,一些是纯文本文件。模式略有不同,但都包含我需要的某些属性。我打算编写一个mapreduce作业来处理数据。问题是我正在努力避免大量单独的工作,并尽可能地简化流程。祈祷我只需要写一份工作。是否有任何示例说明如何在一个映射器中读取不同格式的输入。例如,我在AVRO中有一个我知道的hdfs路径,我还有另一个hdfs路径,其中数据位于纯文本文件中。//Pseudocodemapper(Paths){for(PathinPaths){ifPath.containsAvro(){...readasavro}else{...readastextfile}.

hadoop - 在 reducer 函数中选择 max key

这个问题在这里已经有了答案:Findingbiggestvalueforkey(1个回答)关闭7年前。我对reducer的理解是,它从sort和shuffle的中间o/p文件中处理一对键值对。我不知道如何访问具有排序和混洗键值对的中间文件。一旦无法访问中间文件,就无法在reducer模块中编写代码来选择最大的key。我不知道如何对一次接收一对K、V的reducer进行编程,以仅将最大的键及其对应的值打印到最终输出文件。假设这是来自映射器的中间文件,它也经过了排序和混洗..1个2是4这是什么我希望reducer在最终输出文件中只打印“4thiswhat”。由于reducer的内存中没有整

hadoop - 基于文件大小的 block 和映射器

假设我有3个文件要存储在HDFS中并希望通过MapReduce读取它们。因此,在HDFS位置/omega/usecase/input中有3个文件,分别是file1.txt、file2.txt、file3.txt这3个文件的大小分别是file1.txt(64MB),file2.txt(32MB),file3.txt(1MB)还假设默认block大小为64MB,复制因子为3我想知道这3个文件将有多少个block,如果我编写一个MapReduce程序来读取输入目录/omega/usecase/input,将执行多少个映射器 最佳答案 HD

java - 如何从 Mapreduce 作业查询存储在 hdfs 中的嵌入式数据库?

我正在尝试从HadoopMapReduce映射器查询GeoLite数据库以解析IP地址的国家/地区。我尝试了两种方法:1.使用File仅适用于本地文件系统,我收到一个文件未找到异常Filedatabase=newFile("hdfs://localhost:9000/input/GeoLite2-City.mmdb");//2.使用流,但在运行时出现此错误Error:JavaHeapSpacePathpt=newPath("hdfs://localhost:9000/input/GeoLite2-City.mmdb");FileSystemfs=FileSystem.get(newCo

Hadoop 作业刚刚结束

我在使用Hadoop时遇到了一个相当奇怪的问题。我写了一个MR作业,它就这样结束了,没有执行map或reduce代码。它生成输出文件夹,但该文件夹是空的。我认为没有理由出现这种行为。我什至用默认的Mapper和Reducer来尝试这个,只是为了找到问题,但我没有发现异常,没有错误,作业刚刚完成并生成一个空文件夹。这是最简单的驱动程序:Configurationconf=newConfiguration();//DistributedCache.addCacheFile(newURI(firstPivotsInput),conf);JobpivotSelection=newJob(con

java - Hadoop Custom Partitioner 的行为不符合逻辑

基于这个例子here,这有效。在我的数据集上尝试过相同的方法。示例数据集:OBSERVATION;2474472;137176;OBSERVATION;2474473;137176;OBSERVATION;2474474;137176;OBSERVATION;2474475;137177;将每一行视为字符串,我的Mapper输出为:key->string[2],value->string.我的分区程序代码:@OverridepublicintgetPartition(Textkey,Textvalue,intreducersDefined){StringkeyStr=key.toStr