Share via


Teljesítményhangolási útmutató a HDInsight-alapú MapReduce-hoz és Azure Data Lake Storage Gen1-hez

Előfeltételek

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.memorymapreduce.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:

  1. 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

  2. A konfiguráció érvénybe léptetéséhez indítsa újra az összes csomópontot/szolgáltatást.

  3. 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