fbpx

Optymalizacja usługi Hadoopa jest jednym z kilku elementów, który wpływa na wydajność klastra. Podczas pracy z takim środowiskiem spotykamy wiele smaczków. Czasami trafiamy na ślady zmian wykonywanych przez kolegów, które zostały wprowadzone na chwilę. W rezultacie klaster może tracić na wydajności. Czasem nawet kilkanaście procent. Często zdarza się również tak, że wartości, które znajdziemy w konfiguracji są tymi domyślnymi. W poniższym wpisie przedstawiam kilka parametrów, na które warto zwrócić uwagę.

Zmiany w OS

fs.file-max

Błąd Java.io.FileNotFoundException (too many open files) może być spowodowany parametrem w pliku /etc/sysctl.conf i jego za niską wartością.
Zmień parametr fs.file-max = 600000
Aby wprowadzić zmiany w życie na działającym systemie użyj komendy sysctl -p

vm.swappiness

Zmiana parametru swappiness. Jeśli dysponujemy dużą ilością pamięci RAM możemy ograniczyć lub zrezygnować z użycia parycji wymiany. W przypadku Hadoopa zalecena wartość to 0, czyli rezygnacja z użycia SWAPa. Parametr, który musimy zmienić to vm.swappiness = 0.
Sprawdzenie obecnej wartości tego parametru możesz sprawdzić wywołując komendę:

user@ilovedata.pl:~$ cat /proc/sys/vm/swappiness
50
user000@ilovedata.pl:~$ sysctl vm.swappiness
vm.swappiness = 50

Jeżeli chcesz zmienić wartość tego parametru w runtime, czyli potocznie mówiąc na działającym systemie to wykonaj komendę:

sysctl vm.swappiness=0

Zmiana, która będzie widoczna po restarcie systemu jest konieczna w pliku /etc/sysctl.conf i parametrze vm.swappiness=0. Jeżeli on nie występuje to można go dopisać.

Transparent Huge Pages (THP)

Te tłumaczenia…:) Przezroczyste ogromne strony, ich wyłączenie spowoduje wzrost mocy procesora ze względu na zagęszczenie pamięci. Generalnie wyłączenie THP nie wpływa na negatywnie na wydajność. Korzyściami jakie przemawiają za wyłączeniem THP jest wzrost wydajności systemu lub dystrybucji Hadoopa. Parametr zmieniamy w pliku /etc/sysctl.conf poprzez dodanie parametru:

vm.nr_hugepages = 0

net.core.somaxconn

Tym razem czas na jeden z parametrów sieciowych, który dużo może wnieść jeżeli chodzi o wzrost wydajności. Pamiętaj, że modyfikujesz parametr sieciowy, więc jeżeli łączysz się do serwera zdalnie sprawdzaj dwa razy zanim wprowadzisz zmianę. Unikniesz wtedy nieprzyjemności związanych z utratą dostępu do maszyny. Parametr net.core.somaxconn ma domyślną wartość 128. Modyfikacja jego wartości na 1024, pomoże Hadoopowi, ponieważ spowoduje to zwiększenie kolejki nasłuchu między usługami master nodes i slave nodes. W rezultacie liczba połączeń między tymi usługami będzie większa.

Zmianę parametru dokonujesz w pliku /etc/sysctl.conf:

net.core.somaxconn=1024

Jeżeli chcesz wprowadzić zmianę natychmiast, w runtime wykonaj następującą komendę:

sysctl -w net.core.somaxconn=1024

Pamiętaj, że wszystkie zmiany dokonujesz na własną odpowiedzialność i zachęcam do skonsultacji ze wsparciem producenta dystrybucji Hadoop.

Optymalizacja Hadoopa jest szerokim wątkiem, który warto zgłębić. Modyfikacja poszczególnych elementów takie środowiska może przynieść wiele korzyści dla zespołu utrzymaniowego oraz końcowych użytkowników klastra. Istotne jest to, żeby modyfikowane parametry były dopasowane do rozmiaru środowiska. Konkretne parametry, na które warto zwrócić uwagę omówię w odrębnych wpisie poświęconym konfiguracji dla podstawowych usług w klastrze. Mowa tutaj o m.in. HDFS, YARN.

Jeżeli masz jakieś spostrzeżenia lub chcesz dodać swoje rekomendacje albo doświadczenia zachęcam do komentowania.

Przeczytaj wpis, dlaczego warto rozpocząć pracę z technologiami Big Data.