Teljesítményhangolási útmutató a HDInsight-alapú MapReduce-hoz és Azure Data Lake Storage Gen1-hez
Előfeltételek
- Egy Azure-előfizetés. Lásd: Ingyenes Azure-fiók létrehozása.
- Egy Azure Data Lake Storage Gen1-fiók. A létrehozással kapcsolatos utasításokért lásd: Első lépések az 1. generációs Azure Data Lake Storage
- Azure HDInsight-fürt egy Data Lake Storage Gen1-fiókhoz való hozzáféréssel. Lásd: HDInsight-fürt létrehozása Data Lake Storage Gen1. Győződjön meg arról, hogy engedélyezte a távoli asztalt a fürthöz.
- A MapReduce használata a HDInsighton. További információ: A MapReduce használata a Hadoop on HDInsightban
- Tekintse át a Data Lake Storage Gen1 teljesítményhangolási irányelveit. Általános teljesítményfogalmakért lásd: Data Lake Storage Gen1 teljesítményhangolási útmutató
Paraméterek
A MapReduce-feladatok futtatásakor az alábbiak a legfontosabb paraméterek, amelyeket konfigurálhat a teljesítmény növeléséhez Data Lake Storage Gen1:
Paraméter | Leírás |
---|---|
Mapreduce.map.memory.mb |
Az egyes leképezők számára lefoglalandó memória mennyisége. |
Mapreduce.job.maps |
A leképezési tevékenységek száma feladatonként. |
Mapreduce.reduce.memory.mb |
Az egyes csökkentési egységek számára lefoglalandó memória mennyisége. |
Mapreduce.job.reduces |
A csökkentési tevékenységek száma feladatonként. |
Mapreduce.map.memory / Mapreduce.reduce.memory
Módosítsa ezt a számot a leképezési és/vagy csökkentési feladathoz szükséges memória mennyisége alapján. Az Ambari alapértelmezett értékeit mapreduce.map.memory
mapreduce.reduce.memory
a Yarn konfigurációjában tekintheti meg. Az Ambariban navigáljon a YARN-hoz, és tekintse meg a Konfigurációk lapot. Ekkor megjelenik a YARN-memória.
Mapreduce.job.maps / Mapreduce.job.reduces
Ez határozza meg a létrehozandó leképezők vagy csökkentési eszközök maximális számát. A felosztások száma határozza meg, hogy hány leképező jön létre a MapReduce-feladathoz. Ezért a kértnél kevesebb leképezőt kaphat, ha kevesebb felosztás van, mint a kért leképezők száma.
Útmutató
1. lépés: A futó feladatok számának meghatározása
Alapértelmezés szerint a MapReduce a teljes fürtöt fogja használni a feladathoz. A fürtből kevesebbet használhat, ha kevesebb leképezőt használ, mint amennyi rendelkezésre áll. A jelen dokumentumban található útmutatás feltételezi, hogy az alkalmazás az egyetlen, a fürtön futó alkalmazás.
2. lépés: A mapreduce.map.memory/mapreduce.reduce.memory beállítása
A leképezési és csökkentési feladatok memóriamérete az adott feladattól függ. Ha növelni szeretné az egyidejűséget, csökkentheti a memória méretét. Az egyidejűleg futó tevékenységek száma a tárolók számától függ. A leképezőnként vagy csökkentőnkénti memória mennyiségének csökkentésével több tároló hozható létre, amelyek lehetővé teszik, hogy több leképező vagy csökkentő egyidejűleg fusson. A memória túl nagy mennyiségének csökkentése egyes folyamatok memória elfogyását okozhatja. Ha halomhiba jelenik meg a feladat futtatásakor, növelje a memóriát leképezőnként vagy csökkentőként. Vegye figyelembe, hogy további tárolók hozzáadása további többletterhelést okoz minden további tároló esetében, ami potenciálisan csökkentheti a teljesítményt. Egy másik lehetőség, hogy több memóriát szeretne lekérni egy olyan fürt használatával, amely nagyobb mennyiségű memóriával rendelkezik, vagy növeli a fürtben lévő csomópontok számát. A több memória több tároló használatát teszi lehetővé, ami több egyidejűséget jelent.
3. lépés: A YARN-memória teljes számának meghatározása
A mapreduce.job.maps/mapreduce.job.reduces finomhangolásához vegye figyelembe a használható YARN-memória teljes mennyiségét. Ezek az információk az Ambariban érhetők el. Lépjen a YARN-hoz, és tekintse meg a Konfigurációk lapot. Ebben az ablakban megjelenik a YARN-memória. Szorozza meg a YARN-memóriát a fürtben lévő csomópontok számával a YARN teljes memóriájának lekéréséhez.
Total YARN memory = nodes * YARN memory per node
Ha üres fürtöt használ, akkor a memória a fürt teljes YARN-memóriája lehet. Ha más alkalmazások is használnak memóriát, akkor dönthet úgy, hogy csak a fürt memóriájának egy részét használja, ha a leképezők vagy a csökkentők számát a használni kívánt tárolók számára csökkenti.
4. lépés: YARN-tárolók számának kiszámítása
A YARN-tárolók határozzák meg a feladathoz elérhető egyidejűség mértékét. Vegye ki a YARN teljes memóriáját, és ossza el a mapreduce.map.memory használatával.
# of YARN containers = total YARN memory / mapreduce.map.memory
5. lépés: A mapreduce.job.maps/mapreduce.job.reduces beállítása
Állítsa a mapreduce.job.maps/mapreduce.job.reduces értéket legalább az elérhető tárolók számára. Kísérletezhet tovább a leképezők és a csökkentők számának növelésével, hogy lássa, jobb teljesítményt kap-e. Ne feledje, hogy több leképező többletterheléssel jár, így a túl sok leképező csökkentheti a teljesítményt.
A CPU-ütemezés és a CPU-elkülönítés alapértelmezés szerint ki van kapcsolva, így a YARN-tárolók számát a memória korlátozza.
Példaszámítás
Tegyük fel, hogy jelenleg 8 D14-csomópontból álló fürtje van, és intenzív I/O-feladatot szeretne futtatni. A következő számításokat kell elvégeznie:
1. lépés: A futó feladatok számának meghatározása
A példánkban azt feltételezzük, hogy a mi feladatunk az egyetlen, amely fut.
2. lépés: A mapreduce.map.memory/mapreduce.reduce.memory beállítása
A példánkban egy intenzív I/O-feladatot futtat, és úgy dönt, hogy a leképezési feladatokhoz elegendő 3 GB memória.
mapreduce.map.memory = 3GB
3. lépés: A YARN-memória teljes számának meghatározása
total memory from the cluster is 8 nodes * 96GB of YARN memory for a D14 = 768GB
4. lépés: YARN-tárolók számának kiszámítása
# of YARN containers = 768 GB of available memory / 3 GB of memory = 256
5. lépés: A mapreduce.job.maps/mapreduce.job.reduces beállítása
mapreduce.map.jobs = 256
Korlátozások
szabályozás Data Lake Storage Gen1
Több-bérlős szolgáltatásként Data Lake Storage Gen1 fiókszintű sávszélességkorlátokat állít be. Ha eléri ezeket a korlátokat, látni fogja a feladathibákat. Ez a tevékenységnaplók szabályozási hibáinak megfigyelésével azonosítható. Ha nagyobb sávszélességre van szüksége a munkájához, vegye fel velünk a kapcsolatot.
Annak ellenőrzéséhez, hogy szabályozva van-e, engedélyeznie kell a hibakeresési naplózást az ügyféloldalon. Ezt a következőképpen teheti meg:
Helyezze a következő tulajdonságot az Ambari > YARN Config > Advanced yarn-log4j > log4j tulajdonságába: log4j.logger.com.microsoft.azure.datalake.store=DEBUG
A konfiguráció érvénybe léptetéséhez indítsa újra az összes csomópontot/szolgáltatást.
Ha szabályozva van, a YARN-naplófájlban megjelenik a HTTP 429-es hibakód. A YARN-naplófájl a /tmp/<user>/yarn.log
Futtatható példák
Annak bemutatásához, hogy a MapReduce hogyan fut Data Lake Storage Gen1, az alábbiakban néhány mintakódot mutatunk be, amelyeket egy fürtön futtattak az alábbi beállításokkal:
- 16 csomópontos D14v2
- HDI 3.6-ot futtató Hadoop-fürt
Kiindulópontként íme néhány példaparancs a MapReduce Teragen, a Terasort és a Teravalidate futtatásához. Ezeket a parancsokat az erőforrások alapján módosíthatja.
Teragen
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teragen -Dmapreduce.job.maps=2048 -Dmapreduce.map.memory.mb=3072 10000000000 adl://example/data/1TB-sort-input
Terasort
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar terasort -Dmapreduce.job.maps=2048 -Dmapreduce.map.memory.mb=3072 -Dmapreduce.job.reduces=512 -Dmapreduce.reduce.memory.mb=3072 adl://example/data/1TB-sort-input adl://example/data/1TB-sort-output
Teravalidate
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teravalidate -Dmapreduce.job.maps=512 -Dmapreduce.map.memory.mb=3072 adl://example/data/1TB-sort-output adl://example/data/1TB-sort-validate