2010-06-19 10 views
5

Po prostu zaczynam od nauki Hadoop i zastanawiam się, co następuje: załóżmy, że mam kilka dużych tabel produkcyjnych MySQL, które chcę analizować.Ciągnięcie danych z MySQL do Hadoop

  1. Wydaje się, że muszę zrzucić wszystkie tabele do plików tekstowych, w celu dostosowania ich do systemu plików Hadoop - jest to prawidłowe, czy jest jakiś sposób, że Hive lub świnia czy cokolwiek może uzyskać dostęp do danych bezpośrednio z MySQL?
  2. Jeśli zrzucam wszystkie tabele produkcyjne do plików tekstowych, czy muszę się martwić o wpływ na wydajność produkcji podczas zrzutu? (Czy zależy to od tego, jakiego silnika pamięci używają tabele i co mam zrobić?)
  3. Czy lepiej jest zrzucić każdą tabelę do pojedynczego pliku lub podzielić tabelę na 64 MB (lub cokolwiek innego, co mój blok ma) akta?

Odpowiedz

10

Importowanie danych z mysql można bardzo łatwo zrobić. Polecam użycie dystrybucji hadoop Cloudera, z programem o nazwie 'sqoop', który zapewnia bardzo prosty interfejs do importowania danych bezpośrednio z mysql (inne bazy są również obsługiwane). Sqoop może być używany z mysqldump lub normalnym zapytaniem mysql (wybierz * ...). Dzięki temu narzędziu nie ma potrzeby ręcznego podziału tabel na pliki. Ale w przypadku hadoopu znacznie lepiej jest mieć jeden duży plik.

Przydatne linki:
Sqoop User Guide

+0

+1 dla SQOOP ref –

1

2)
Ponieważ nie wiem środowisko będę Aire na bezpiecznej stronie - TAK, martwić wpływu na wydajność produkcyjną.

W zależności od częstotliwości i ilości zapisywanych danych, może się okazać, że przetwarza się w dopuszczalnym czasie, szczególnie jeśli właśnie piszesz nowe/zmienione dane. [z zastrzeżeniem złożoności zapytań]

Jeśli nie potrzebujesz czasu w czasie rzeczywistym lub twoje serwery mają zwykle okresy, kiedy nie są używane (przez noc?), wtedy możesz utworzyć pliki w tym czasie.

W zależności od konfiguracji środowiska można replikować/zapisywać statki na określone serwery baz danych, których jedynym zadaniem jest utworzenie pliku danych.


3)
Nie ma potrzeby, aby podzielić plik, HDFS zadba o podzielenie pliku danych do replikacji i bocks na klastrze. Domyślnie automatycznie dzieli się na bloki danych o wielkości 64 MB.
zobaczyć - Apache - HDFS Architecture

Re: Wojtek odpowiedź - SQOOP clicky (nie działa w komentarzach)

Jeśli masz więcej pytań lub szczegółowych informacji środowiskowej, daj nam znać HTH Ralph

Powiązane problemy