Gegevens uploaden voor Apache Hadoop-taken in HDInsightUpload data for Apache Hadoop jobs in HDInsight

Azure HDInsight biedt een volledig functionele Hadoop Distributed File System (HDFS) over Azure Storage en Azure Data Lake Storage (gen1 en Gen2).Azure HDInsight provides a full-featured Hadoop distributed file system (HDFS) over Azure Storage and Azure Data Lake Storage (Gen1 and Gen2). Azure Storage en Data Lake Storage Gen1 en Gen2 zijn ontworpen als HDFS-uitbrei dingen om klanten een naadloze ervaring te bieden.Azure Storage and Data Lake Storage Gen1 and Gen2 are designed as HDFS extensions to provide a seamless experience to customers. Ze kunnen de volledige set onderdelen in het Hadoop-ecosysteem rechtstreeks op de door IT beheerde gegevens gebruiken.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 en Gen2 zijn afzonderlijke bestands systemen die geoptimaliseerd zijn voor opslag van gegevens en berekeningen voor die gegevens.Azure Storage, Data Lake Storage Gen1, and Gen2 are distinct file systems that are optimized for storage of data and computations on that data. Zie Azure Storage gebruiken met hdinsight, Data Lake Storage gen1 met hdinsightgebruiken en Data Lake Storage Gen2 gebruiken met hdinsightvoor meer informatie over de voor delen van het gebruik van Azure Storage.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.

VereistenPrerequisites

Houd rekening met de volgende vereisten voordat u begint:Note the following requirements before you begin:

Gegevens uploaden naar Azure StorageUpload data to Azure Storage

NutsbedrijvenUtilities

Micro soft biedt de volgende hulpprogram ma's voor het werken met Azure Storage:Microsoft provides the following utilities to work with Azure Storage:

HulpprogrammaTool LinuxLinux OS XOS X WindowsWindows
Azure-portalAzure portal
Azure-CLIAzure CLI
Azure PowerShellAzure PowerShell
AzCopyAzCopy
Hadoop-opdrachtHadoop command

Notitie

De Hadoop-opdracht is alleen beschikbaar op het HDInsight-cluster.The Hadoop command is only available on the HDInsight cluster. Met deze opdracht kunt u alleen gegevens laden van het lokale bestands systeem naar Azure Storage.The command only allows loading data from the local file system into Azure Storage.

Hadoop-opdracht regelHadoop command line

De Hadoop-opdracht regel kan alleen worden gebruikt voor het opslaan van gegevens in een Azure Storage-BLOB wanneer de gegevens al aanwezig zijn op het hoofd knooppunt van het cluster.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.

Als u de Hadoop-opdracht wilt gebruiken, moet u eerst verbinding maken met de hoofd knooppunt met behulp van SSH of putty.In order to use the Hadoop command, you must first connect to the headnode using SSH or PuTTY.

Als de verbinding tot stand is gebracht, kunt u de volgende syntaxis gebruiken om een bestand te uploaden naar de opslag.Once connected, you can use the following syntax to upload a file to storage.

hadoop fs -copyFromLocal <localFilePath> <storageFilePath>

Bijvoorbeeld: hadoop fs -copyFromLocal data.txt /example/data/data.txtFor example, hadoop fs -copyFromLocal data.txt /example/data/data.txt

Omdat het standaard bestandssysteem voor HDInsight zich in Azure Storage bevindt, is/example/data/data.txt daad werkelijk in Azure Storage.Because the default file system for HDInsight is in Azure Storage, /example/data/data.txt is actually in Azure Storage. U kunt ook naar het bestand verwijzen als:You can also refer to the file as:

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

ofor

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

Zie voor een lijst met andere Hadoop-opdrachten die met bestanden werkenhttps://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

Waarschuwing

In Apache HBase-clusters is de standaard blok grootte die wordt gebruikt voor het schrijven van gegevens 256 KB.On Apache HBase clusters, the default block size used when writing data is 256 KB. Dit werkt prima wanneer u HBase-api's of rest-api's gebruikt, hadoop met hdfs dfs behulp van de of-opdrachten voor het schrijven van gegevens die groter zijn dan ~ 12 GB. Dit resulteert in een fout.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. Zie de sectie opslag uitzondering voor schrijven op BLOB in dit artikel voor meer informatie.For more information, see the storage exception for write on blob section in this article.

Grafische clientsGraphical clients

Er zijn ook verschillende toepassingen die een grafische interface bieden voor het werken met Azure Storage.There are also several applications that provide a graphical interface for working with Azure Storage. De volgende tabel bevat een lijst met enkele van deze toepassingen:The following table is a list of a few of these applications:

ClientClient LinuxLinux OS XOS X WindowsWindows
Micro soft Visual Studio Tools voor HDInsightMicrosoft Visual Studio Tools for HDInsight
Azure-opslagverkennerAzure Storage Explorer
CeruleaCerulea
CloudXplorerCloudXplorer
CloudBerry Explorer voor Microsoft AzureCloudBerry Explorer for Microsoft Azure
CyberduckCyberduck

Azure Storage koppelen als lokale stationMount Azure Storage as Local Drive

Zie Azure Storage koppelen als lokale schijf.See Mount Azure Storage as Local Drive.

Uploaden met ServicesUpload using services

Azure Data FactoryAzure Data Factory

