2013-05-17 14 views
5

Używam Sqoop wersji 1.4.2 i bazy danych Oracle.Jak znaleźć optymalną liczbę maperów podczas importowania i eksportowania Sqoop?

Po uruchomieniu polecenia Sqoop. Na przykład takich jak to:

./sqoop import        \ 
    --fs <name node>       \ 
    --jt <job tracker>      \ 
    --connect <JDBC string>     \ 
    --username <user> --password <password> \ 
    --table <table> --split-by <cool column> \ 
    --target-dir <where>      \ 
    --verbose --m 2 

Możemy określić --m - ile równolegle zadania chcemy Sqoop uruchomić (również one mogą być dostępu do bazy danych w tym samym czasie). Ta sama opcja jest dostępna dla ./sqoop eksportu < ...>

Czy istnieje jakiś heurystyczny (prawdopodobnie na podstawie rozmiaru danych), co przyczyni się domyślić co jest optymalna liczba zadań w użyciu?

Dziękujemy!

+2

Nie, zależy to od liczby procesorów/rdzeni serwera bazy danych, ilości dostępu do dysku dla każdego zadania, szybkości tych dysków, ilości wykonywanych zadań w pamięci RAM, ilości pamięci RAM, ilość dodatkowych tymczasowych przestrzeni tabel, które są zajmowane przez to, czego nie można przechowywać w pamięci RAM, system plików, którego używasz, ilość pamięci RAM przypisanej do systemu operacyjnego w przeciwieństwie do bazy danych, potencjalnie wielkość przełączników i kabli sieciowych oraz liczbę dodatkowych procesów uruchamianych w bazie danych i/lub serwerze oraz wpływ wszystkich powyższych czynników na to, itp. Przetestuj to. – Ben

+2

@Ben - Podałbym to jako odpowiedź –

Odpowiedz

0

W "Hadoop: The Definitive Guide" wyjaśniają, że podczas ustawiania maksymalnej mapy/zmniejszenia zadania na każdym Tasktacker, rozważ procesor i jego rdzenie, aby zdefiniować liczbę zadań dla klastra, więc zastosowałbym to samo logika do tego i sprawdź, ile procesów możesz uruchomić na swoich procesorach (Liczenie HyperTreading, Rdzenie) i ustaw -m na tę wartość - 1 (pozostaw otwarte dla innych zadań, które mogą pojawić się podczas eksport) ALE to jest tylko, jeśli masz duży zestaw danych i chcesz, aby eksport został wykonany w odpowiednim czasie.

Jeśli nie masz dużego zestawu danych, to pamiętaj, że wynik będzie wartością -m liczby plików, więc jeśli eksportujesz tabelę z wierszami 100, możesz chcieć ustawić -m na 1, aby wszystkie dane były zlokalizowane w jednym pliku.

+0

Jeśli masz zamiar przegłosować, zostaw mi konstruktywną krytykę, abym mógł poprawić moją odpowiedź. – Engineiro

+0

Thats odpowiedź na różne pytania. Nie przesłałem tego. Ale problem z programem sqoop polega na tym, że trafia on do bazy danych przez każdego programistę. Więc jeśli mam 30 maszyn z dwoma wersjami mapowania i używam -m 60 baza danych będzie z tego bardzo niezadowolona :) – Bohdan

+0

Nie ustawiłbyś tego na 60. Ustawiłbyś na 2 ... od tego ustawienia dotyczyłoby każdej maszyny w klastrze. Tak więc każdy komputer będzie używał dwóch mapperów dla 60 wdrożonych mapperów w zależności od tego, czy api sqoop potraktuje to jako sugestię lub ustawienie twarde. – Engineiro

4

To pochodzi z Apache Sqoop Cookbook O'Reilly Media, i wydaje się być najbardziej logiczną odpowiedzią.

Optymalna liczba mapujących zależy od wielu zmiennych: należy wziąć pod uwagę typ bazy danych, sprzęt używany na serwerze bazy danych oraz wpływ na inne żądania, które musi obsługiwać baza danych. Nie ma optymalnej liczby twórców map, która działa dla wszystkich scenariuszy. Zamiast tego jesteś zachęcany do eksperymentowania, aby znaleźć optymalny stopień paralelizmu dla twojego środowiska i przypadku użycia. Warto zacząć od niewielkiej liczby twórców map, powoli podnosząc się, zamiast zaczynać od dużej liczby twórców map, idąc w dół.

Powiązane problemy