Optimera Azure Data Lake Storage Gen2 för prestandaOptimize Azure Data Lake Storage Gen2 for performance

Azure Data Lake Storage Gen2 stöder stora data flöden för I/O-intensiva analyser och data förflyttning.Azure Data Lake Storage Gen2 supports high-throughput for I/O intensive analytics and data movement. I Data Lake Storage Gen2 använder alla tillgängliga data flöde – mängden data som kan läsas eller skrivas per sekund – är viktigt för att få bästa möjliga prestanda.In Data Lake Storage Gen2, using all available throughput – the amount of data that can be read or written per second – is important to get the best performance. Detta uppnås genom att utföra så många läsningar och skrivningar parallellt som möjligt.This is achieved by performing as many reads and writes in parallel as possible.

Data Lake Storage Gen2 prestanda

Data Lake Storage Gen2 kan skalas för att tillhandahålla nödvändigt data flöde för alla analys scenarier.Data Lake Storage Gen2 can scale to provide the necessary throughput for all analytics scenario. Som standard ger ett Data Lake Storage Gen2-konto automatiskt tillräckligt med data flöde för att uppfylla behoven hos en bred kategori av användnings fall.By default, a Data Lake Storage Gen2 account provides automatically enough throughput to meet the needs of a broad category of use cases. För de fall där kunderna får en standard gräns kan Data Lake Storage Gen2 kontot konfigureras för att tillhandahålla mer data flöde genom att kontakta Azure-supporten.For the cases where customers run into the default limit, the Data Lake Storage Gen2 account can be configured to provide more throughput by contacting Azure Support.

DatainhämtningData ingestion

När data matas in från ett käll system till Data Lake Storage Gen2, är det viktigt att tänka på att käll maskin vara, käll nätverks maskin vara och nätverks anslutning till Data Lake Storage Gen2 kan vara Flask halsen.When ingesting data from a source system to Data Lake Storage Gen2, it is important to consider that the source hardware, source network hardware, and network connectivity to Data Lake Storage Gen2 can be the bottleneck.

Diagram som visar de faktorer som du bör tänka på när du matar in data från ett käll system till Data Lake Storage Gen2.

Det är viktigt att se till att data flytten inte påverkas av dessa faktorer.It is important to ensure that the data movement is not affected by these factors.

Käll maskin varaSource hardware

Oavsett om du använder lokala datorer eller virtuella datorer i Azure bör du noga välja lämplig maskin vara.Whether you are using on-premises machines or VMs in Azure, you should carefully select the appropriate hardware. För käll disk maskin vara föredrar du SSD till hård diskar och väljer disk maskin vara med snabbare spindeler.For Source Disk Hardware, prefer SSDs to HDDs and pick disk hardware with faster spindles. Använd de snabbaste nätverkskorten som är möjliga för käll nätverkets maskin vara.For Source Network Hardware, use the fastest NICs possible. På Azure rekommenderar vi virtuella Azure D14-datorer som har lämpligt kraftfulla disk-och nätverks maskin vara.On Azure, we recommend Azure D14 VMs which have the appropriately powerful disk and networking hardware.

Nätverks anslutning till Data Lake Storage Gen2Network connectivity to Data Lake Storage Gen2

Nätverks anslutningen mellan dina källdata och Data Lake Storage Gen2 kan ibland vara Flask hals.The network connectivity between your source data and Data Lake Storage Gen2 can sometimes be the bottleneck. När dina källdata är lokala bör du överväga att använda en särskild länk med Azure ExpressRoute .When your source data is On-Premises, consider using a dedicated link with Azure ExpressRoute . Om dina källdata finns i Azure blir prestanda bäst när data finns i samma Azure-region som Data Lake Storage Gen2-kontot.If your source data is in Azure, the performance will be best when the data is in the same Azure region as the Data Lake Storage Gen2 account.

Konfigurera data inmatnings verktyg för maximalt parallelliseringConfigure data ingestion tools for maximum parallelization

