分布式计算:从Unix工具到MapReduce的探索
1. Unix工具的特点与局限
Unix系统最初尝试将一切都表示为文件,但BSD套接字API偏离了这一传统。像Plan 9和Inferno这类研究性操作系统在文件使用上更为一致,它们将TCP连接表示为 /net/tcp 中的文件。
不过,标准输入(stdin)和标准输出(stdout)存在一定的局限性。对于需要多个输入或输出的程序,实现起来虽有可能,但颇具挑战性。而且,无法将程序的输出直接通过管道传输到网络连接中。
Unix工具的成功之处在于其具有较高的透明度和便于实验的特性:
- 输入文件的不变性 :Unix命令的输入文件通常被视为不可变的,这意味着可以多次运行命令,尝试不同的命令行选项,而不会损坏输入文件。
- 输出检查的便利性 :可以在管道的任何位置终止操作,将输出通过管道传输到 less 命令中查看,以确认输出是否符合预期,这对于调试非常有帮助。
- 分阶段处理的灵活性 :可以将管道某一阶段的输出写入文件,并将该文件作为下一阶段的输入,这样在后续阶段出现问题时,无需重新运行整个管道。
然而,Unix工具最大的局限在于只能在单台机器上运行,这也为Hadoop等工具的出现提供了契机。
2. MapReduce与分布式文件系统
MapReduce类似于Unix工具,但可以分布在数千台机器上运行。它是一种相对简单粗暴却十分有效的工具。单个MapReduce作业类似于单个Uni
超级会员免费看
订阅专栏 解锁全文

674

被折叠的 条评论
为什么被折叠?



