import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import java.io.IOException;
/*LongWritable 偏移量 Long,表示该行在文件中的位置,而不是行号
* Text map阶段的输入数据 一行文本信息 字符串类型 String
* Text map阶段的数据字符串类型String
* IntWritable map阶段输出的value类型,对应java中的int型,表示行号*/
public class WordCountMap extends Mapper<LongWritable,Text,Text,IntWritable>{ //空格占两个字符
@Override
protected void map(LongWritable key,Text value,Context context)throws IOException,InterruptedException{
//读取每行文本
String line=value.toString();
//splite拆分每行
String[] words=line.split(" ");//分词
//取出每个单词
for(String word:words){
//将单词转为Text类型
Text wordText=new Text(word);
//将1转变为IntWritable
IntWritable outValue=new IntWritable(1);
//写出单词,跟对应1
context.write(wordText,outValue);
}
}
}
hadoop启动进程
hdfs:分布式文件系统 分布式:多台机器处理任务
namenode:老大 管理
secondarynamenode:老二 备用的namenode
datanode:存储数据
yarn:资源调度
resourcemanager:老大 管理
nodemanager:小弟 处理任务
要写的代码:
java操作hdfs:
1.获取分布式文件系统fs=FileSystem.get()
2.fs.mkdir()操作文件系统
MapReduce:自己要写的业务代码,处理数据,运行在yarn上 在java上写
要写Map代码和Reduce代码