När du har adresserat käll maskin varan och nätverks anslutningens Flask halsar ovan är du redo att konfigurera dina inmatnings verktyg.Once you have addressed the source hardware and network connectivity bottlenecks above, you are ready to configure your ingestion tools. I följande tabell sammanfattas viktiga inställningar för flera populära inmatnings verktyg och ger detaljerade prestanda justerings artiklar för dem.The following table summarizes the key settings for several popular ingestion tools and provides in-depth performance tuning articles for them. Om du vill veta mer om vilket verktyg som ska användas för ditt scenario kan du gå till den här artikeln.To learn more about which tool to use for your scenario, visit this article.

VerktygTool InställningarSettings Mer informationMore Details
DistCpDistCp -m (mapper)-m (mapper) OperationsföljdslänkkodLink
Azure Data FactoryAzure Data Factory parallelCopiesparallelCopies OperationsföljdslänkkodLink
SqoopSqoop FS. Azure. block. size,-m (mapper)fs.azure.block.size, -m (mapper) OperationsföljdslänkkodLink

Strukturera din data uppsättningStructure your data set

När data lagras i Data Lake Storage Gen2 kan fil storleken, antalet filer och mappstrukturen påverka prestandan.When data is stored in Data Lake Storage Gen2, the file size, number of files, and folder structure have an impact on performance. I följande avsnitt beskrivs bästa praxis i dessa områden.The following section describes best practices in these areas.

FilstorlekFile size

Vanligt vis har analys motorer som HDInsight och Azure Data Lake Analytics en per fil-omkostnader per fil.Typically, analytics engines such as HDInsight and Azure Data Lake Analytics have a per-file overhead. Om du lagrar dina data som många små filer kan detta påverka prestanda negativt.If you store your data as many small files, this can negatively affect performance. I allmänhet ordnar du dina data i större filer för att få bättre prestanda (256 MB till 100 GB i storlek).In general, organize your data into larger sized files for better performance (256MB to 100GB in size). Vissa motorer och program kan ha problem effektivt att bearbeta filer som är större än 100 GB.Some engines and applications might have trouble efficiently processing files that are greater than 100GB in size.

Ibland har data pipelines begränsad kontroll över rå data som har många små filer.Sometimes, data pipelines have limited control over the raw data which has lots of small files. I allmänhet rekommenderar vi att systemet har en viss typ av process för att sammanställa små filer i större mängder för användning av underordnade program.In general, we recommend that your system have some sort of process to aggregate small files into larger ones for use by downstream applications.

Organisera Time Series-data i mapparOrganizing time series data in folders

Vid Hive-arbetsbelastningar kan partitions rensning av Time Series-data hjälpa vissa frågor att läsa endast en delmängd av de data som förbättrar prestandan.For Hive workloads, partition pruning of time-series data can help some queries read only a subset of the data which improves performance.

De pipelines som inhämtar tids serie data, placerar ofta sina filer med ett strukturerat namn för filer och mappar.Those pipelines that ingest time-series data, often place their files with a very structured naming for files and folders. Nedan visas ett väldigt vanligt exempel som vi ser för data som är strukturerade efter datum:Below is a very common example we see for data that is structured by date:

\DataSet\YYYY\MM\DD\ datafile_YYYY_MM_DD. tsv\DataSet\YYYY\MM\DD\datafile_YYYY_MM_DD.tsv

Observera att datetime-informationen visas både som mappar och i fil namnet.Notice that the datetime information appears both as folders and in the filename.

För datum och tid är följande ett vanligt mönsterFor date and time, the following is a common pattern

\DataSet\YYYY\MM\DD\HH\mm\ datafile_YYYY_MM_DD_HH_mm. tsv\DataSet\YYYY\MM\DD\HH\mm\datafile_YYYY_MM_DD_HH_mm.tsv

Det val du gör med mappen och fil organisationen bör optimeras för större fil storlekar och ett rimligt antal filer i varje mapp.Again, the choice you make with the folder and file organization should optimize for the larger file sizes and a reasonable number of files in each folder.

Optimera I/O-intensiva jobb på Hadoop-och Spark-arbetsbelastningar på HDInsightOptimizing I/O intensive jobs on Hadoop and Spark workloads on HDInsight

