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

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

先决条件

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

将数据上传到 Azure 存储

实用程序

Azure 提供以下实用工具用于操作 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.chinacloudapi.cn/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
适用于 Azure 的 CloudBerry Explorer
Cyberduck

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

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

使用服务上传

Azure 数据工厂

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

存储类型 文档
Azure Blob 存储 使用 Azure 数据工厂向/从 Azure Blob 存储复制数据
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,接下来请阅读以下文章了解如何执行分析: