你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 HDInsight 中上传 Apache Hadoop 作业的数据

HDInsight 提供基于 Azure 存储和 Azure Data Lake Storage 的 Hadoop 分布式文件系统 (HDFS)。 此存储包括 Gen2。 Azure 存储和 Data Lake Storage Gen2 旨在作为 HDFS 扩展。 它们通过启用 Hadoop 环境中的整套组件直接操作其管理的数据。 Azure 存储和 Data Lake Storage Gen2 是不同的文件系统。 系统已针对此类数据的存储和计算进行优化。 若要了解使用 Azure 存储的优点,请参阅将 Azure 存储与 HDInsight 配合使用。 另请参阅将 Data Lake Storage Gen2 与 HDInsight 配合使用

先决条件

在开始下一步之前,请注意以下要求:

将数据上传到 Azure 存储

实用程序

Microsoft 提供以下实用工具用于操作 Azure 存储:

工具 Linux OS X Windows
Azure 门户
Azure CLI
Azure PowerShell
AzCopy
Hadoop 命令

注意

Hadoop 命令仅在 HDInsight 群集上可用。 使用该命令只能将数据从本地文件系统载入 Azure 存储。

Hadoop 命令行

仅当数据已存在于群集头节点中时,才可以使用 Hadoop 命令行将数据存储到 Azure 存储 Blob。

若要使用 Hadoop 命令,必须先通过 SSH 或 PuTTY 连接到头节点。

连接之后,可以使用以下语法将文件上传到存储。

hadoop fs -copyFromLocal <localFilePath> <storageFilePath>

例如: hadoop fs -copyFromLocal data.txt /example/data/data.txt

由于 HDInsight 的默认文件系统在 Azure 存储中,因此 /example/data/data.txt 实际是在 Azure 存储中。 也可以将该文件表示为:

wasbs:///example/data/data.txt

wasbs://<ContainerName>@<StorageAccountName>.blob.core.windows.net/example/data/davinci.txt

若要查看可用于文件的其他 Hadoop 命令的列表,请参阅 https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html

警告

在 Apache HBase 群集上,写入数据为 256 KB 时会使用默认块大小。 虽然在使用 HBase Api 或 REST API 时可良好运行,但使用 hadoophdfs dfs 命令编写大于 ~12 GB 的数据会导致错误。 有关详细信息,请参阅在 blob 上写入时的存储异常

图形客户端

还有一些应用程序可提供用于 Azure 存储的图形界面。 下表是其中一些应用程序的列表:

客户端 Linux OS X Windows
用于 HDInsight 的 Microsoft Visual Studio Tools
Azure 存储资源管理器
Cerulea
CloudXplorer
适用于 Microsoft Azure 的 CloudBerry Explorer
Cyberduck

将 Azure 存储装载为本地驱动器

请参阅将 Azure 存储装载为本地驱动器

使用服务上传

Azure 数据工厂

Azure 数据工厂服务是完全托管的服务,可将数据存储、处理及移动服务组合成自适应且可靠的简化数据生产管道。

存储类型 文档
Azure Blob 存储 使用 Azure 数据工厂向/从 Azure Blob 存储复制数据
(../data-factory/connector-azure-data-lake-store.md)
Azure Data Lake Storage Gen2 使用 Azure 数据工厂将数据加载到 Azure Data Lake Storage Gen2 中

Apache Sqoop

Sqoop 是一种专用于在 Hadoop 和关系数据库之间传输数据的工具。 可使用该工具从关系数据库管理系统 (RDBMS)(例如 SQL Server、MySQL 或 Oracle)中导入数据。 然后将其导入 Hadoop 分布式文件系统 (HDFS)。 使用 MapReduce 或 Hive 在 Hadoop 中转换数据,然后将数据导回 RDBMS。

有关详细信息,请参阅将 Sqoop 与 HDInsight 配合使用

开发 SDK

还可以使用 Azure SDK 通过以下编程语言来访问 Azure 存储:

  • .NET
  • Java
  • Node.js
  • PHP
  • Python
  • Ruby

有关安装 Azure SDK 的详细信息,请参阅 Azure 下载

后续步骤

现在,你已了解如何将数据导入 HDInsight,接下来请阅读以下文章了解如何执行分析: