小机灵鬼|42 张图带你揭秘后端技术都要学啥?(11)
int sum = 0;
//for循环遍历 , 将得到的values值累加
for (IntWritable value : values) {
sum += value.get;
}
result.set(sum);
context.write(key, result);//将结果保存到context中 , 最终输出形式为"key" + "result"
}
}
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
System.out.println("start");
Job job = Job.getInstance;
job.setJobName("wordCount");
Path in = new Path("hdfs://***:9000/user/hadoop/input/buyer_favorite1.txt");//设置这个作业输入数据的路径(***部分为自己liunx系统的localhost或者ip地址)
Path out = new Path("hdfs://***:9000/user/hadoop/output/wordCount"); //设置这个作业输出结果的路径
FileInputFormat.addInputPath(job, in);
FileOutputFormat.setOutputPath(job, out);
job.setJarByClass(WordCount.class);// 设置运行/处理该作业的类
job.setMapperClass(doMapper.class);//设置实现了Map步的类
job.setReducerClass(doReducer.class);//设置实现了Reduce步的类
job.setOutputKeyClass(Text.class);//设置输出结果key的类型
job.setOutputValueClass(IntWritable.class);//设置输出结果value的类型
////执行作业
System.exit(job.waitForCompletion(true) ? 0 : 1);
System.out.println("end");
}
}
那么这个map和reduce进程是怎么在分布式的集群中启动的呢?
map/reduce启动过程
上图比较清晰地阐述的整个过程 , 再描述一波 。 MR中主要是两种进程角色 , 分别为 JobTracke r和 TaskTracker 两种 。
JobTracker在集群中只有一个 , 而 TaskTracker 存在多个 , 当 JobClient 启动后 , 往 JobTracker 提交作业 , JobTracker查看文件路径决定在哪些服务器启动 Map 进程 。
然后发送命令给 TaskTracker , 告诉它要准备执行任务了 , TaskTracker收到任务后就会启动 TaskRunner 下载任务对应的程序 。
map计算完成 , TaskTracker对map输出结果 shuffer 操作然后加载 reduce 函数进行后续计算 , 这就是各个模块协同工作的简单过程 。
Hive上述过程还是比较麻烦 , 我们能不能直接写SQL , 然后引擎帮助我们生成mapreduce代码 , 就反复我们在web开发的时候 , 不直接写SQL语句 , 直接交给引擎那么方便 , 有的 , 它就是HIVE 。
举个例子:
SQL
拆分
那么使用MR的计算过程完成这条SQL的处理:
MR TO SQL
SparkSpark是基于内存计算的大数据并行计算框架 。 基于此说说上面hadoop中组件的缺点:
- 磁盘IO开销大 。 每次执行都需要从磁盘读取并且计算完成后还需要将将中间结果存放于磁盘
- 表达能力有限 。 大多数计算都需要转换为Map和Reduce两个操作 , 难以描述复杂的数据处理
推荐阅读
- 小机灵鬼|干货速来!透彻剖析微服务架构设计模式,深入开发Java有奇效
- 萌小糸说历史|他腹背受敌的时候,刘备为何见死不救(二),揭秘关羽死得很蹊跷
- 王者荣耀|王者重开机制揭秘:钻石段位以上必看,五战士,四辅助可重开,巅峰赛不能
- 雷军揭秘小米实验室1800台手机 2020智能手机和直播行业现状及发展前景趋势分析研究报告
- 国潮|国韵经典潮茶——韵茶获得满堂好评!揭秘TA一路高歌猛进的背后
- 时尚广州|T恤的标语你了解过吗?揭秘衣服上那些奇怪的字句
- 湖人|死守联防包夹哈登!名嘴揭秘湖人如何赢球:坚信红队三分球会力竭
- 《他其实没有那么爱你》不想给观众放大贫富差距丨揭秘
- |死守联防包夹哈登!名嘴揭秘湖人如何赢球:坚信红队三分球会力竭
- 落叶知秋|揭秘,IT培训行业营销拓客秘籍
