标签: mapreduce

什么是Map/Reduce?

我听说过很多关于map/reduce的内容,特别是在谷歌大规模并行计算系统的背景下.究竟是什么?

language-agnostic mapreduce

83
推荐指数
3
解决办法
1万
查看次数

什么时候减少任务从Hadoop开始?

在Hadoop中什么时候开始减少任务?它们是在完成一定百分比(阈值)的映射器后开始的吗?如果是这样,这个门槛是否固定?通常使用什么样的阈值?

reduce hadoop mapreduce

80
推荐指数
2
解决办法
3万
查看次数

Hadoop截断/不一致的计数器名称

现在,我有一个Hadoop工作,它创建了一个非常有名的计数器.例如,以下一个:stats.counters.server-name.job.job-name.mapper.site.site-name.qualifier.qualifier-name.super-long-string-which-is-not-within-standard-limits.此计数器在Web界面和getName()方法调用上被截断.我发现Hadoop对计数器最大名称有限制,此设置ID mapreduce.job.counters.counter.name.max用于配置此限制.所以我将此增加到,500并且web界面现在显示完整的计数器名称.但是getName()计数器仍然返回截断的名称.

请问某人,解释一下或指出我的错误?谢谢.

编辑1

我的hadoop服务器配置由单个服务器组成,其中包含hdfs,yarn和map-reduce.在map-reduce期间,有一些计数器增量,在作业完成后,在ToolRunnerI中使用的获取计数器org.apache.hadoop.mapreduce.Job#getCounters.

编辑2

Hadoop版本如下:

Hadoop 2.6.0-cdh5.8.0
Subversion http://github.com/cloudera/hadoop -r 042da8b868a212c843bcbf3594519dd26e816e79 
Compiled by jenkins on 2016-07-12T22:55Z
Compiled with protoc 2.5.0
From source with checksum 2b6c319ecc19f118d6e1c823175717b5
This command was run using /usr/lib/hadoop/hadoop-common-2.6.0-cdh5.8.0.jar
Run Code Online (Sandbox Code Playgroud)

我做了一些额外的调查,似乎这个问题描述了与我类似的情况.但这很令人困惑,因为我可以增加计数器的数量而不是计数器名称的长度......

编辑3

今天我花了很多时间调试hadoop的内部.一些有趣的东西:

  1. org.apache.hadoop.mapred.ClientServiceDelegate#getJobCounters方法从具有TRUNCATED名称和FULL显示名称的yarn返回一组计数器.
  2. 无法调试map和reducer本身,但在记录的帮助下,似乎该org.apache.hadoop.mapreduce.Counter#getName方法在reducer执行期间正常工作.

java hadoop mapreduce hadoop-yarn

78
推荐指数
1
解决办法
2461
查看次数

在reduce阶段之后合并输出文件

在mapreduce中,每个reduce任务将其输出写入名为part-r-nnnnn的文件,其中nnnnn是与reduce任务关联的分区ID.map/reduce是否合并这些文件?如果有,怎么样?

hadoop mapreduce

74
推荐指数
4
解决办法
7万
查看次数

容器超出了内存限制

在Hadoop v1中,我已经分配了每个7GB的mapper和reducer slot,大小为1GB,我的mappers和reducer运行正常.我的机器有8G内存,8个处理器.现在使用YARN,当在同一台机器上运行相同的应用程序时,我收到了容器错误.默认情况下,我有这样的设置:

  <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>1024</value>
  </property>
  <property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>8192</value>
  </property>
  <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>8192</value>
  </property>
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

Container [pid=28920,containerID=container_1389136889967_0001_01_000121] is running beyond virtual memory limits. Current usage: 1.2 GB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.
Run Code Online (Sandbox Code Playgroud)

然后我尝试在mapred-site.xml中设置内存限制:

  <property>
    <name>mapreduce.map.memory.mb</name>
    <value>4096</value>
  </property>
  <property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>4096</value>
  </property>
Run Code Online (Sandbox Code Playgroud)

但仍然得到错误:

Container [pid=26783,containerID=container_1389136889967_0009_01_000002] is running beyond physical memory limits. Current usage: 4.2 GB of 4 GB physical memory used; 5.2 GB of 8.4 GB virtual memory used. …
Run Code Online (Sandbox Code Playgroud)

