暑期实训day4
总结:今天上午主要学习了反射机制,学到了一些反射的基本原理,就是通过字符串得到想要获得的类,学到了一些经验:在框架构建过程中出现ClassNotFound,大多数是没有加载架包,最大的对象是Object,最大的类是Class。同时学习了两种JDBC的封装方法。下午主要学了MapReduce,学会了配置MapReduce,在linux中运行MapReduce的简单的统计单词的例子,同时了解了MapReduce的工作原理。会学会了在Eclipse下进行简单的MapReduce工作。
MyMap.java:
public class MyMap extends Mapper<LongWritable, Text, Text, IntWritable> {
@Override
protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
String line=value.toString();
String[] words=line.split(" ");
for (String word : words) {
context.write(new Text(word.trim()), new IntWritable(1));
}
}
}
MyReduce.java:
public class MyReduce extends Reducer<Text, IntWritable, Text, IntWritable> {
@Override
protected void reduce(Text key, Iterable<IntWritable> values,
Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {
// TODO Auto-generated method stub
int sum=0;
for (IntWritable intWritable : values) {
sum+=intWritable.get();
}
context.write(key, new IntWritable(sum));
}
}
MyJob.java:
public class MyJob extends Configured implements Tool{
public static void main(String[] args) throws Exception {
MyJob myJob=new MyJob();
ToolRunner.run(myJob, null);
}
@Override
public int run(String[] args) throws Exception {
// TODO Auto-generated method stub
Configuration conf=new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.80.141:9000");
Job job=Job.getInstance(conf);
job.setJarByClass(MyJob.class);
job.setMapperClass(MyMap.class);
job.setReducerClass(MyReduce.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path("/hadoop/hadoop.txt"));
FileOutputFormat.setOutputPath(job, new Path("/hadoop/out"));
job.waitForCompletion(true);
return 0;
}
}
遇到的问题:通过Eclipse把项目部署到linux的Tomcat下,结果部署上去之后,输入IP地址后不能进入Tomcat界面,经过查找Tomcat的目录发现wabapp目录下的ROOT里面原来的文件不见了,变成了之前部署上去的项目,导致不能进入Tomcat,最后使用命令把文件删除,重新导入了Tomcat的原来的ROOT文件,最后成功解决此问题。但是部署项目到linux的Tomcat下还是不能实现,有待解决,不知道为什么会覆盖原来的ROOT项目。还有在运行MapReduce的统计单词数目的小例子的时候运行了十几分钟最后出现了Timeout的异常,最后查到是运行计算时间超时了,最后的解决办法是把虚拟机的内存调大从512M到1G,最后解决了这个问题。
思维导图: