Przeszkody

Zacznę może od pozytywów.

Udało się uruchomić algorytm BFS w hadoop! Rozwiązaniem było użycie klasy Combiner, która działa jak taki pre-Reducer, wykonuje daną funkcję redukującą zanim wstąpi do fazy Reduce. Mój model Map -> Reduce -> Reduce zamienił się w Map -> Combine -> Reduce i policzył odległości dla średniego grafu o 250 wierzchołkach.

Podczas gdy program Hadoop używa danych wejściowych w formacie
x:a,b,c
co oznacza, że wierzchołek x sąsiaduje z wierzchołkami a, b i c, to program Spark korzysta  z innego formatu. Tam trzeba w każdym wierszu przedstawić jedną krawędź, czyli dla tych samych danych mamy:
x a
x b
x c

Wyniki ze Sparka są potrzebne mi do porównania z moimi wynikami, ponieważ Spark implementuję funkcję biblioteczną która liczy najkrótsze ścieżki. Innymi słowy, wyniki Sparka to odpowiedź czy moje liczą się poprawnie.

Okazuje się, że dla niektórych wierzchołków są różnice między wynikami Hadoop i Spark.

Następnym moim krokiem jest więc ustalenie dlaczego te różnice istnieją. Czy jest to wina mojego programu Hadoop czy coś w Sparku źle użyłam? Czy na pewno działam na tych samych danych które różnią się jedynie formatem?

Moja propozycja przetestowania tego jest następująca:

  1. Uruchomić BFS w Hadoop bez dzielenia danych na wiele procesorów w fazie map. Niech wszystko policzy się na jednym komputerze. Następnie trzeba by to porównać z wynikami BFS Hadoop z rozdzielaniem oraz ze Sparkiem.
  2. Jeśli z powyższego testu nie będzie się dało wywnioskować który program zawinił, to należy wygenerować raz jeszcze dane dla Spark. Tym razem przetworzę plik wejściowy dla BFS Hadoop i przepiszę listę sąsiedztwa na listę krawędzi. Następnie porównam ponownie wyniki.
  3. Jeśli i to nie pomoże to trzeba uruchomić zwykłą sekwencyjną wersję BFS i sprawdzić tym sposobem który z programów oblicza ścieżki w błędny sposób porównując do wyników wersji sekwencyjnej.

Mam nadzieję, że to kwestia danych (którą można potwierdzić testem numer 2), oznaczałoby to że mój program działa poprawnie i mogę wreszcie przetestować dane dla Wikipedii… i w końcu przejść do kolejnych algorytmów.

O tej godzinie już nie mam siły tego sprawdzać, więc czeka mnie pracowity poranek!

Advertisements

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s