java - 将计算迁移到云端

标签 java refactoring hadoop cloud mapreduce

是否有任何自动工具可以将遗留的单处理器程序转换到云端,这意味着目标程序已准备好在云端执行(例如为 Hadoop 编写的程序)?如果没有,手动进行此类转换(可能完全重写)时的最佳做法是什么?另外,我如何知道/评估遗留程序(或编程任务)是否适合计算?

示例:假设我有一个仅使用标准 Java 库(例如 HashMap)编写的 WordCount 程序,如何将其转换为使用 Hadoop 编写的程序,就像 Hadoop 发行版示例代码中提供的那样?

最佳答案

Is there any automatic tool that I can transform legacy uniprocessor programs to the cloud?

我认为没有可以将遗留单处理器程序转换为云的自动化工具。

如果遗留程序是使用 MapReduce 范例编写的,那么使用 Hadoop 进行一些修改后在云中运行应该会比较容易。如果不是,则必须以 MapReduce 方式考虑问题,并使用 Java 或其他支持读/写 STDIN/STDOUT 的语言为 Hadoop 重写。

此外,如果编写遗留程序的语言可以读/写 STDIN/STDOUT,那么您可以使用 Hadoop Streaming .

Also, how can I know/evaluate whether a legacy program (or programming task) is suitable for computing?

如果处理可以独立并行发生,并且数据也可以在多台机器上拆分,那么它可能是 Hadoop 的合适候选者。

HDFS(Hadoop 分布式文件系统)专为高延迟和高吞吐量而设计。如果要求是低延迟,那么您可能会考虑 HBase。

此外,HDFS 是为大文件(GB、TB 和 PB)设计的。如果遗留应用程序有太多小文件,那么 alternative approach必须考虑。

Some more things to consider.

Hadoop 开箱即用,只需进行一些最小的配置更改,但要有效运行它,必须调整许多参数,有时需要直接进入代码。

此外,尝试 POC,从小事着手解决问题区域并评估利弊。

建议购买'Hadoop : The Definitive Guide'书。

关于java - 将计算迁移到云端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7902970/

相关文章:

python - 重构此 Python 代码以迭代容器

c# - 如何重构这些重载的类构造函数? (C#)

java - 在 Windows 7 SP1 上安装 Hadoop 2.7.1 时出现 CMake 错误

hadoop - Map Reduce 程序中的问题

hadoop - EMR hadoop (MRv2) 集群最大容量为 80%。剩下的20%如何获得?

java - Spring 单例范围

java - 需要反序列化 json 格式的帮助

c++ - 关于如何将旧式嵌入式应用程序限制为实时应用程序的建议

java - 在 mysql 和 java 中存储 Google 用户 ID 值的最佳方法

java - 如何让 JSR-356 (javax.websockets.api) 在未嵌入的 Jetty 9.3 JEE 环境中工作?