我在Apache Hadoop 0.2.x版本中编写了一些MapReduce程序 - 简单来说,我是初学者。
我正在尝试使用名为SegY
的软件在Linux机器上处理大型(超过10GB)SeismicUnix文件列出了我在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集群来加快速度。
根据我的思考过程:
技术疑问/挑战:
我读了一下Google的FlumeJava认为它作为一种解决方案,但我想坚持使用Hadoop,即现在没有库方法。
道歉,如果我没有深入/简洁地询问我的问题 - 实际上,我无法清楚地了解设计/代码!
答案 0 :(得分:0)
回答与您的查询相对应的分数,
如果您知道软件用于转换SegY文件的自定义格式,您可以使用相同的格式在HDFS
上存储文件。要加载到HDFS
,您应该查看像Sqoop这样的开源工具。
您可以使用映射器按顺序执行各种操作。因此,不同的映射器将并行地对输入的不同块执行操作。
要合并输出文件,请尝试使用reducer,它根据键对output.segy
进行排序。您使用的示例键可以是文件的名称。因此,各种输出文件的所有数据都被路由到一个reducer,从而生成一个输出部分-r-000文件。