De Azure Data Factory-service is een volledig beheerde service voor het samen stellen van services voor gegevens opslag, gegevens verwerking en gegevens verplaatsing naar gestroomlijnde, schaal bare en betrouw bare gegevens productie pijplijnen.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.

OpslagtypeStorage type DocumentatieDocumentation
Azure Blob StorageAzure Blob storage Gegevens kopiëren naar of van Azure Blob-opslag met behulp van Azure Data FactoryCopy data to or from Azure Blob storage by using Azure Data Factory
Azure Data Lake Storage Gen1Azure Data Lake Storage Gen1 Gegevens kopiëren van of naar Azure Data Lake Storage Gen1 met behulp van 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 Gegevens laden in Azure Data Lake Storage Gen2 met Azure Data FactoryLoad data into Azure Data Lake Storage Gen2 with Azure Data Factory

Apache SqoopApache Sqoop

Sqoop is een hulp programma dat is ontworpen om gegevens over te dragen tussen Hadoop en relationele data bases.Sqoop is a tool designed to transfer data between Hadoop and relational databases. U kunt dit gebruiken om gegevens te importeren uit een relationele Database Management System (RDBMS), zoals SQL Server, MySQL of Oracle in het Hadoop Distributed File System (HDFS), de gegevens in Hadoop te transformeren met MapReduce of Hive en vervolgens de gegevens terug te exporteren naar een RDBMS.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.

Zie Sqoop gebruiken met HDInsightvoor meer informatie.For more information, see Use Sqoop with HDInsight.

Ontwikkel aars van Sdk'sDevelopment SDKs

Azure Storage kan ook worden geopend met behulp van een Azure SDK vanuit de volgende programmeer talen:Azure Storage can also be accessed using an Azure SDK from the following programming languages:

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

Voor meer informatie over het installeren van de Azure-Sdk's raadpleegt u Azure down loadsFor more information on installing the Azure SDKs, see Azure downloads

Problemen oplossenTroubleshooting

Opslag uitzondering voor schrijven op BLOBStorage exception for write on blob

Symptomen: Wanneer u de hadoop opdrachten hdfs dfs of gebruikt om bestanden te schrijven die ~ 12 GB of groter zijn op een HBase-cluster, kunt u de volgende fout tegen komen: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

Oorzaak: HBase op HDInsight-clusters worden standaard ingesteld op een blok grootte van 256 KB bij het schrijven naar Azure Storage.Cause: HBase on HDInsight clusters default to a block size of 256 KB when writing to Azure storage. Hoewel het werkt voor HBase-api's of rest-api's, resulteert dit in een fout bij hadoop het hdfs dfs gebruik van de opdracht regel Programma's of.While it works for HBase APIs or REST APIs, it results in an error when using the hadoop or hdfs dfs command-line utilities.

Resolutie: Gebruiken fs.azure.write.request.size om een grotere blok grootte op te geven.Resolution: Use fs.azure.write.request.size to specify a larger block size. U kunt dit doen met behulp van de -D para meter per gebruik.You can do this on a per-use basis by using the -D parameter. De volgende opdracht is een voor beeld van het gebruik van hadoop deze para meter met de opdracht: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

U kunt ook de waarde fs.azure.write.request.size globaal verhogen door Apache Ambari te gebruiken.You can also increase the value of fs.azure.write.request.size globally by using Apache Ambari. De volgende stappen kunnen worden gebruikt om de waarde in de Ambari-webgebruikersinterface te wijzigen:The following steps can be used to change the value in the Ambari Web UI:

  1. Ga in uw browser naar de Ambari-webgebruikersinterface voor uw cluster.In your browser, go to the Ambari Web UI for your cluster. Dit is https://CLUSTERNAME.azurehdinsight.net CLUSTERNAME de naam van het cluster.This is https://CLUSTERNAME.azurehdinsight.net, where CLUSTERNAME is the name of your cluster.

    Wanneer u hierom wordt gevraagd, voert u de naam en het wacht woord van de beheerder voor het cluster in.When prompted, enter the admin name and password for the cluster.

  2. Klik aan de linkerkant van het scherm op HDFSen selecteer vervolgens het tabblad configuratie .From the left side of the screen, select HDFS, and then select the Configs tab.

  3. Voerfs.azure.write.request.sizein het veld filter... in.In the Filter... field, enter fs.azure.write.request.size. Hiermee worden het veld en de huidige waarde in het midden van de pagina weer gegeven.This displays the field and current value in the middle of the page.

  4. Wijzig de waarde van 262144 (256 KB) in de nieuwe waarde.Change the value from 262144 (256 KB) to the new value. Bijvoorbeeld 4194304 (4 MB).For example, 4194304 (4 MB).

    Afbeelding van het wijzigen van de waarde via Ambari Web UI

Zie HDInsight-clusters beheren met behulp van de Apache Ambari-webgebruikersinterface voor meer informatie over het gebruik van Ambari.For more information on using Ambari, see Manage HDInsight clusters using the Apache Ambari Web UI.

Volgende stappenNext steps

Nu u weet hoe u gegevens in HDInsight kunt ophalen, lees dan de volgende artikelen voor meer informatie over het uitvoeren van analyses:Now that you understand how to get data into HDInsight, read the following articles to learn how to perform analysis: