草庐IT

reduce-combine

全部标签

java - Map Reduce - 在 Reducer 中使用局部变量

我已经实现了一个简单的Mapreduce应用程序来检测最长的单词。作业执行成功。但是现在我想知道在reducer中使用局部变量来保持Max长度是否正确?由于分布式环境中可能有多个reducer,并且它们不共享该变量的值。这是一个正确的假设吗?在分布式环境中,当有独立的reducer时,输出会受到怎样的影响?我正在使用自定义比较器,因此单词首先按长度排序,而不是按值排序。每个MR阶段的输出如下所示:MapperOutput:ByeByeBye9HelloHelloHe22215HelloHelloHe22215HelloHelloHe33315HelloHelloHe33315Hello

hadoop - 可以同时运行多少个reducer?

在Uni学习大数据,我对MapReduce的话题有点困惑。我想知道有多少reducer可以同时运行。例如,假设我们有864个reducer,有多少可以同时运行? 最佳答案 所有这些都可以同时运行,这取决于集群的状态(健康,即没有rouge/bad节点),集群的容量是多少以及集群的空闲程度。如果有其他MR作业在同一个集群上运行,那么在864个reducer中只有少数会进入运行状态,一旦容量空闲,另一组reducer将开始运行。还有一种情况有时会发生,当您的reducer/mapper不断相互抢占并占用整个内存时。在大多数情况下,作业都

java - Hadoop MapReduce 在 reducer 中访问 mapper 输出数

我有一个映射器,它输出句子中的每个字母,这是键,数字1作为它的值。例如,我的映射器将“你好吗”输出为H1o1w1a1r1e1y1o1u1我的reducer接受它并使用1来计算每个字母的出现次数。例如,它会输出字母“o”作为键,输出2作为它的值,因为它出现了两次。我的问题是我想计算每个字母在句子中出现的频率。为此,我需要访问句子中字母的总数(映射器输出的数量)。我是mapreduce的新手,所以我不确定最好的方法。 最佳答案 假设您的映射器正在获取一个完整的句子,您试图在其中找到频率并且您正在使用JavaAPI,您可以通过contex

Hadoop 生态系统 : Map Reduce needed for Pig/Hive

互联网上有很多hadoop生态系统图片,所以我很难理解这些工具是如何协同工作的。例如在附图中,为什么pig和hive是基于mapreduce的,而其他工具如spark或storm基于YARN?你能解释一下吗?谢谢!BRhaddopecosystem 最佳答案 图片显示了MapReduce之上的Pig和Hive。这是因为MapReduce是Pig和Hive使用的分布式计算引擎。Pig和Hive查询作为MapReduce作业执行。使用Pig和Hive更容易,因为它们提供了更高级别的抽象来使用MapReduce。现在我们来看一下图中YAR

java - 执行Map-Reduce程序时出错

我使用hadoop3.1.0在Ubuntu上运行MapreduceWordCount程序,但它总是得到这个信息。我看到有人问这个类似question之前,但这行不通。我想知道我应该修改哪个文件,或者我错过了什么。我的java程序来自here.master@kevin-VirtualBox:~/MapReduceTutorial$$HADOOP_HOME/bin/hadoopjarProductSalePerCountry.jar/inputMapReduce/mapreduce_output_sales$HADOOP_HOME/bin/hadoopjarProductSalePerCo

java - Map Reduce - 如何在单个作业中分组和聚合多个属性

我目前在MapReduce方面遇到了一些困难。我有以下数据集:1,John,Computer2,Anne,Computer3,John,Mobile4,Julia,Mobile5,Jack,Mobile6,Jack,TV7,John,Computer8,Jack,TV9,Jack,TV10,Anne,Mobile11,Anne,Computer12,Julia,Mobile现在我想应用带分组的MapReduce和聚合此数据集,以便输出不仅显示哪个人购买某物的次数,以及该人订购最多的产品是什么。所以输出应该是这样的:John3ComputerAnne3MobileJack4TVJulia

apache - 控制 HDFS 复制、映射器数量和 reducer 识别

我正在尝试以分布式方式(使用3台计算机的集群)运行ApacheHadoop2.65,并且我想决定映射器和缩减器的数量。我正在使用复制数为1的HDFS,我的输入是3个文件(表)。我想调整数据在系统中的流动方式,为此,我想通过以下方式获得一些帮助吗?以及如何以及在哪里可以更改它?HDFS的复制-我可以干扰HDFS的复制方式吗?例如,确保每个文件存储在不同的计算机上?如果可以,我可以选择哪个它将存储在计算机上吗?映射器数量-我可以更改映射器或输入拆分的数量吗?我知道这取决于输入拆分的数量和block大小。它在网上说我可以通过更改以下参数来做到这一点,但我不知道在哪里?-Dmapred.map

hadoop - 对相同的 reduce 任务的两次尝试是否应该继续并行运行?

我的hadoopreduce任务中的Action有外部效果,而且它们不是幂等的。我在任务跟踪器中观察到,尝试了一个reducer,然后启动了同一组键的另一个reducer,而没有杀死原来的reducer。我配置错了吗?这是这个reduce任务的表: 最佳答案 这是由于hadoop中的推测执行。如果Hadoop检测到少数集群节点上有一些慢速任务,它是Hadoop指定备份任务的选项。备份任务将优先安排在速度较快的节点上。重复任务中最先完成的任务将成为用于进一步操作的任务。您可以通过将以下参数设置为false来关闭此功能mapred.re

Hadoop 流式处理使用 shell 脚本 : reducer fails with error : No such file or directory

我正在使用一个10节点HDP集群,我试图在Bash上使用shell脚本运行一个简单的WordCount作业。下面是我正在使用的命令行参数。yarnjar/usr/hdp/2.6.5.0-292/hadoop-mapreduce/hadoop-streaming-2.7.3.2.6.5.0-292.jar\-mapper'wc-l'\-reducer'./reducer_wordcount.sh'\-file/home/pathirippilly/map_reduce_jobs/shell_scripts/reducer_wordcount.sh\-numReduceTasks1\-in

hadoop - 创建比 reducer 更多的分区

在我的单机上进行本地开发时,我相信reducer的默认数量是6。在特定的MR步骤中,我实际上将数据分成n个分区,其中n可以大于6。根据我的观察,看起来实际上只有6个分区得到处理,因为我只看到6个特定分区的输出。几个问题:(a)是否需要将reducer的数量设置为大于分区的数量?如果是这样,我可以在运行Mapper之前/期间/之后执行此操作吗?(b)为什么其他分区没有排队?有没有办法等待一个reducer处理完一个分区,然后再处理另一个分区,这样无论reducer的实际数量是否小于分区数量,都可以处理所有分区? 最佳答案 (a)不可以