Nahrání dat pro úlohy Apache Hadoop v HDInsightUpload data for Apache Hadoop jobs in HDInsight

Azure HDInsight nabízí v porovnání s Azure Storage a Azure Data Lake Storage (Gen1 a Gen2) plně funkční distribuovaného systému souborů Hadoop (HDFS).Azure HDInsight provides a full-featured Hadoop distributed file system (HDFS) over Azure Storage and Azure Data Lake Storage (Gen1 and Gen2). Azure Storage a Data Lake Storage Gen1 a Gen2 jsou navrženy jako rozšíření HDFS poskytuje bezproblémové prostředí pro zákazníky.Azure Storage and Data Lake Storage Gen1 and Gen2 are designed as HDFS extensions to provide a seamless experience to customers. Umožňují celá sada komponent v ekosystému Hadoop pracovat přímo na data, která spravuje.They enable the full set of components in the Hadoop ecosystem to operate directly on the data it manages. Azure Storage, Data Lake Storage Gen1 a Gen2 jsou systémy různých souborů, které jsou optimalizované pro úložiště dat a výpočty na těchto datech.Azure Storage, Data Lake Storage Gen1, and Gen2 are distinct file systems that are optimized for storage of data and computations on that data. Informace o výhodách používání služby Azure Storage najdete v tématu použití služby Azure Storage s HDInsight, použití Data Lake Storage Gen1 s HDInsight, a použití Data Lake Storage Gen2 s HDInsight.For information about the benefits of using Azure Storage, see Use Azure Storage with HDInsight, Use Data Lake Storage Gen1 with HDInsight, and Use Data Lake Storage Gen2 with HDInsight.

PožadavkyPrerequisites

Než začnete, vezměte na vědomí následující požadavky:Note the following requirements before you begin:

Nahrání dat do služby Azure StorageUpload data to Azure Storage

Veřejné službyUtilities

Společnost Microsoft poskytuje následující nástroje pro práci s Azure Storage:Microsoft provides the following utilities to work with Azure Storage:

NástrojTool LinuxLinux OS XOS X WindowsWindows
Azure PortalAzure portal
Azure CLIAzure CLI
Azure PowerShellAzure PowerShell
AzCopyAzCopy
Příkaz HadoopHadoop command

Poznámka

Příkaz Hadoop je dostupná pouze na clusteru HDInsight.The Hadoop command is only available on the HDInsight cluster. Tento příkaz umožňuje pouze načítání dat z místního systému souborů do služby Azure Storage.The command only allows loading data from the local file system into Azure Storage.

Hadoop příkazového řádkuHadoop command line

Příkazový řádek systému Hadoop je platný pouze pro ukládání dat do úložiště Azure blob, pokud data se již nachází hlavního uzlu clusteru.The Hadoop command line is only useful for storing data into Azure storage blob when the data is already present on the cluster head node.

Chcete-li použít příkaz systému Hadoop, musíte nejdřív připojit k hlavnímu uzlu pomocí SSH nebo PuTTY.In order to use the Hadoop command, you must first connect to the headnode using SSH or PuTTY.

Jakmile budete připojeni, můžete k nahrání souboru do úložiště následující syntaxi.Once connected, you can use the following syntax to upload a file to storage.

hadoop -copyFromLocal <localFilePath> <storageFilePath>

Například hadoop fs -copyFromLocal data.txt /example/data/data.txt.For example, hadoop fs -copyFromLocal data.txt /example/data/data.txt

Protože výchozí systém souborů pro HDInsight je ve službě Azure Storage, /example/data.txt ve skutečnosti je ve službě Azure Storage.Because the default file system for HDInsight is in Azure Storage, /example/data.txt is actually in Azure Storage. Můžete také odkazovat na soubor jako:You can also refer to the file as:

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

neboor

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

Seznam dalších příkazech Hadoop, které pracují se soubory naleznete v tématu https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.htmlFor a list of other Hadoop commands that work with files, see https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html

Varování

Na clusterech Apache HBase zablokuje výchozí velikost použitou při zápisu dat je 256 KB.On Apache HBase clusters, the default block size used when writing data is 256 KB. I když to funguje správně při použití rozhraní API HBase nebo rozhraní REST API, používat hadoop nebo hdfs dfs příkazy k zápisu dat větší než ~ 12 GB za následek chyby.While this works fine when using HBase APIs or REST APIs, using the hadoop or hdfs dfs commands to write data larger than ~12 GB results in an error. Další informace najdete v tématu výjimce úložiště pro zápis u objektu blob části v tomto článku.For more information, see the storage exception for write on blob section in this article.

Grafické klientůGraphical clients

Existuje také několik aplikací, které poskytuje grafické rozhraní pro práci s Azure Storage.There are also several applications that provide a graphical interface for working with Azure Storage. V následující tabulce je seznam některé z těchto aplikací:The following table is a list of a few of these applications:

KlientClient LinuxLinux OS XOS X WindowsWindows
Microsoft Visual Studio Tools pro HDInsightMicrosoft Visual Studio Tools for HDInsight
Azure Storage ExplorerAzure Storage Explorer
CeruleaCerulea
CloudXplorerCloudXplorer
CloudBerry Explorer for Microsoft AzureCloudBerry Explorer for Microsoft Azure
CyberduckCyberduck

Připojení Azure Storage jako místní diskMount Azure Storage as Local Drive

Zobrazit připojení Azure Storage jako místní jednotku.See Mount Azure Storage as Local Drive.

Nahrát pomocí službyUpload using services

Azure Data FactoryAzure Data Factory

Služba Azure Data Factory je plně spravovaná služba pro vytváření dat úložiště, zpracování dat a dat přesun služeb efektivní, škálovatelné a spolehlivé datové kanály, produkčního prostředí.The Azure Data Factory service is a fully managed service for composing data storage, data processing, and data movement services into streamlined, scalable, and reliable data production pipelines.

Typ úložištěStorage type DokumentaceDocumentation
Azure Blob StorageAzure Blob storage Kopírování dat do nebo z úložiště objektů Blob v Azure pomocí Azure Data FactoryCopy data to or from Azure Blob storage by using Azure Data Factory
Azure Data Lake Storage Gen1Azure Data Lake Storage Gen1 Kopírování dat do nebo z Azure Data Lake Storage Gen1 pomocí služby Azure Data FactoryCopy data to or from Azure Data Lake Storage Gen1 by using Azure Data Factory
Azure Data Lake Storage Gen2Azure Data Lake Storage Gen2 Načtení dat do Azure Data Lake Storage Gen2 s Azure Data FactoryLoad data into Azure Data Lake Storage Gen2 with Azure Data Factory

Apache SqoopApache Sqoop

Sqoop je nástroj určený pro přenos dat mezi platformou Hadoop a relačními databázemi.Sqoop is a tool designed to transfer data between Hadoop and relational databases. Můžete ho použít pro import dat ze systému správy relačních databází (RDBMS), jako jsou SQL Server, MySQL nebo Oracle do distribuovaného systému souborů Hadoop (HDFS), transformujte data v Hadoop MapReduce nebo Hive a pak exportovat data zpět do relační databázový systém.You can use it to import data from a relational database management system (RDBMS), such as SQL Server, MySQL, or Oracle into the Hadoop distributed file system (HDFS), transform the data in Hadoop with MapReduce or Hive, and then export the data back into an RDBMS.

Další informace najdete v tématu Sqoop použití s HDInsight.For more information, see Use Sqoop with HDInsight.

Sady SDK pro vývojDevelopment SDKs

Úložiště Azure lze rovněž přistupovat pomocí sady Azure SDK z těchto programovacích jazycích:Azure Storage can also be accessed using an Azure SDK from the following programming languages:

  • .NET.NET
  • JavaJava
  • Node.jsNode.js
  • PHPPHP
  • PythonPython
  • RubyRuby

Další informace o instalaci sady Azure SDK najdete v tématu Azure, soubory ke staženíFor more information on installing the Azure SDKs, see Azure downloads

Řešení potížíTroubleshooting

Výjimka úložiště pro zápis u objektu blobStorage exception for write on blob

Příznaky: Při použití hadoop nebo hdfs dfs příkazy k zápisu souborů, které jsou přibližně 12 GB nebo více v clusteru služby HBase můžete setkat s následující chybu:Symptoms: When using the hadoop or hdfs dfs commands to write files that are ~12 GB or larger on an HBase cluster, you may encounter the following error:

