草庐IT

mapreduce-name

全部标签

java - 关于调试 Hadoop MapReduce 作业中二级排序问题的任何提示?

我相信(相信?)我理解二级排序在Hadoop中的工作原理。我创建了一个由4个字段组成的中间键。我按第一个字段分区,按第一个和第二个字段分组,然后按所有4个字段排序。看起来我已经确定了分组和分区,但是值进入reducer的顺序是乱序的。关于如何对此进行调试有什么想法吗? 最佳答案 目前,手动或使用工具进行静态代码审查似乎效果不错。我相信我违反了规则:当覆盖compareTo()时,不要忘记覆盖equals()和hashCode()。如果解决这个问题,我会及时通知大家。 关于java-关于调

java - 多个mysql表的数据到hadoop mapreduce

我们有以下场景:我们有一个用java实现的map-reduce进程链。目前我们正在从一个mysql表中读取数据并将输出保存到另一个mysql表。现在我们可以需要来自另一个表的数据作为map/reduce过程的输入。可能的解决方案:a)要么我们可以有一个连接查询以获取映射过程的输入,要么b)我们可以通过建立简单的jdbc连接并一次又一次地请求数据来读取所需的数据(虽然,我不喜欢它)。问题:在这种情况下,最佳做法是什么?我们将来可能会迁移到mongoDB。在这种情况下,最佳实践是什么? 最佳答案 SQOOP和HIVE可以使用。您可以使用

Eclipse MapReduce 插件错误 : Server IPC version 7 cannot cannot communicate with client version 3

当我尝试连接到MapReduce位置时,我的笔记本电脑(我有我的eclipse和mapreduce插件)是一个namenode和datanode的集群,我得到错误:服务器IPC版本7无法与客户端版本3通信。我试图在谷歌上找到一些信息,但找不到太多。是不是因为我的mapreduceeclipse插件使用旧版本的IPC而hadoop集群有更新的版本。所以只是我使用的是过时的插件?如何找到我的eclipse插件使用的IPC版本?有什么想法吗? 最佳答案 是的,这听起来像是版本不兼容。假设您的hadoop发行版有源代码,您可以为该版本重新编

database - 使用 mapreduce 访问非 JDBC 数据库

我有一个未启用JDBC的数据库,我可以在其中触发查询并使用输入流获取结果。我想使用mapreduce程序访问它。对于支持JDBC的数据库,Hadoop中有“DBInputFormat.java”和“DBConfiguration.java”文件,它们负责访问数据库并在扩展DBWritable和Writable接口(interface)的用户定义类中获取结果。有没有一种方法可以让我以相同的方式访问上述非JDBC数据库? 最佳答案 我不确定您的数据库是否支持ODBC。如果是这样,您可以尝试使用DBInputFormat的jdbc:odb

java - MapReduce 作业中的多个键

我是hadoop新手。我正在尝试运行MapReduce(用Java编程),其中键是多个键(文本)。我应该使用哪种类型的数组来存储这些键,然后将它们作为参数传递给outputCollector?谢谢!!! 最佳答案 你应该写你自己的类implementsWritableComparable将键一起存储在一个简洁的对象中。参见thislink一个很好的例子。 关于java-MapReduce作业中的多个键,我们在StackOverflow上找到一个类似的问题: h

hadoop - 作业类型未定义 setNumMapTasks(int) - Hadoop MapReduce

我无法将“job.setNumMapTasks(int)”添加到我的MapReduce程序的驱动程序中。当我尝试添加它时,出现编译错误,指出“setNumMapTasks(int)未定义作业类型”。但是,我能够添加reducer等效项“job.setNumReduceTasks(int)”。在我看来,如果我可以添加一个,我应该可以添加另一个。下面是我的司机。非常欢迎任何建议。publicintrun(String[]args)throwsException{Configurationconf=getConf();Jobjob=newJob(conf,"PiCalc");job.setJ

hadoop - 使用不同的 hadoop-mapreduce-client-core.jar 运行 hadoop 集群

我在安装了CDH4.2.0的hadoop集群上工作并遇到了this错误。它已在更高版本的hadoop中得到修复,但我无权更新集群。有没有办法告诉hadoop在通过命令行参数运行我的工作时使用这个jarhadoopjarMyJob.jar-Dhadoop.mapreduce.client=hadoop-mapreduce-client-core-2.0.0-cdh4.2.0.jar新的mapreduce-client-core.jar文件是票证中的补丁jar。或者必须用这个新的jar完全重新编译hadoop?我是hadoop的新手,所以我不知道所有可能的命令行选项。

hadoop - 如何过滤hadoop mapreduce中文件的记录值?

我正在使用MapReduce中的程序。我有两个文件,我想从file1中删除file2中存在的一些信息。每行都有一个ID作为其键和一些数字(以逗号分隔)作为其值。file1:11,2,1022,7,8,533,9,12和file2:1122,533,9我想要这样的输出:output:12,1027,8312我想删除file1的值,这些值在file2中具有相同的键。一种方法是将这两个文件作为输入文件,并在映射步骤中生成:(ID,line)。然后在减少步骤中过滤值。但是,我的文件非常非常大,因此我不能这样做。或者,如果file1是输入文件并且在map中我打开file2并查找该行然后比较值是否

hadoop - mapreduce 中的 NativeIO chmod "ENOTDIR"异常

我发现mapreduce作业似乎由于RawLocalFileSystem中的某些问题而无法启动。我该如何调试这个错误?似乎没有与NativeIOchmod异常关联的目录或命令的踪迹。当然,一个选项是使用自定义RawLocalFileSystem实现将jar捆绑到我的类路径中,但这似乎有点矫枉过正。13/07/1118:39:43错误安全性。用户组信息:PriviledgedActionException为:根本原因:ENOTDIR:不是目录ENOTDIR:不是目录在org.apache.hadoop.io.nativeio.NativeIO.chmod(native方法)在org.ap

java - 处理 Hadoop mapreduce 中键之间值的不均匀分布

我正在处理hadoop中的输入日志文件,其中的键分布不均匀。这意味着reducer的值分布不均匀。例如key1有1个值,key2有1000个值。有什么方法可以对与同一键关联的值进行负载平衡[我也不想修改我的键] 最佳答案 如果您知道哪些键将具有异常大量的值,您可以使用以下技巧。您可以实现自定义Partitioner这将确保您的每个倾斜key都进入一个分区,然后所有其他内容将通过它们的hashCode分发到其余分区。(这是默认的HashPartitioner所做的)。您可以创建自定义Partitioner通过实现这个接口(interf