Jobben omfattas av någon av följande tre kategorier:Jobs fall into one of the following three categories:

  • PROCESSOR intensiv.CPU intensive. Dessa jobb har långa beräknings tider med minimala I/O-tider.These jobs have long computation times with minimal I/O times. Exempel på detta är maskin inlärning och jobb för naturlig bearbetning av språk.Examples include machine learning and natural language processing jobs.
  • Minnes krävande.Memory intensive. Dessa jobb använder mycket minne.These jobs use lots of memory. Exempel är PageRank och analys jobb i real tid.Examples include PageRank and real-time analytics jobs.
  • I/O-intensiv.I/O intensive. Dessa jobb ägnar det mesta av tiden att göra I/O.These jobs spend most of their time doing I/O. Ett vanligt exempel är ett kopierings jobb som bara har Läs-och skriv åtgärder.A common example is a copy job which does only read and write operations. Andra exempel är data förberedelse jobb som läser mycket data, utför en del datatransformering och skriver sedan tillbaka data till butiken.Other examples include data preparation jobs that read a lot of data, performs some data transformation, and then writes the data back to the store.

Följande rikt linjer gäller endast för I/O-intensiva jobb.The following guidance is only applicable to I/O intensive jobs.

Generella saker att tänka påGeneral considerations

Du kan ha ett jobb som läser eller skriver så mycket som 100 MB i en enda åtgärd, men en buffert av den storleken kan påverka prestandan.You can have a job that reads or writes as much as 100MB in a single operation, but a buffer of that size might compromise performance. Optimera prestanda genom att försöka bevara storleken på en I/O-åtgärd mellan 4 MB och 16 MB.To optimize performance, try to keep the size of an I/O operation between 4MB and 16MB.

Allmänna överväganden för ett HDInsight-klusterGeneral considerations for an HDInsight cluster

  • HDInsight-versioner.HDInsight versions. Använd den senaste versionen av HDInsight för bästa prestanda.For best performance, use the latest release of HDInsight.
  • Områdena.Regions. Placera Data Lake Storage Gen2-kontot i samma region som HDInsight-klustret.Place the Data Lake Storage Gen2 account in the same region as the HDInsight cluster.

An-HDInsight kluster består av två huvudnoder och vissa arbetsnoder.An HDInsight cluster is composed of two head nodes and some worker nodes. Varje arbetsnod tillhandahåller ett särskilt antal kärnor och minne, vilket bestäms av VM-typen.Each worker node provides a specific number of cores and memory, which is determined by the VM-type. När du kör ett jobb är garn det resurs Negotiator som allokerar tillgängligt minne och kärnor för att skapa behållare.When running a job, YARN is the resource negotiator that allocates the available memory and cores to create containers. Varje behållare kör de uppgifter som krävs för att slutföra jobbet.Each container runs the tasks needed to complete the job. Behållare körs parallellt för att snabbt bearbeta uppgifter.Containers run in parallel to process tasks quickly. Prestanda förbättras därför genom att köra så många parallella behållare som möjligt.Therefore, performance is improved by running as many parallel containers as possible.

Det finns tre skikt i ett HDInsight-kluster som kan justeras för att öka antalet behållare och använda alla tillgängliga data flöden.There are three layers within an HDInsight cluster that can be tuned to increase the number of containers and use all available throughput.

  • Fysiskt lagerPhysical layer
  • GARN lagerYARN layer
  • Arbets belastnings lagerWorkload layer

Fysiskt lagerPhysical Layer

Kör kluster med fler noder och/eller större virtuella datorer.Run cluster with more nodes and/or larger sized VMs. Ett större kluster gör att du kan köra fler garn behållare som visas på bilden nedan.A larger cluster will enable you to run more YARN containers as shown in the picture below.

Diagram som visar hur ett större kluster gör att du kan köra fler garn behållare.

Använd virtuella datorer med mer nätverks bandbredd.Use VMs with more network bandwidth. Mängden nätverks bandbredd kan vara en Flask hals om det finns mindre nätverks bandbredd än Data Lake Storage Gen2 data flöde.The amount of network bandwidth can be a bottleneck if there is less network bandwidth than Data Lake Storage Gen2 throughput. Olika virtuella datorer har varierande storlek på nätverks bandbredd.Different VMs will have varying network bandwidth sizes. Välj en VM-typ som har största möjliga nätverks bandbredd.Choose a VM-type that has the largest possible network bandwidth.

GARN lagerYARN Layer

Använd mindre garn behållare.Use smaller YARN containers. Minska storleken på varje garn behållare för att skapa fler behållare med samma mängd resurser.Reduce the size of each YARN container to create more containers with the same amount of resources.

Diagram som visar resultatet när du minskar storleken på varje garn behållare för att skapa fler behållare.

Beroende på din arbets belastning är det alltid en minsta storlek för garn behållare som behövs.Depending on your workload, there will always be a minimum YARN container size that is needed. Om du väljer för litet en behållare kommer jobben att köras i minnes brist.If you pick too small a container, your jobs will run into out-of-memory issues. Vanligt vis får inte garn behållare vara mindre än 1 GB.Typically YARN containers should be no smaller than 1GB. Det är vanligt att se 3 GB garn behållare.It's common to see 3GB YARN containers. För vissa arbets belastningar kan du behöva större garn behållare.For some workloads, you may need larger YARN containers.

Öka kärnor per garn behållare.Increase cores per YARN container. Öka antalet kärnor som tilldelas varje behållare för att öka antalet parallella aktiviteter som körs i varje behållare.Increase the number of cores allocated to each container to increase the number of parallel tasks that run in each container. Detta fungerar för program som Spark som kör flera uppgifter per behållare.This works for applications like Spark which run multiple tasks per container. För program som Hive som kör en enda tråd i varje behållare är det bättre att ha fler behållare snarare än fler kärnor per behållare.For applications like Hive which run a single thread in each container, it is better to have more containers rather than more cores per container.

Arbets belastnings lagerWorkload Layer

Använd alla tillgängliga behållare.Use all available containers. Ange antalet aktiviteter som ska vara lika med eller större än antalet tillgängliga behållare så att alla resurser används.Set the number of tasks to be equal or larger than the number of available containers so that all resources are utilized.

Diagram som visar användningen av alla behållare.

Misslyckade uppgifter är kostsame.Failed tasks are costly. Om varje aktivitet har en stor mängd data som ska bearbetas resulterar det i ett dyrt försök att utföra en aktivitet.If each task has a large amount of data to process, then failure of a task results in an expensive retry. Därför är det bättre att skapa fler uppgifter, som var och en bearbetar en liten mängd data.Therefore, it is better to create more tasks, each of which processes a small amount of data.

Utöver de allmänna rikt linjerna ovan har varje program olika parametrar som är tillgängliga för att justera för det specifika programmet.In addition to the general guidelines above, each application has different parameters available to tune for that specific application. I tabellen nedan visas några av parametrarna och länkarna för att komma igång med prestanda justering för varje program.The table below lists some of the parameters and links to get started with performance tuning for each application.

ArbetsbelastningWorkload Parameter för att ange aktiviteterParameter to set tasks
Spark på HDInsightSpark on HDInsight
  • Antal körningarNum-executors
  • Utförar-minneExecutor-memory
  • Utförar – kärnorExecutor-cores
Hive i HDInsightHive on HDInsight
  • Hive. Tez. container. sizehive.tez.container.size
MapReduce på HDInsightMapReduce on HDInsight
  • MapReduce. map. minneMapreduce.map.memory
  • MapReduce. job. MapsMapreduce.job.maps
  • MapReduce. minska. minneMapreduce.reduce.memory
  • MapReduce. job. minskarMapreduce.job.reduces
Storm på HDInsightStorm on HDInsight
  • Antal arbets processerNumber of worker processes
  • Antal kanalen utförar-instanserNumber of spout executor instances
  • Antal utförar-instanser för bultNumber of bolt executor instances
  • Antal kanalen-uppgifterNumber of spout tasks
  • Antal uppgifter i bultNumber of bolt tasks

Se ävenSee also