ERROR azure.NativeAzureFileSystem: Encountered Storage Exception for write on Blob : example/test_large_file.bin._COPYING_ Exception details: null Error Code : RequestBodyTooLarge
copyFromLocal: java.io.IOException
        at com.microsoft.azure.storage.core.Utility.initIOException(Utility.java:661)
        at com.microsoft.azure.storage.blob.BlobOutputStream$1.call(BlobOutputStream.java:366)
        at com.microsoft.azure.storage.blob.BlobOutputStream$1.call(BlobOutputStream.java:350)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: com.microsoft.azure.storage.StorageException: The request body is too large and exceeds the maximum permissible limit.
        at com.microsoft.azure.storage.StorageException.translateException(StorageException.java:89)
        at com.microsoft.azure.storage.core.StorageRequest.materializeException(StorageRequest.java:307)
        at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:182)
        at com.microsoft.azure.storage.blob.CloudBlockBlob.uploadBlockInternal(CloudBlockBlob.java:816)
        at com.microsoft.azure.storage.blob.CloudBlockBlob.uploadBlock(CloudBlockBlob.java:788)
        at com.microsoft.azure.storage.blob.BlobOutputStream$1.call(BlobOutputStream.java:354)
        ... 7 more

Příčina: HBase v HDInsight clustery výchozí velikost bloku 256 kB při zápisu do úložiště Azure.Cause: HBase on HDInsight clusters default to a block size of 256 KB when writing to Azure storage. Zatímco funguje pro rozhraní API HBase nebo rozhraní REST API, je výsledkem k chybě při použití hadoop nebo hdfs dfs nástroje příkazového řádku.While it works for HBase APIs or REST APIs, it results in an error when using the hadoop or hdfs dfs command-line utilities.

Rozlišení: Použití fs.azure.write.request.size k určení větší velikost bloku.Resolution: Use fs.azure.write.request.size to specify a larger block size. Můžete to provést na základě za použití pomocí -D parametru.You can do this on a per-use basis by using the -D parameter. Následující příkaz je uvedený příklad používající tento parametr se hadoop příkaz:The following command is an example using this parameter with the hadoop command:

hadoop -fs -D fs.azure.write.request.size=4194304 -copyFromLocal test_large_file.bin /example/data

Můžete taky zvýšit hodnotu fs.azure.write.request.size globálně pomocí Apache Ambari.You can also increase the value of fs.azure.write.request.size globally by using Apache Ambari. Následující postup slouží ke změně hodnoty v webovému uživatelskému rozhraní Ambari:The following steps can be used to change the value in the Ambari Web UI:

  1. V prohlížeči přejděte na uživatelské rozhraní Ambari Web pro váš cluster.In your browser, go to the Ambari Web UI for your cluster. Toto je https://CLUSTERNAME.azurehdinsight.net, kde CLUSTERNAME je název vašeho clusteru.This is https://CLUSTERNAME.azurehdinsight.net, where CLUSTERNAME is the name of your cluster.

    Po zobrazení výzvy zadejte uživatelské jméno admin a heslo pro cluster.When prompted, enter the admin name and password for the cluster.

  2. Na levé straně obrazovky vyberte HDFSa pak vyberte Configs kartu.From the left side of the screen, select HDFS, and then select the Configs tab.

  3. V filtr... zadejte fs.azure.write.request.size.In the Filter... field, enter fs.azure.write.request.size. Zobrazí se pole a aktuální hodnota uprostřed stránky.This displays the field and current value in the middle of the page.

  4. Změňte hodnotu z 262144 (256 KB) na novou hodnotu.Change the value from 262144 (256 KB) to the new value. Například 4194304 (4 MB).For example, 4194304 (4 MB).

    Obrázek změna hodnoty prostřednictvím webového uživatelského rozhraní Ambari

Další informace o použití Ambari, naleznete v tématu HDInsight Správa clusterů pomocí webového uživatelského rozhraní Apache Ambari.For more information on using Ambari, see Manage HDInsight clusters using the Apache Ambari Web UI.

Další postupNext steps

Teď, když chápete, jak načíst data do HDInsight, přečtěte si, jak provádět analýzu následujících článcích:Now that you understand how to get data into HDInsight, read the following articles to learn how to perform analysis: