编程时需要注意:
1、实例化job后,不要再使用原来的configuration,而需通过job.getCongfigure()来进行参数的配置
public static Job createSubmittableJob(Configuration conf, String[] args) throws IOException { String tableName = args[0]; conf.set(TableInputFormat.INPUT_TABLE, tableName); conf.set(TableInputFormat.SCAN, ScanAccessor.getTableInputFormatScan(conf, tableName)); Job job = new Job(conf, Index.class.getSimpleName() + "_" + tableName + ":" + Utils.now()); job.setJarByClass(Index.class); // conf.set(..., ...); job.getConfiguration().set(...
2、map输出的keyvalue与reduce的输出keyvalue对象不统一。但是还是把reduce作为combine类。
job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(FloatWritable.class); job.setOutputKeyClass(Text.class); //job.setOutputValueClass(FloatWritable.class); job.setOutputValueClass(Text.class);
这样的错误,出现后,如果不是认真的查看的话,还是比较难发现的!
如果map和reduce的keyvalue类型不同时,不要把Reduce的类作为Combine的处理类!
3、聚合类型的操作才使用reduce
OK: sqoop导数据功能
DAD: hadoop contrib index (详...)
4、命令行参数的顺序
-D参数,以及Hadoop内置的参数, 必须放在class后面,不能跟在args后
· ERROR:
% hadoop jar hadoop-*-examples.jar sort -r numbers.seq sorted \
-inFormat org.apache.hadoop.mapred.SequenceFileInputFormat \
-outFormat org.apache.hadoop.mapred.SequenceFileOutputFormat \
-outkey org.apache.hadoop.io.IntWritable \
-outvalue org.apache.hadoop.io.Text
· OK:
% hadoop jar hadoop-*-examples.jar sort -r \
-inFormat org.apache.hadoop.mapred.SequenceFileInputFormat \
-outFormat org.apache.hadoop.mapred.SequenceFileOutputFormat \
-outkey org.apache.hadoop.io.IntWritable \
-outvalue org.apache.hadoop.io.Text \
numbers.seq sorted
配置属性注意点:
1、开启trash
<property> <name>fs.trash.interval</name> <value>720</value> </property>
2、去除mapreduce完成后"SUCCESS","history目录"
3、共享jvm
4、不要关闭mapreduce的超时
Configuration conf = ... conf.set("hadoop.job.history.user.location", "none"); conf.setBoolean("mapreduce.fileoutputcommitter.marksuccessfuljobs", false); conf.set("mapred.job.reuse.jvm.num.tasks", "-1"); // conf.set("mapred.task.timeout", "0");
5、 pid的存放目录最好自定义。长期放置在tmp下的文件会被清除。
http://winseclone.iteye.com/blog/1772989
export HADOOP_PID_DIR=/var/hadoop/pids
Hadoop入门资料:
1 官网
2 https://ccp.cloudera.com/display/DOC/Hadoop+Tutorial
相关推荐
本文将详细阐述如何搭建Hadoop集群以及进行MapReduce程序的关键点个性化开发。 首先,我们来看任务1——Hadoop集群的部署。这一步至关重要,因为它为整个大数据处理系统提供了基础架构。在虚拟机中安装Ubuntu Kylin...
在这个实例中,我们将创建一个简单的MapReduce程序,该程序读取包含整数的文件,找出最大值和最小值。以下是实现这个功能的关键步骤: 1. **设置环境**:确保已经安装了Hadoop,并配置了相应的环境变量。同时,需要...
### 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0 #### Hadoop 2.x 版本变化及依赖分析 在Hadoop 2.x版本中,相较于早期版本,其架构和依赖库有了明显的变化。在早期版本如1.x中,所有的依赖都集中在`...
在这个案例中,我们将深入探讨如何在 Hadoop 环境中使用 MapReduce 实现 WordCount。 【描述】在 Hadoop 环境中,WordCount 的实现主要涉及两个关键阶段:Map 阶段和 Reduce 阶段。Map 阶段将原始输入数据(通常是...
在Java中实现MapReduce程序,我们需要创建两个类:`Mapper`和`Reducer`,分别对应Map和Reduce阶段的逻辑。此外,还需要配置Job对象,指定输入输出路径、Mapper和Reducer类以及其他的Hadoop配置参数。 例如,一个...
为了运行这些MapReduce程序,开发者需要设置Hadoop环境,包括安装Hadoop,配置集群参数,以及正确设置Hadoop的环境变量。此外,代码中可能还会涉及到Hadoop的相关API,如`InputFormat`、`OutputFormat`和`...
6. **测试和运行**:编写MapReduce程序后,可以使用Eclipse的“运行”菜单选择“运行配置”来创建一个MapReduce配置。配置包括指定主类、输入输出路径、集群地址等参数。然后点击“运行”执行程序。 7. **提交作业*...
在Hadoop生态系统中,Eclipse是一个常用的集成开发环境(IDE),用于编写MapReduce程序。MapReduce是一种编程模型,用于大规模数据集的并行处理。它将大数据任务分解为两个主要阶段:映射(Map)和化简(Reduce)。...
(2)编写MepReduce程序 (3)调试和运行MepReduce程序 (4)完成上课老师演示的内容 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 二、实验内容 1.单词计数实验(wordcount) (1)输入...
编写MapReduce程序通常需要以下jar包:hadoop-client, hadoop-common, hadoop-hdfs, hadoop-mapreduce-client-core和commons-cli。这些jar包可以通过Maven的pom文件来导入,从而确保代码能够正常编译和运行。 接...
在Windows上编写MapReduce程序时,UnxUtils可以帮助你模拟Linux环境,因为Hadoop通常是与Unix/Linux环境一起使用的。 3. **编程语言**:MapReduce程序通常用Java编写,因为它是最兼容的编程语言,Hadoop的API也主要...
- **Hadoop Pipes**:提供了 C++ API,允许开发者使用 C++ 编写 MapReduce 程序。 #### 六、Hadoop MapReduce 的局限性 尽管 Hadoop MapReduce 在大规模数据处理方面表现出色,但它也有一些局限性: - **不适合...
这个压缩包“使用hadoop-streaming运行Python编写的MapReduce程序.rar”显然是一个教程或示例,旨在指导用户如何利用Python编写MapReduce任务,并通过Hadoop Streaming进行执行。 MapReduce是一种编程模型,由...
如Hadoop Streaming允许使用任意可执行程序(如Shell脚本)作为mapper和reducer,而Hadoop Pipes则是一个C++ API,可用于创建MapReduce应用程序。 7. **输入与输出**: MapReduce作业的输入和输出都是键值对的形式...
【大数据Hadoop MapReduce词频统计】 大数据处理是现代信息技术领域的一个重要概念,它涉及到海量数据的存储、管理和分析。Hadoop是Apache软件基金会开发的一个开源框架,专门用于处理和存储大规模数据集。Hadoop的...
在Hadoop 2.7.7版本中,开发MapReduce程序通常需要使用Java编程语言。你需要导入Hadoop的相关库,创建Mapper和Reducer类,并实现它们的map()、reduce()方法。此外,还需要配置Job参数,如输入路径、输出路径、Mapper...
在Hadoop生态系统中,Eclipse是一个常用的集成开发环境(IDE),用于编写MapReduce程序。MapReduce是一种编程模型,由Google提出,主要用于大规模数据集的并行处理。它将复杂的分布式计算任务分解为两个主要阶段:...
本篇将深入探讨如何使用Java编程语言来编写MapReduce程序。 一、MapReduce模型概述 MapReduce包含两个主要阶段:Map阶段和Reduce阶段。Map阶段将输入数据分割成多个小块,然后对每个数据块应用一个用户定义的Map...