我将有3个工作同时运行在hadoop,他们是无关的。其中一个文件的输入是通过http,即大文件的缓慢下载。其他的是来自hdfs和s3n文件系统的输入。我对用hadoop构建这种东西还不熟悉。如何优化Map阶段?我希望磁盘读取至少在下载发生的同时发生,这似乎是合乎逻辑的。我当然不希望所有的大型磁盘操作都等待下载(每20次下载可能需要一个小时)我想我不想有多个,大,磁盘读取发生在同一时间。hadoop是如何处理这个map/input/data-acquisition阶段的?
mgdq6dx11#
在mapreduce中,通常所有的maps/Reducer都做相同的工作。但您可以通过两种不同的解决方案来实现您的目标:1.基本上,您应该考虑将作业拆分为两个独立的作业,然后使用每个节点指定数量的任务启动它们。https://issues.apache.org/jira/browse/hadoop-5170 但这种贴片只适用于cdh,而不适用于碱基分布。2.另一个选择是实现您自己的输入格式,它将能够对map操作进行编码,并平衡每个节点不同任务的数量。这可以通过在inputsplit中为每个分割指定主机来实现。
1条答案
按热度按时间mgdq6dx11#
在mapreduce中,通常所有的maps/Reducer都做相同的工作。
但您可以通过两种不同的解决方案来实现您的目标:
1.基本上,您应该考虑将作业拆分为两个独立的作业,然后使用每个节点指定数量的任务启动它们。https://issues.apache.org/jira/browse/hadoop-5170 但这种贴片只适用于cdh,而不适用于碱基分布。
2.另一个选择是实现您自己的输入格式,它将能够对map操作进行编码,并平衡每个节点不同任务的数量。这可以通过在inputsplit中为每个分割指定主机来实现。