hadoop常见问题汇集

时间:2023-03-09 05:48:06
hadoop常见问题汇集
1  hadoop conf.addResource  

http://*.com/questions/16017538/how-does-configuration-addresource-method-work-in-hadoop

How does Configuration.addResource() method work in hadoop
up vote down vote
favorite Does Configuration.addResource() method load resource file like ClassLoader of java or it just encapsulates ClassLoader class.Because I find it can not use String like "../resource.xml" as argument of addResource() to load resource file out of classpath, this property is just the same as ClassLoader.
Thx!
hadoop
shareimprove this question asked Apr '13 at 14:18
foolyoghurt "How does it work" is a different question from "why is my usage not working for me?" Which do you really want to know? – Matt Ball Apr '13 at 14:19
add a comment
Answer
active
oldest
votes
up vote down vote Browsing the Javadocs and source code for Configuration, Strings are assumed to be classpaths (line ), rather than relative to the file system - you should use URLs to reference files on the local file system as follows: conf.addResource(new File("../resource.xml").toURI().toURL()); shareimprove this answer answered Apr '

2  hadoop MapReduce 读取参数

下面我们先通过一个表格来看下,在hadoop中,使用全局变量或全局文件共享的几种方法

1     使用Configuration的set方法,只适合数据内容比较小的场景
2     将共享文件放在HDFS上,每次都去读取,效率比较低
3     将共享文件放在DistributedCache里,在setup初始化一次后,即可多次使用,缺点是不支持修改操作,仅能读取

下面是第3中方式的介绍

aaarticlea/png;base64,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*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" alt="" />

Alternative to deprecated DistributedCache class in Hadoop 2.2.
As of Hadoop 2.2., if you use org.apache.hadoop.filecache.DistributedCache class to load files you want to add to your job as distributed cache, then your compiler will warn you regarding this class being deprecated. In earlier versions of Hadoop, we used DistributedCache class in the following fashion to add files to be available to all mappers and reducers locally:
? // In the main driver class using the new mapreduce API
Configuration conf = getConf();
...
DistributedCache.addCacheFile(new Path(filename).toUri(), conf);
...
Job job = new Job(conf);
... ? // In the mapper class, mostly in the setup method
Path[] myCacheFiles = DistributedCache.getLocalCacheFiles(job); But now, with Hadoop 2.2., the functionality of addition of files to distributed cache has been moved to the org.apache.hadoop.mapreduce.Job class. You may also notice that the constructor we used to use for the Job class has also been deprecated and instead we should be using the new factory method getInstance(Configuration conf). The alternative solution would look as follows: ? // In the main driver class using the new mapreduce API
Configuration conf = getConf();
...
Job job = Job.getInstance(conf);
...
job.addCacheFile(new URI(filename)); ? // In the mapper class, mostly in the setup method
URI[] localPaths = context.getCacheFiles();

souce code

原文链接  http://www.bigdataspeak.com/2014/06/alternative-to-deprecated.html

Hadoop DistributedCache is deprecated - what is the preferred API?
http://*.com/questions/21239722/hadoop-distributedcache-is-deprecated-what-is-the-preferred-api 大矩阵相乘
http://www.cnblogs.com/zhangchaoyang/articles/4646315.html 如何使用Hadoop的DistributedCache
http://blog.itpub.net/29755051/viewspace-1220340/ DistributedCache小记
http://www.cnblogs.com/xuxm2007/p/3344930.html 迭代式MapReduce解决方案(二) DistributedCache
http://hongweiyi.com/2012/02/iterative-mapred-distcache/

其它参考链接

3 hadoop Mapper 类

Mapper类有四个方法:

()protected void setup(Context context)

()protected void map(KEYIN key,VALUEIN value,Context context)

()protected void cleanup(Context context)

()public void run(Context context)

setup()方法一般是在实例化时用户程序需要做的一些初始化工作(如打开一个全局文件,建立数据库链接等等)

cleanup()方法是收尾工作,如关闭文件或者执行map()后的键值对分发等。

map()方法承担主要的处理工作,一般我们些代码的时候主要用到的是map方法。

默认Mapper的run()方法的核心代码如下:

public void run(Context context) throws IOException,InterruptedException

{

     setup(context);

    while(context.nextKeyValue())

          map(context.getCurrentKey(),context,context.getCurrentValue(),context);

    cleanup(context);

}

