你当前正在访问 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 HDInsight 群集。 有关说明,请参阅 Azure 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 时可良好运行,但使用 hadoop
或 hdfs 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 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,接下来请阅读以下文章了解如何执行分析: