Azure Data Lake Storage Gen1 afstemmen op prestaties
Data Lake Storage Gen1 ondersteunt hoge doorvoer voor I/O-intensieve analyses en gegevensverplaatsing. In Data Lake Storage Gen1 is het belangrijk om de beste prestaties te verkrijgen met behulp van alle beschikbare doorvoer ( de hoeveelheid gegevens die per seconde kan worden gelezen of geschreven). Dit wordt bereikt door zoveel mogelijk lees- en schrijfbewerkingen parallel uit te voeren.
Data Lake Storage Gen1 kan worden geschaald om de benodigde doorvoer voor alle analysescenario's te bieden. Een Data Lake Storage Gen1-account biedt standaard automatisch voldoende doorvoer om te voldoen aan de behoeften van een brede categorie gebruiksvoorbeelden. Voor de gevallen waarin klanten de standaardlimiet overschrijden, kan het Data Lake Storage Gen1-account worden geconfigureerd om meer doorvoer te bieden door contact op te leggen met microsoft-ondersteuning.
Gegevensopname
Bij het opnemen van gegevens van een bronsysteem naar Data Lake Storage Gen1 is het belangrijk om te overwegen dat de bronhardware, de bronnetwerkhardware en de netwerkverbinding met Data Lake Storage Gen1 het knelpunt kunnen zijn.
Het is belangrijk om ervoor te zorgen dat de gegevensverplaatsing niet wordt beïnvloed door deze factoren.
Hardwarebronnen
Of u nu on-premises machines of VM's in Azure gebruikt, u moet zorgvuldig de juiste hardware selecteren. Voor bronschijfhardware geeft u de voorkeur aan HDD's en kiest u schijfhardware met snellere spindels. Gebruik voor bronnetwerkhardware de snelste NIC's die mogelijk zijn. In Azure raden we azure D14-VM's aan met de juiste krachtige schijf- en netwerkhardware.
Netwerkverbinding met Data Lake Storage Gen1
De netwerkverbinding tussen uw brongegevens en Data Lake Storage Gen1 kan soms het knelpunt zijn. Wanneer uw brongegevens on-premises zijn, kunt u overwegen een speciale koppeling te gebruiken met Azure ExpressRoute-. Als uw brongegevens zich in Azure bevinden, kunnen de prestaties het beste worden uitgevoerd wanneer de gegevens zich in dezelfde Azure-regio bevinden als het Data Lake Storage Gen1-account.
Hulpprogramma's voor gegevensopname configureren voor maximale parallelle uitvoering
Nadat u de knelpunten voor de bronhardware en netwerkconnectiviteit hebt aangepakt, kunt u uw gegevensinvoerhulpmiddelen configureren. De volgende tabel bevat een overzicht van de belangrijkste instellingen voor verschillende populaire datavoorverwerkingshulpmiddelen en biedt uitgebreide artikelen voor prestatie-optimalisatie. Ga naar dit artikelvoor meer informatie over welk hulpprogramma u voor uw scenario kunt gebruiken.
Werktuig | Instellingen | Meer details |
---|---|---|
PowerShell | PerFileThreadCount, ConcurrentFileCount | Link |
AdlCopy | Azure Data Lake Analytics-eenheden | Link |
DistCp | -m (mapper) | Link |
Azure Data Factory | parallelkopieën | Link |
Sqoop | fs.azure.block.size, -m (mapper) | Link |
Uw gegevensset structuren
Wanneer gegevens worden opgeslagen in Data Lake Storage Gen1, zijn de bestandsgrootte, het aantal bestanden en de mapstructuur van invloed op de prestaties. In de volgende sectie worden aanbevolen procedures op deze gebieden beschreven.
Bestandsgrootte
Analyse-engines zoals HDInsight en Azure Data Lake Analytics hebben doorgaans een overhead per bestand. Als u uw gegevens zo veel kleine bestanden opslaat, kan dit de prestaties negatief beïnvloeden.
In het algemeen kunt u uw gegevens ordenen in grotere bestanden voor betere prestaties. Als vuistregel kunt u gegevenssets ordenen in bestanden van 256 MB of groter. In sommige gevallen, zoals afbeeldingen en binaire gegevens, is het niet mogelijk om ze parallel te verwerken. In dergelijke gevallen is het raadzaam om afzonderlijke bestanden onder 2 GB te bewaren.
Soms hebben gegevenspijplijnen beperkte controle over de onbewerkte gegevens met veel kleine bestanden. Het wordt aanbevolen om een 'kookproces' te hebben waarmee grotere bestanden worden gegenereerd die moeten worden gebruikt voor downstreamtoepassingen.
Tijdreeksgegevens ordenen in mappen
Voor Hive- en ADLA-workloads kan het partitioneren van tijdreeksgegevens sommige query's helpen alleen een subset van de gegevens te lezen, waardoor de prestaties worden verbeterd.
Deze pijplijnen die tijdreeksgegevens opnemen, plaatsen hun bestanden vaak met een gestructureerde naamgeving voor bestanden en mappen. Hieronder ziet u een veelvoorkomend voorbeeld voor gegevens die zijn gestructureerd op datum: \DataSet\JJJJ\MM\DD\datafile_YYYY_MM_DD.tsv.
U ziet dat de datum/tijd-informatie zowel als mappen als in de bestandsnaam wordt weergegeven.
Voor datum en tijd is het volgende een gemeenschappelijk patroon: \DataSet\JJJJ\MM\DD\HH\mm\datafile_YYYY_MM_DD_HH_mm.tsv.
Nogmaals, de keuze die u maakt met de map en bestandsorganisatie moet optimaliseren voor de grotere bestandsgrootten en een redelijk aantal bestanden in elke map.
I/O-intensieve taken optimaliseren voor Hadoop- en Spark-workloads in HDInsight
Taken vallen in een van de volgende drie categorieën:
- CPU-intensief. Deze taken hebben lange rekentijden met minimale I/O-tijden. Voorbeelden hiervan zijn machine learning- en verwerkingstaken voor natuurlijke taal.
- Geheugenintensief. Deze taken gebruiken veel geheugen. Voorbeelden hiervan zijn PageRank- en realtime analysetaken.
- I/O-intensief. Deze taken besteden het grootste deel van hun tijd aan het uitvoeren van I/O. Een veelvoorkomend voorbeeld is een kopieertaak die alleen lees- en schrijfbewerkingen doet. Andere voorbeelden zijn taken voor gegevensvoorbereiding die grote hoeveelheden gegevens lezen, enkele transformaties uitvoeren en vervolgens de gegevens terugschrijven naar de opslag.
De volgende richtlijnen zijn alleen van toepassing op I/O-intensieve taken.
Algemene overwegingen voor een HDInsight-cluster
- HDInsight-versies. Gebruik de nieuwste versie van HDInsight voor de beste prestaties.
- Contreien. Plaats het Data Lake Storage Gen1-account in dezelfde regio als het HDInsight-cluster.
Een HDInsight-cluster bestaat uit twee hoofdknooppunten en enkele werkknooppunten. Elk werkknooppunt biedt een specifiek aantal kernen en geheugen, dat wordt bepaald door het VM-type. Bij het uitvoeren van een taak is YARN de resourceonderhandelaar die het beschikbare geheugen en de kernen toewijst om containers te maken. Elke container voert de taken uit die nodig zijn om de taak te voltooien. Containers draaien parallel om taken snel te verwerken. Daarom verbetert de prestatie door zoveel mogelijk containers parallel te laten draaien.
Er zijn drie lagen binnen een HDInsight-cluster die kunnen worden afgestemd om het aantal containers te verhogen en alle beschikbare doorvoer te gebruiken.
- fysieke laag
- YARN-laag
- workload-laag
Fysieke laag
Cluster uitvoeren met meer knooppunten en/of grotere VM's. Met een groter cluster kunt u meer YARN-containers uitvoeren, zoals wordt weergegeven in de onderstaande afbeelding.
Gebruik VM's met meer netwerkbandbreedte. De hoeveelheid netwerkbandbreedte kan een knelpunt zijn als er minder netwerkbandbreedte is dan Data Lake Storage Gen1-doorvoer. Verschillende VM's hebben verschillende netwerkbandbreedtegrootten. Kies een VM-type met de grootst mogelijke netwerkbandbreedte.
YARN-laag
Gebruik kleinere YARN-containers. Verklein de grootte van elke YARN-container om meer containers te maken met dezelfde hoeveelheid resources.
Afhankelijk van uw workload is er altijd een minimale YARN-containergrootte nodig. Als u een te kleine container kiest, zullen uw taken problemen met onvoldoende geheugen ondervinden. Yarn-containers mogen doorgaans niet kleiner zijn dan 1 GB. Het is gebruikelijk om YARN-containers van 3 GB te zien. Voor sommige workloads hebt u mogelijk grotere YARN-containers nodig.
Verhoog kernen per YARN-container. Verhoog het aantal kernen dat aan elke container is toegewezen om het aantal parallelle taken te verhogen dat in elke container wordt uitgevoerd. Dit werkt voor toepassingen zoals Spark, die meerdere taken per container uitvoeren. Voor toepassingen zoals Hive die één thread in elke container uitvoeren, is het beter om meer containers te hebben in plaats van meer kernen per container.
Werkbelastinglaag
Gebruik alle beschikbare containers. Stel het aantal taken in dat gelijk is aan of groter is dan het aantal beschikbare containers, zodat alle resources worden gebruikt.
Mislukte taken zijn kostbaar. Als elke taak een grote hoeveelheid gegevens bevat die moet worden verwerkt, resulteert het mislukken van een taak in een dure nieuwe poging. Daarom is het beter om meer taken te maken, die elk een kleine hoeveelheid gegevens verwerken.
Naast de bovenstaande algemene richtlijnen beschikt elke toepassing over verschillende parameters die beschikbaar zijn om deze specifieke toepassing af te stemmen. De onderstaande tabel bevat enkele parameters en koppelingen om aan de slag te gaan met het afstemmen van prestaties voor elke toepassing.
Werklast | Parameter voor het instellen van taken |
---|---|
Spark op HDInsight |
|
Hive op HDInsight |
|
MapReduce in HDInsight |
|
Storm op HDInsight |
|