对MapReduce日志的提取可参考下面的博客
一.搭建Hadoop完全分布式集群
1.先配置服务器主机名
Namenode节点对应的主机名为master
Datanode节点对应的主机名为slave1、slave2
gedit /etc/hosts
2.下载安装Hadoop
3.配置master分布式环境
core-site.xml
hdfs-site.xml
mapred-site.xml
hadoop-env.sh
yarn-site.xml
4.安装配置jdk环境
5.配置SSH免密码登录
在slave1和slave2上执行相同的操作,在master上执行ssh slave1/slave2第一次提示输入密码,以后就可以直接免密码登录
6.将master节点上的Hadoop环境和JDK环境复制到slave1和slave2节点
scp /opt/hadoop/hadoop-2.8.0 root@slave1/slave2:/opt
7.在master节点上格式化分布式环境
8.在master节点上启动分布式环境
sbin/start-all.sh等价于先启动sbin/hadoop-daemon namenode start,然后再启动sbin/hadoop-daemon datanode start
二.执行wordcount任务
1.新建个input文件夹,并在里面编辑一定的内容
2.在hdfs文件系统中创建 /user/root/in(逐层创建不容易出错),并将本地文件input上传到hdfs目录里
3.执行wordcount函数进行Map/Reduce任务
4.在slave1节点和slave2节点安装配置Java集成化工具IDEA,并对MapReduce日志进行查询输出
package com.itmyhome.log;
import java.io.*;
import java.util.List;
/**
* Created by TracyMcGrady on 2017/6/29.
*/
public class LogHandle {
public static void readFile(String fileName) {
String output = "";
File file = new File(fileName);
if(file.exists()){
if(file.isFile()){
try{
BufferedReader input = new BufferedReader (new FileReader(file));
StringBuffer buffer = new StringBuffer();
String text;
while((text = input.readLine()) != null)
buffer.append(text +"/n");
output = buffer.toString();
}
catch(IOException ioException){
System.err.println("File Error!");
}
System.out.println(output);
}
else if(file.isDirectory()){
System.out.println("Content Name is "+file.getName());
String[] dir = file.list();
for(int i=0; i<dir.length; i++){
System.out.println(dir[i]);
//output += dir[i] +"\n";
readFile(dir[i]);
}
}
}
else{
System.err.println("This Content has not any file!");
}
return;
}
public static void main (String args[]){
readFile("/opt/hadoop/hadoop-2.8.0/logs/userlogs");
}
}
主要查询MapReduce任务对应的userlogs目录下的syserr,syslog和sysout文件里的输出内容
附:MapReduce的Web管理界面