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

基于 Linux 的 HDInsight 群集使用 Mono 运行 .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 与 .NET 之间的兼容性的详细信息,请参阅 Mono 兼容性(https://www.mono-project.com/docs/about-mono/compatibility/) 文档)。

自动可移植性分析

.NET 可移植性分析器可用于生成应用程序与 Mono 之间不兼容的报告。 使用以下步骤配置分析器以检查应用程序的 Mono 可移植性:

  1. 安装 .NET 可移植性分析器。 在安装过程中,选择要使用的 Visual Studio 版本。

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

    4.5 在 Mono 部分中签入了分析器设置。

    选择“确定”保存配置。

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

  4. 分析完成后,选择“ 分析>视图分析报告”。 在 “可移植性分析结果”中,选择“ 打开报表 ”以打开报表。

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

重要

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

手动可移植性分析

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

修改和生成

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

部署和测试

使用 .NET 可移植性分析器或手动分析中的建议修改解决方案后,必须使用 HDInsight 对其进行测试。 在基于 Linux 的 HDInsight 群集上测试解决方案可能会揭示需要更正的微妙问题。 建议在测试应用程序时在应用程序中启用其他日志记录。

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

后续步骤