gpt4 book ai didi

hadoop - 运行 hadoop 以处理全天空 map 中的源

转载 作者:可可西里 更新时间:2023-11-01 15:17:24 27 4
gpt4 key购买 nike

我有几十张全天空图,每张二进制格式 (FITS) 大约 600MB。

对于每张天空图,我已经有几千个源位置的目录,即恒星、星系、 radio 源。

对于每个来源,我想:

  • 打开全天 map
  • 提取相关部分,通常不超过 20MB
  • 对它们进行一些统计
  • 将输出汇总到目录中

我想运行 hadoop,可能通过 streaming 接口(interface)使用 python 来并行处理它们。

我认为映射器的输入应该是目录的每条记录,然后 python 映射器可以打开全天空图,进行处理并将输出打印到 stdout

  1. 这是一种合理的方法吗?
  2. 如果是这样,我需要能够配置 hadoop,以便将完整的天空 map 本地复制到正在处理其来源之一的节点。我怎样才能做到这一点?
  3. 此外,将输入数据提供给 hadoop 的最佳方式是什么?对于每个来源,我都有完整的天空 map 、纬度和经度的引用

最佳答案

虽然这听起来不像你的几十张天空图是一个非常大的数据集,但我已经成功地使用 Hadoop 作为编写分布式应用程序/脚本的简单方法。

对于您描述的问题,我会尝试使用 Pydoop 实现解决方案,特别是 Pydoop Script (完全免责声明:我是 Pydoop 开发人员之一)。

您可以设置一个作业,将您要处理的天空 map 的部分列表作为输入,以某种文本格式序列化,每行一条记录。每个 map task 都应该处理其中一个;您可以使用标准的 NLineInputFormat 轻松实现这种拆分。

只要 map task 可以访问存储它的文件系统,就不需要将天空 map 本地复制到所有节点。使用 pydoop.hdfs 模块, map 函数可以读取它需要处理的天空 map 部分(给定它作为输入收到的坐标),然后按照你所说的那样发出统计数据,以便它们可以在 reducer 中聚合. pydoop.hdfs 可以从“标准”安装的文件系统和 HDFS 中读取。

虽然问题域完全不相关,但这个应用程序可以作为一个例子:

https://github.com/ilveroluca/seal/blob/master/seal/dist_bcl2qseq.py#L145

它使用相同的策略,准备要处理的“坐标”列表,将它们序列化为一个文件,然后启动一个将该文件作为输入的简单 pydoop 作业。

希望对您有所帮助!

关于hadoop - 运行 hadoop 以处理全天空 map 中的源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17617654/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com