hadoop - mapper 和 reducer 任务是如何分配的
问题描述
执行MR作业时,Hadoop将输入数据分成N个Split,然后启动对应的N个Map程序分别处理。
1.数据如何划分(拆分成不同的inputSplits)?
2.Split是如何安排的(你如何决定处理Split的Map程序应该在哪台TaskTracker机器上运行)?
3.如何读取分割后的数据?
4.如何减少任务分配?
在 hadoop1.X
在 hadoop 2.x
这两个问题有一定的关系,所以我一起问了,你可以看看你擅长哪个部分。
提前致谢 。
解决方案
数据在预定义大小的 HDFS 块中存储/读取,并由各种 RecordReader 类型通过使用字节扫描器读取,并知道要读取多少字节以确定何时需要返回 InputSplit。
更好地理解它的一个很好的练习是实现你自己的 RecordReader 并创建一个小记录、一个大记录和许多记录的大小文件。在多记录情况下,您尝试将记录拆分为两个块,但该测试用例应该与两个块上的一个大记录相同。
从 Hadoop 2 + YARN 开始,该图像已过时
推荐阅读
- ansible - Ansible:如何暂停角色的任务,直到另一个角色配置的其他主机上发生事件?
- java - 如何在 jogl 中使用 TextureIO.newTextureData()
- javascript - 对象作为 React 子对象无效(找到:对象与键 {0, 1, 2, 3, 4, 5, 6,7,8,9,10,11,12,13,14,15})
- python - 根据某些条件添加对象实例属性是一种好习惯吗?
- python - 如何在 Airflow 2.0 中使用 DockerOperator 从 GitLab 容器注册表中提取私有 docker 映像?
- jquery - 如何自定义free-jqgrid tooltip css样式
- python-3.x - ValueError: 目标尺寸 (torch.Size([8])) 必须与输入尺寸 (torch.Size([8, 2])) 相同
- python - 如何打印构造函数的属性?
- python - 如何使用 JSON 文件使用 folium 显示工具提示?
- css - CSS混合混合模式不适用于文本和背景图像