setup和cleanup仅仅在初始化Mapper实例和Mapper任务结束时由系统作为回调函数分别各做一次,并不是每次调用map方法时都去执行。所以如果是要处理map中的某些数值数据时,想把代码写在cleanup里面需要特别注意。

Mapper输出结果到reduce阶段之前,还有几个可以自定义的步骤

()combiner  每个节点输出的键值可以先进行合并处理。

()合并处理之后如果还想将不同key值分配给不同reduce进行处理,称为shuffle洗牌过程,提供了一个partioner类来完成。

()如果想将key值自定义进行排序,这边提供了一个sort类,可以自定义进行排序

aaarticlea/png;base64,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" alt="" />

 4  hadoop ChainMapper 和  ChainReducer

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.chain.ChainMapper;
import org.apache.hadoop.mapreduce.lib.chain.ChainReducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WCount { public static void main(String[] args) throws Exception {
Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "wordcount");
job.setJarByClass(WCount.class); FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1])); ChainMapper.addMapper(job, WCMapper.class, LongWritable.class, Text.class, Text.class, LongWritable.class, conf);
ChainReducer.setReducer(job, WCReduce.class, Text.class, LongWritable.class, Text.class, LongWritable.class, conf);
ChainReducer.addMapper(job, WCMapper2.class, Text.class, LongWritable.class, LongWritable.class, Text.class, conf); job.waitForCompletion(true);
} public static class WCMapper extends
Mapper<LongWritable, Text, Text, LongWritable> {
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
String[] lineSet = line.split(" ");
for (String e : lineSet) {
context.write(new Text(e), new LongWritable(1));
}
}
} public static class WCReduce extends
Reducer<Text, LongWritable, Text, LongWritable> { private LongWritable outVla = new LongWritable(); @Override
protected void reduce(Text k1, Iterable<LongWritable> v1,
Context context) throws IOException, InterruptedException { long sum = 0;
for (LongWritable e : v1) {
sum += e.get();
}
outVla.set(sum);
context.write(k1, outVla);
}
} public static class WCMapper2 extends
Mapper<Text, LongWritable, LongWritable, Text> { @Override
protected void map(Text key, LongWritable value, Context context)
throws IOException, InterruptedException { context.write(value, key);
}
} }

wordCount

 5 Hadoop JobControl

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.jobcontrol.ControlledJob;
import org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WCount2 { public static void main(String[] args) throws Exception {
Configuration conf = new Configuration(); // 第一个job的配置
Job job1 = Job.getInstance(conf, "wordcount1");
job1.setJarByClass(WCount2.class); job1.setMapperClass(WCMapper.class);
job1.setMapOutputKeyClass(Text.class);
job1.setMapOutputValueClass(LongWritable.class); job1.setReducerClass(WCReduce.class);
job1.setOutputKeyClass(Text.class);
job1.setOutputValueClass(LongWritable.class); // job1的输入输出文件路径
FileInputFormat.addInputPath(job1, new Path(args[0]));
FileOutputFormat.setOutputPath(job1, new Path(args[1])); // 加入控制容器
ControlledJob ctrljob1 = new ControlledJob(conf);
ctrljob1.setJob(job1); // 第二个作业的配置
Job job2 = Job.getInstance(conf, "wordcount2");
job2.setJarByClass(WCount2.class); job2.setMapperClass(WCMapper2.class);
job2.setMapOutputKeyClass(Text.class);
job2.setMapOutputValueClass(Text.class); // 作业2加入控制容器
ControlledJob ctrljob2 = new ControlledJob(conf);
ctrljob2.setJob(job2); // 设置多个作业直接的依赖关系
// 如下所写:
// 意思为job2的启动,依赖于job1作业的完成
ctrljob2.addDependingJob(ctrljob1); // job2的输入输出文件路径
FileInputFormat.addInputPath(job2, new Path(args[1]));
FileOutputFormat.setOutputPath(job2, new Path(args[2])); // 主的控制容器,控制上面的总的两个子作业
JobControl JC = new JobControl("wordcount");
// 添加到总的JobControl里,进行控制
JC.addJob(ctrljob1);
JC.addJob(ctrljob2); // 在线程启动,记住一定要有这个
Thread t = new Thread(JC);
t.start(); while (true) {
if (JC.allFinished()) {// 如果作业成功完成,就打印成功作业的信息
System.out.println(JC.getSuccessfulJobList());
JC.stop();
break;
}
} } public static class WCMapper extends
Mapper<LongWritable, Text, Text, LongWritable> {
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
String[] lineSet = line.split(" ");
for (String e : lineSet) {
context.write(new Text(e), new LongWritable(1));
}
}
} public static class WCReduce extends
Reducer<Text, LongWritable, Text, LongWritable> { private LongWritable outVla = new LongWritable(); @Override
protected void reduce(Text k1, Iterable<LongWritable> v1,
Context context) throws IOException, InterruptedException { long sum = 0;
for (LongWritable e : v1) {
sum += e.get();
}
outVla.set(sum);
context.write(k1, outVla);
}
} public static class WCMapper2 extends
Mapper<LongWritable, Text, Text, Text> { private Text outval = new Text();
private Text outkey = new Text(); @Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
String[] lineSet = line.split("\t"); outkey.set(lineSet[1]);
outval.set(lineSet[0]); context.write(outkey, outval);
}
} }

