草庐IT

algorithm - 使用 Hadoop 记录关联/聚类

我们的Hadoop集群每天摄取数TB的网络日志。每条日志记录都包含用户IP地址、cookieID等信息。但是,不同的IP地址和cookieID可以对应一个物理用户(家庭/工作计算机等)。我们设计了一个函数来计算任何一对记录的匹配分数,分数越高意味着两条记录对应一个物理用户的概率越高。目标是使用评分函数将所有记录分成可能对应于一个物理用户的组,并通过唯一的组ID(即物理用户ID)标记组中的所有记录。使用Hadoop/Mahout实现此逻辑的最佳方法是什么? 最佳答案 首先,我假设您知道如何链接MapReduce作业。如果没有,请参阅h

java - Hadoop Map/Reduce WARN mapred.LocalJobRunner : job_local_0001 java. io.EOFException?

在Eclipse6.91中运行Hadoop0.20.2M/R应用。我在执行后收到这些错误和警告:13/07/2416:52:52INFOjvm.JvmMetrics:InitializingJVMMetricswithprocessName=JobTracker,sessionId=13/07/2416:52:52WARNmapred.JobClient:UseGenericOptionsParserforparsingthearguments.ApplicationsshouldimplementToolforthesame.13/07/2416:52:52WARNmapred.Jo

hadoop - Cassandra Hadoop map reduce with wide rows ignores slice predicate

我有一个宽行列族,我正在尝试对其运行map缩减作业。CF是按时间顺序排列的事件集合,其中列名本质上是时间戳。我需要针对CF中的特定日期范围运行MR作业。当我在widerow属性设置为false的情况下运行作业时,预期的列切片将传递到映射器类中。但是当我将widerow设置为true时,整个列族都会被处理,而忽略切片谓词。问题是我必须使用widerow支持,因为如果一次加载,切片中的列数会变得非常大并消耗所有内存。我找到了概述问题的这个JIRA任务,但由于“无法重现”而被关闭-https://issues.apache.org/jira/browse/CASSANDRA-4871?pag

hadoop - 使用hadoop map reduce获取最高薪水员工姓名

我是M/R程序的新手..我在HDFS中有一个包含这种结构数据的文件EmpId,EmpName,Dept,Salary,1231,用户名1,部门1,50001232,用户名2,部门2,60001233,用户名3,部门3,7000.......................现在我想找到工资最高的员工的姓名我写了一个mapreduce来找到最高的薪水。在我的映射器类中,我发出了这样的输出output.collect("最大值",员工工资);在reducer中,我找到了键“maxvalue”的最大值。现在我想在映射器中使用这个值,并找到赚取最高薪水的员工的名字。我如何发送reducer输出映

java - Hadoop 集群卡住卡在 Reduce > copy >

到目前为止,对于这个问题,我已经尝试了这里的解决方案,1,在这里,2.然而,虽然这些解决方案确实导致执行mapreduce任务,但看起来它们只在名称节点上运行,因为我得到类似于此处的输出,3。.基本上,我正在使用我自己设计的mapreduce算法运行一个2节点集群。mapreducejar在单节点集群上完美执行,这让我觉得我的hadoop多节点配置有问题。要设置多节点,我遵循了教程here.为了报告出了什么问题,当我执行我的程序时(在检查名称节点、任务跟踪器、作业跟踪器和数据节点正在各自的节点上运行之后),我的程序在终端中的这一行停止:INFOmapred.JobClient:map1

hadoop - 默认 Mapper-Reducer 类

假设我有两个数据集:helloworldbyeworld和helloearthnewearth并且我想运行一个没有指定映射器类或化简器类的map-reduce任务,因此将调用默认的映射器和化简器——它们都是恒等函数。当我运行该作业时,输出为::0helloworld0helloearth12newearth12byeworld我很困惑为什么key像0和12?!当我在main()::中注释掉这些行时,我只是使用了默认的映射器和缩减器//job.setMapperClass(Map.class);//job.setCombinerClass(Reduce.class);//job.setR

hadoop - map和reduce如何并行运行

我是hadoop的初学者,当我运行hadoop作业时,我注意到进度日志显示映射80%减少25%。我对mapreduce的理解是映射器产生一堆中间值。在映射器产生输出之后,有中间对的洗牌/排序,这些值被发送以减少作业。谁能解释一下map/reduce如何并行工作。 最佳答案 必须将映射器的输出复制到适当的缩减器节点。这称为洗牌过程。这甚至可以在所有映射器完成之前就开始,因为决定将哪个键转到哪个缩减器仅取决于映射器的输出键。所以你看到的25%的进步是由于洗牌阶段。shuffle之后是sort阶段,然后是reduce阶段。除非所有映射器都

Hadoop Reducer 执行重现

所以映射器只在包含给定数据block的给定从节点上执行一次,对吗?但是Reducer可能会执行多次,因为同一个键可能来自许多Mapper节点,对吗?此外,对于单个MapReduce作业,每个Mapper都会进行Shuffle和Sort是否正确? 最佳答案 一般来说,我认为说Mapper/Reducer被执行了多少次是不合适的,因为它们广泛分布在不同的节点中,由MRv1中的JobTracker或MRv2中的ResourceManager调度。但希望我下面的回答可以帮助您更好地理解。问:“所以映射器只在包含给定数据block的给定从节点

hadoop - Hadoop什么时候开始shuffle

我对洗牌何时开始有疑问。假设我有2个映射器和1个缩减器。每个映射器将生成输出map1和map2。这个map1和map2存储在各自datanode的临时磁盘中。现在reducer应该等待map1和map2的输出?换句话说,什么时候开始洗牌?一旦map1完成还是必须等待map2也完成?我正在收听reducer的改组流量,但我找不到任何流量,但控制台输出显示已经完成了70%(大约)的减少。14/12/1817:45:55INFOmapred.JobClient:map97%reduce22%14/12/1817:45:58INFOmapred.JobClient:map98%reduce22

hadoop - 将 jars 添加到启动 map reduce 作业的代码的类路径中

我正在尝试从实现Tool接口(interface)的应用程序启动mapreduce作业。该应用程序几乎没有做其他事情,例如mapreduce作业的先决条件。此类使用一些第三方库,如何在运行jar时使用以下命令将这些jar添加到类路径:hadoopjar[args]从这里Cloudera'spost我试图将HADOOP_CLASSPATHenvvar设置为第三方jar,但没有成功。上面提到的第三方jar仅由启Action业的类而不是Mapper/Reducer类需要。所以我不需要把它们放在分布式缓存中。当我在$HADOOP_HOME/lib下复制这些我需要的第三方jar时,它可以工作,但