gpt4 book ai didi

Hadoop - 需要基本 + 流式指导

转载 作者:行者123 更新时间:2023-12-02 21:55:49 24 4
gpt4 key购买 nike

我在 Apache Hadoop 0.2.x 版本中编写了一些 MapReduce 程序——简单来说,我是一个初学者。

我正在尝试处理一个大的(超过 10GB)SegY使用名为 SeismicUnix 的软件在 Linux 机器上创建文件

列出了我在 Linux 机器上执行的基本命令:

//Read SegY file and convert to custom format (.su file)

segyread tape=input.sgy verbose=1 endian=0 | segyclean >input.su


//PIPE-SEPARATE the processing commands viz. suhilb and suaccor
suhilb | suaccor ntout=1001 sym=0 < Noise1_10.su > output.su


//Create headers for converting back to SegY format
segyhdrs < output.su bfile=binary hfile=header


//Create the final output file in SegY format
segywrite <output.su tape=output.segy buff=1 conv=1 bfile=binary hfile=header

这些步骤在一台机器上需要很长时间,因此,已经设置了一个 Apache Hadoop 集群来加快速度。

根据我的思考过程:
  • 将源 SegY 文件拆分到集群上(以便在每个节点上处理一小块大文件)
  • 可能,使用 Hadoop Streaming,调用 SeismicUnix 命令来处理每个节点上的小块
  • 将处理后的文件聚合成一个大的 SegY 文件,该文件将作为输出

  • 技术查询/挑战:
  • 源 SegY 文件需要先加载到 HDFS 上,然后才能提供给不同的节点进行处理。我该怎么做 - 创建一个 SequenceFile 或其他东西? SeismicUnix 读取 SegY 文件,将其转换为自定义格式,然后对其进行处理!
  • 如第二个命令所示,不同的操作(命令)按照它们想要执行的顺序进行管道传输,例如 suhilb |苏克现在,这可以在一个映射器中发生吗,还是我需要为 suhilb 创建一个映射器并将其输出提供给 suaccor - 这里高度混淆
  • 假设处理完成并且现在创建了每个节点 output.segy(这个假设是否正确???),我如何合并这些文件(这里完全没有头绪)?

  • 我读了一些关于 Google 的 FlumeJava 将其视为一种解决方案的信息,但我想坚持仅使用 Hadoop,即目前没有库方法。

    抱歉,如果我没有深入/简洁地询问我的问题 - 实际上,我无法清楚地了解设计/代码!

    最佳答案

    回答与您的查询相对应的点,

  • 如果您知道软件使用什么自定义格式来转换 SegY 文件,您可以将文件存储在 HDFS使用相同的格式。加载到 HDFS你应该研究像 Sqoop 这样的开源工具。
  • 您可以使用映射器按顺序执行各种操作。因此,不同的映射器将并行对您输入的不同 block 执行操作。
  • 要合并输出文件,请尝试使用对 output.segy 进行排序的 reducer 。基于键。您使用的示例 key 可以是文件的名称。因此,各种输出文件的所有数据都被路由到一个 reducer ,从而生成一个输出部分 -r - 000 文件。
  • 关于Hadoop - 需要基本 + 流式指导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14333858/

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