Jeżeli podczas biegu prostego skryptu przez grupę w świni dla dużych terabajtów danych, skrypt utknął na powiedzmy 70%, to co można zrobić, aby zdiagnozować problem?Jak można debugować skrypt świnia
Odpowiedz
Istnieje kilka sposób do debugowania skryptu świni. Prostą metodą jest wykonywanie krok po kroku relacji, a następnie weryfikacja wyniku. Te polecenia są przydatne do debugowania skryptu świni.
DUMP - Użyj operatora DUMP, aby uruchomić (wykonać) Pig Latin Statement i wyświetlić wyniki na ekranie.
ILUSTRACJA - Użyj operatora ILLUSTRATE, aby sprawdzić, jak dane są transformowane za pomocą sekwencji łacińskich instrukcji. ILLUSTRATE pozwala testować programy na małych zestawach danych i skracać czas ich realizacji.
WYJAŚNIJ - Użyj operatora EXPLAIN do przejrzenia logicznych, fizycznych i mapowych planów wykonania redukcji, które są używane do obliczenia określonej zależności.
DESCRIBE - Użyj operatora DESCRIBE, aby wyświetlić schemat relacji. Możesz przeglądać zewnętrzne relacje, a także relacje zdefiniowane w zagnieżdżonej instrukcji FOREACH.
Więcej szczegółów na temat tych poleceń są dostępne na tej link. Więcej informacji można znaleźć pod numerem developing and testing a pig script..
Jeśli chcesz debugować cały skrypt podczas wykonywania następnie trzeba napisać poniżej kod na początku skryptu
-- set the debug mode on
SET debug 'on'
-- set a job name of your job.
SET job.name 'my job'
Pozwoli to, aby uruchomić skrypt w trybie debugowania. Szczegóły dotyczące trybu na temat polecenia SET
są dostępne na ten temat: link
Kiedy mówisz, że skrypt utknął na poziomie 70%, zakładam, że masz na myśli, że praca MR jest ukończona w 70%.
Najlepiej spojrzeć na pana i przędzy dzienników (i jeśli to konieczne, HDFS kłody) w tym momencie więcej informacji na temat tego, co MR/YARN robi. Dzienniki można zazwyczaj znaleźć w /var/log/Hadoop-MapReduce i /var/log/Hadoop-HDFS w Cloudera Menedżer zarządzanych klastrów. Być może trzeba przejrzeć dzienniki z wielu węzłów w klastrze, w których działają węzły YARN NodeManagers.
W przypadku, gdy skrypt jest zatrzymany z Pig emisji (tj problem w kodzie świnia, nie kodu MR/HDFS), warto zwiększyć poziom rejestrowania log4j w Pig: świnia -d DEBUG jest polecenie opcja linii do ustawienia poziomu logowania na DEBUG na przykład.