草庐IT

elastic-mapreduce-cli

全部标签

Hadoop 和 Mapreduce 配置

我对Hadoop架构有几个疑问在Mapreduce中,我们可以动态修改block大小和映射器的数量,如果可以,我们该怎么做?block是如何在HDFS中创建的。例如,hadoop框架安装在redhatlinux机器上。linux文件系统的默认block大小是4k。HDFSblock是4kblock上的逻辑包装器还是如何创建block。它也是并行的还是顺序的?因为例如一个文件只有32MB,因为block大小是64MB。剩余的32Mb是否可重复使用?我想查看刚刚复制到HDFS的特定文件的所有block的位置(数据节点)。是否有任何命令可以从一个位置执行此操作?如果我将视频文件移动到HDFS

hadoop - 在映射期间替换为 HBase 查找以进行 mapreduce

在mapreduce处理期间,我需要在一次map执行中多次查找hbase。这正在成为一个瓶颈,因为hbase变得非常慢。一个map过程中会多次查找,例如每一行包含多个员工id,员工信息存储在hbase中。什么可以替代这个?对于这样的处理,hbase应该很慢吗?将Hbase作为hdfs文本然后进行连接而不是查找是否更好。 最佳答案 如果不确切知道您的MR工作在做什么,很难给出一个完美的答案,但我会考虑使用TableInputFormatBase(使用MultipleInputs将HBase表与其他数据一起读入映射器),然后加入员工ID

java - 运行 MapReduce 程序时出现 ClassNotFound 异常

我正在编写一个用于矩阵加法的mapreduce程序。因为它需要2个输入文件,所以我使用了MultipleInputs。我有以下类(class)MatAddMapper1.javapackagemapred;importjava.io.IOException;importorg.apache.hadoop.io.IntWritable;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Mapper;publicclassMatA

hadoop - 为什么我们需要知道在 mapreduce 中处理的文件的名称?

我遇到了一个帖子,询问如何获取mapreduce正在处理的文件名。这让我想知道在什么情况下我们需要知道正在处理的文件的名称或路径。FileSplitfileSplit=(FileSplit)context.getInputSplit();StringfileName=fileSplit.getPath().getName();谢谢巴桑 最佳答案 有几种情况文件名很重要,例如:过程中需要文件名中的时间戳。根据文件名,您可以对文件进行不同的处理。就像如果您有两种非常相似的文件类型,需要类似的过程,但差异很小(如果不是,最好有两个不同的m

java - 在 MapReduce 程序中,reducer 没有被 Driver 调用

我根据mapreduce编程模型编写了这个程序,Driver代码如下我的司机类(class)publicclassMRDriverextendsConfiguredimplementsTool{@Overridepublicintrun(String[]strings)throwsException{if(strings.length!=2){System.err.println("usage:");System.exit(0);}Jobjob=newJob(getConf(),"multiplefiles");job.setJarByClass(MRDriver.class);job

hadoop - SequenceFile 作为带有自定义类的文本 CLI

我有一个SequenceFile格式的HDFS文件。键是Text,值是自定义可序列化类(例如)MyCustomClass。我想通过hadoopfs-text命令读取此文件,但它失败了,因为hadoop不知道MyCustomClass定义是什么。我也尝试了hdfsdfs-text命令,但得到了相同的响应。使用hadoop2。有没有一种方法可以指定类(例如通过jar,如-cpmyjar.jar选项)? 最佳答案 您可以使用-libjars添加包含自定义可写类的jar.例如:hadoopfs-libjars.jar-text

Hadoop MapReduce 作业权限被拒绝

我正在尝试运行mapreduce作业以使用Hive获取表中的用户数。我在这样做时遇到了AccessControlException。命令提示符上的消息:hive>selectcount(*)frombxbookratings;QueryID=nikhilbarar_20160726214949_ddeb51ca-4833-48af-88ec-3a1129b5f741Totaljobs=1LaunchingJob1outof1Numberofreducetasksdeterminedatcompiletime:1Inordertochangetheaverageloadforareduc

hadoop - 关闭 Hadoop MapReduce 作业的数据局部性

我有一个YARN集群,集群中有几十个节点。我的程序是一个只有map的工作。它的Avro输入非常小,只有几百万行,但处理一行需要大量的CPU资源。我观察到许多maptask在单个节点上运行,而其他节点不参与。这会导致某些节点非常慢并影响整体HDFS性能。我假设这种行为是由于Hadoop数据局部性造成的。我很好奇是否可以将其关闭,或者是否有其他方法可以强制YARN在集群中更均匀地分配maptask?谢谢! 最佳答案 假设您不能轻松地在集群中更均匀地重新分配数据(肯定不是所有数据都在一个节点上吧?!)这似乎是放松局部性的简单方法:yarn

java - 面临合并洗牌和排序 Mapreduce 的问题

我是Hadoop的菜鸟,因此在一段代码上需要您的帮助。我的Mapper输出是:性别年龄Male38Female23Female26...100rowslikethis目标:我想计算男性的平均年龄和女性的平均年龄。这个想法看起来很简单,但我得到了错误的输出。请看看我的reducer代码。publicstaticclassAgeRedextendsReducer{publicvoidRed(Textkey,Iterablevalues,Contextcontext)throwsIOException,InterruptedException{intsum=0,count=0;for(Int

java - MapReduce 计算制表符分隔输入值的总和

我正在尝试使用MapReduce来查找由其标签分隔的制表符分隔输入的总和。数据看起来像这样15.04.06.022.01.03.013.04.08.0第一列是类标签,因此我希望得到按类标签分类的输出。对于这种情况,输出将是label1:30.0label2:6.0这是我试过的代码,但我得到了错误的输出和显示了意外的类标签。publicclassTotal{publicstaticclassMapextendsMapper{privatefinalstaticDoubleWritableone=newDoubleWritable();privateTextword=newText();p