hadoop mapreduce mrv2 hadoop-yarn

74
推荐指数
4
解决办法
12万
查看次数

MongoDB的$ in子句是否保证订单

使用MongoDB $in子句时,返回文档的顺序是否始终对应于数组参数的顺序?

mapreduce mongoose mongodb mongodb-query aggregation-framework

73
推荐指数
6
解决办法
2万
查看次数

集成测试Hive作业

我正在尝试使用Hive Thrift和JDBC接口编写一个非平凡的Hive作业,而我在设置一个像样的JUnit测试时遇到了麻烦.非平凡,我的意思是这项工作至少会产生一个MapReduce阶段,而不是只处理Metastore.

测试应该启动一个Hive服务器,将一些数据加载到一个表中,在该表上运行一些非平凡的查询,并检查结果.

我根据Spring参考连接了Spring上下文.但是,MapReduce阶段的作业失败,抱怨没有Hadoop二进制文件存在:

java.io.IOException:无法运行程序"/ usr/bin/hadoop"(在目录"/ Users/yoni/opower/workspace/intellij_project_root"中):error = 2,没有这样的文件或目录

问题是Hive Server在内存中运行,但依赖于Hive的本地安装才能运行.为了让我的项目自成一体,我需要嵌入Hive服务,包括HDFS和MapReduce集群.我尝试使用相同的Spring方法启动Hive服务器并将其指向MiniDFSClusterMiniMRCluster,类似于Hive QTestUtil源和HBaseTestUtility中使用的模式.但是,我无法让它发挥作用.

经过三天试图纠缠Hive集成测试后,我想我会问社区:

  1. 你如何推荐我集成测试Hive工作?
  2. 您是否有使用内存HDFS,MR和Hive实例的集成测试Hive作业的JUnit示例?

我看过的其他资源:

编辑:我完全清楚,针对Hadoop集群(无论是本地还是远程),可以针对全栈Hive实例运行集成测试.如上所述,问题在于,这不是有效测试Hive工作流的可行解决方案.

java testing hadoop hive mapreduce

71
推荐指数
2
解决办法
8513
查看次数

MongoDB存储过程等效

我有一个包含商店列表的大型CSV文件,其中一个字段是ZipCode.我有一个名为ZipCodes的单独的MongoDB数据库,它存储任何给定邮政编码的纬度和经度.

在SQL Server中,我将执行一个名为InsertStore的存储过程,该过程将在ZipCodes表上查找以获取相应的纬度和经度,并将数据插入到Stores表中.

MongoDB中是否存在类似于存储过程概念的内容?基本上,对于每个插入,我需要查找该存储的经度和经度并保存它.

我对Map/Reduce的概念不太熟悉,但这在这里是否相关?谢谢!

stored-procedures mapreduce geolocation mongodb

65
推荐指数
2
解决办法
7万
查看次数

计算大文件中的行数

我通常使用大约20 Gb的文本文件,我发现自己经常计算给定文件中的行数.

我这样做的方式现在只是cat fname | wc -l,而且需要很长时间.有没有更快的解决方案?

我在安装了Hadoop的高性能集群中工作.我想知道地图减少方法是否有帮助.

我希望解决方案像一线运行一样简单,就像wc -l解决方案一样,但不确定它是多么可行.

有任何想法吗?

linux mapreduce

64
推荐指数
6
解决办法
10万
查看次数

什么是Hive:从org.apache.hadoop.hive.ql.exec.MapRedTask返回代码2

我正进入(状态:

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
Run Code Online (Sandbox Code Playgroud)

尝试使用hive控制台中的命令创建分区表的副本​​时:

CREATE TABLE copy_table_name LIKE table_name;
INSERT OVERWRITE TABLE copy_table_name PARTITION(day) SELECT * FROM table_name;
Run Code Online (Sandbox Code Playgroud)

我最初得到一些语义分析错误,不得不设置:

set hive.exec.dynamic.partition=true
set hive.exec.dynamic.partition.mode=nonstrict
Run Code Online (Sandbox Code Playgroud)

虽然我不确定上面的属性是做什么的?

蜂巢控制台的全部输出:

Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set …
Run Code Online (Sandbox Code Playgroud)

hadoop hive mapreduce

55
推荐指数
2
解决办法
17万
查看次数