Hdoop
- 4V特征
Volume 大数据量
Velocity(速度快)
Variety(多样化)
Value(价值密度低)
- Hadoop三大发行版本
Apache Clodera Hortonworks
- Hadoop组成
在Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大。
在Hadoop2.x时代,增加了Yarn。Yarn只负责资源的调度,MapReduce只负责运算。
HDFS:高可靠、高吞吐量的分布式文件系统
YARN:作业调度与集群资源管理的框架
MapReduce:分布式离线并行计算框架
Common:支持其他模块运行的工具模块(Configuration、序列化机制)
-
副本策略
- 如果client本身就是一个datanode节点,如果不是随机选择一个datanode1
- 在不同机架上选择一个datanode,存放第一个副本
- 在datanode1相同机架上选择一个datanode来存放第三个副本
-
在给定的文件中,统计输出每一个单词出现的次数
#### need jar : log4j-core ,junit, hadoop-common ,hadoop-client,hadoop-hdfs
* WCdriver类
psvm
//创建Job实例来提供默认配置
Configuration con = new Configuration();
Job job = Job.getInstance(con);
//让job来识别mapper和reducer两个业务
job.setMapperClass(WCMapper.class);
job.setReducerClass(WCReducer.class);
//设置map阶段的key和value输出
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
//最终最终输出的key和value的类型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Intwritable.class);
//设置输入和输出路径
FileInputFormat.setInputPaths(job,new Path("/local"));
FileOutputFormat.setOutputPath(job,new Path("/output"));
//提交
job.waitForConpletion(true);
* * WCMapper
public class WCMapper extends Mapper<LonWritable,Text,Text,InWritable>{
重写 方法
String split[] = value.toString().split("");
for(String s: split){
Text text = new Text();
text.set(s);
InWritable intWritable = new IntWritable(1);
context.write(text.intWritable);
}
* public class WCReducer extends Reducer<Text,IntWritable,Text,InWritable>{
重写 方法
InWritable res = new IntWritable();
int sum = 0;
for(IntWritable one: values){
sum+=one.get();
}
res.set(sum);
context.write(key,res);
}
具体实现:先上传要查询的文件到hdfs
将代码打成jar包 (注意driver里的输入和输出路径)上传到本地
启动hadoop ---------------hadoop jar jar包路径名字 driver路径 输入在hdfs的路径 即将要输出的路径名称(不存在的)
hdoop工作流程:
https://blog.csdn.net/csdnliuxin123524/article/details/80191199
有多少个文件就至少有多少个map