WordCount

 6 hadoop Filesystem closed

We are running a workflow in oozie. It contains two actions: the first is a map reduce job that generates files in the hdfs and the second is a job that should copy the data in the files to a database.

Both parts are done successfully but the oozie throws an exception at the end that marks it as a failed process. This is the exception:

2014-05-20 17:29:32,242 ERROR org.apache.hadoop.security.UserGroupInformation:   PriviledgedActionException as:lpinsight (auth:SIMPLE) cause:java.io.IOException: Filesystem   closed
2014-05-20 17:29:32,243 WARN org.apache.hadoop.mapred.Child: Error running child
java.io.IOException: Filesystem closed
at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:565)
at org.apache.hadoop.hdfs.DFSInputStream.close(DFSInputStream.java:589)
at java.io.FilterInputStream.close(FilterInputStream.java:155)
at org.apache.hadoop.util.LineReader.close(LineReader.java:149)
at org.apache.hadoop.mapred.LineRecordReader.close(LineRecordReader.java:243)
at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.close(MapTask.java:222)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:421)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332)
at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
at org.apache.hadoop.mapred.Child.main(Child.java:262) 2014-05-20 17:29:32,256 INFO org.apache.hadoop.mapred.Task: Runnning cleanup for the task Any idea ? Thanks, Lital 2 Answers
active
oldest
votes
up vote
2
down vote Use the below configuration while accessing file system. Configuration conf = new Configuration();
conf.setBoolean("fs.hdfs.impl.disable.cache", true);
FileSystem fileSystem = FileSystem.get(conf); shareimprove this answer answered Jun 24 '14 at 12:49
NelsonPaul
12615 add a comment
Did you find this question interesting? Try our newsletter Sign up for our newsletter and get our top new questions delivered to your inbox (see an example).
up vote
0
down vote I had encountered a similar issue that prompted java.io.IOException: Filesystem closed. Finally, I found I closed the filesystem somewhere else. The hadoop filesystem API returns the same object. So if I closed one filesystem, then all filesystems are closed. I get the solution from this answer
shareimprove this answer

answers

aaarticlea/png;base64,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" alt="" />

http://*.com/questions/23779186/ioexception-filesystem-closed-exception-when-running-oozie-workflow

http://www.07net01.com/linux/hadoop_Caused_by__java_io_IOException__Filesystem_closed_726094_1393310719.html

参考资料

如何在hadoop中控制map的个数   http://blog.csdn.net/lylcore/article/details/9136555

大数据技术博客   http://lxw1234.com/

Mapper类     http://blog.csdn.net/witsmakemen/article/details/8445133

使用内部jar   http://*.com/questions/17265002/hadoop-no-filesystem-for-scheme-file

hadoop 集群 Running job 卡住   http://bbs.csdn.net/topics/391031853

Container is running beyond memory limits  http://*.com/questions/21005643/container-is-running-beyond-memory-limits

MapReduce使用JobControl管理实例  http://www.cnblogs.com/manhua/p/4136138.html

hadoop jar 和 java -cp 之间的不同   http://blog.csdn.net/aaa1117a8w5s6d/article/details/34120003

hadoop map 读取数据库   http://blog.csdn.net/qwertyu8656/article/details/6426054

虚拟内存超出界限  http://*.com/questions/14110428/am-container-is-running-beyond-virtual-memory-limits