什么是Hadoop
一个分布式计算平台,以Hadoop分布式文件系统(HDFS)、MapReduce为核心。
Hadoop 的优点
易扩展:方便向集群中添加节点。
可靠:
容错:多个副本。
高效:在节点间动态移动数据。
Hadoop的项目结构
HDFS、MapReduce、Yarn、Common。
Zookeeper、Hive、HBASE、Pig。
MapReduce的计算流程
输入数据——切片——map——shuffle——reduce——输出数据。
HDFS的优点
手写WordCount程序
public class WordCount{
public static void Map extends Mapper<LongWritable,Text,Text,IntWritable>{
@override
public void map(LongWritable key,Text value,Context context){
context.write(value,new IntWritable(1));
}
}
public static void Reducer extends Reducer<Text,IntWritable,Text,IntWritable>{
@override
public void reduce(Text key,Iterable values,Context context){
for(IntWritable value:values)
sum += value;
context.write(key,sum)
}
}
public static void main(String [] args){
//构建、配置任务
Configuration conf = new Configuration();
Job job = Job.getInstance(conf);
job.setJarByClass(WordCount.class);
job.setMapperClass(Map.class);
job.setReducerClass(Reducer.class);
//设置输入、输出路径
FileInputFormat.addInputPath(conf,new Path());
FileOutputFormat.setOutputPath(conf,new Path());
//设置输出键值对类型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}