将基于 Windows 的 HDInsight 的 .NET 解决方案迁移到基于 Linux 的 HDInsight

基于 Linux 的 HDInsight 群集使用 Mono (https://mono-project.com) 运行 .NET 应用程序。 Mono 支持将 .NET 组件(例如 MapReduce 应用程序)与基于 Linux 的 HDInsight 配合使用。 在此文档中,了解如何迁移为基于 Windows 的 HDInsight 群集创建的 .NET 解决方案,以与基于 Linux 的 HDInsight 上的 Mono 配合使用。

Mono 与 .NET 的兼容性

HDInsight 版本 3.6 附带了 Mono 版本 4.2.1。 有关包含在 HDInsight 中的 Mono 版本的详细信息,请参阅 HDInsight 组件版本。 若要安装 Mono 的特定版本,请参阅安装或更新 Mono 文档。

有关 Mono 与 .NET 间兼容性的详细信息,请参阅 Mono 兼容性 (http://www.mono-project.com/docs/about-mono/compatibility/) 文档。

Important

SCP.NET 框架与 Mono 兼容。 有关将 SCP.NET 与 Mono 配合使用的详细信息,请参阅使用 Visual Studio 为 HDInsight 上的 Apache Storm 开发 C# 拓扑

自动可移植性分析

.NET Portability Analyzer 可以用于生成有关应用程序和 Mono 之间不兼容性的报表。 使用以下步骤配置该分析器,以检查应用程序是否可以移植到 Mono:

  1. 安装 .NET Portability Analyzer。 在安装期间,选择要使用的 Visual Studio 版本。

  2. 在 Visual Studio 2015 中,依次选择“分析” > “可移植性分析器设置”,并确保在“Mono”部分选中了“4.5”。

    在分析器设置的 Mono 部分选中了 4.5

    选择“确定”以保存配置。

  3. 依次选择“分析” > “分析程序集可移植性”。 选择包含解决方案的程序集,并选择“打开”以开始分析。

  4. 分析完成后,依次选择“分析” > “查看分析报表”。 在“可移植性分析结果”中,选择“打开报表”以打开某个报表。

    可移植性分析器结果对话框

Important

分析器无法捕获解决方案的每个问题。 例如,如果 Mono 在 Windows 上运行,文件路径 c:\temp\file.txt 视为有效。 同一路径在 Linux 平台上无效。

手动可移植性分析

使用应用程序可移植性 (http://www.mono-project.com/docs/getting-started/application-portability/) 文档中的信息手动审核代码。

修改和生成

可以继续使用 Visual Studio 为 HDInsight 生成 .NET 解决方案。 但必须确保将项目配置为使用 .NET Framework 4.5。

部署和测试

使用 .NET Portability Analyzer 或手动分析提供的建议修改解决方案后,必须通过 HDInsight 测试该解决方案。 在基于 Linux 的 HDInsight 群集上测试解决方案可能会揭露一些需要更正的细小问题。 我们建议在测试时,在应用程序中启用其他日志记录。

有关访问日志的详细信息,请参阅以下文档:

后续步骤