Big Data Passion

Big Data Passion

Strona tworzona przez pasjonatów i praktyków Big Data

Instalacja dystrybucji Hortonworks Data Platform 3.1 za pomocą Apache Ambari

Instalacja HDP 3.1 za pomocą Ambari 2.7 na systemie Red Hat / CentOS 7

Radosław Szmit

Instrukcja instalacji dystrybucji Hortonworks Data Platform HDP 3.1 na maszynach z systemem Red Hat 7 lub CentOS 7.

Do instalacji zostanie użyte:

  • HDP-3.1.0.0
  • Apache Ambari w wersji 2.7.3.0
  • CentOS 7 lub Red Hat 7

Instalacja może być przeprowadzona tylko na jednej maszynie oraz w klastrze. W przypadku jednej maszyny należy w każdym miejscu konfiguracji wskazać jeden i ten sam host. Wszystko usługi, zarówno typu master jak i slave, będą zainstalowane na tym jednym komputerze.

W przypadku systemów produkcyjnych jedyną zalecaną opcją jest instalacja w klastrze kilku maszyn. Jedną maszynę możemy wykorzystywać do celów testowych i developerskich.

Przygotowanie maszyn

Taką instalację możemy przeprowadzić w dowolnym środowisku, np. z użyciem VirtualBoxa lub chmury AWS

Klaster ssh

Jeśli chcemy wykonywać wybrane polecenia jednocześnie na wszystkich maszynach możemy użyć polecenia cssh.

cssh root@hdp1 root@hdp2 root@hdp3

Jeśli wolimy klasyczne ssh, logujemy się na każdą maszynę oddzielnie:

ssh root@hdp1

UWAGA: Wszystkie dalsze polecenia wykonujemy zalogowani jako użytkownik root

Dostęp do internetu

Żeby instalować dodatkowe pakiety musimy mieć dostęp do internetu. Jeśli nie jest on dostępny, można spróbować włączyć DHCP.

Aby włączyć ręcznie DHCP należy wykonać:

dhclient -v

W celu skonfigurowania tego na stałe warto zmienić wartość (ONBOOT=yes) w pliku /etc/sysconfig/network-scripts/ifcfg-eth0

yum install -y vim
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3

Włączamy logowanie root’a po haśle

Jeśli chcemy umożliwić logowanie użytkownika root po haśle ustawiamy parametr (PermitRootLogin yes) w pliku /etc/ssh/sshd_config

vim /etc/ssh/sshd_config

(UWAGA nigdy tego nie róbmy na produkcyjnych serwerach, NIGDY!)

Logowanie po SSH

Jeśli korzystamy z systemów Linux/Mac wygodnym rozwiązaniem może okazać się konfiguracja dostępu z swojego komputer i swojej konsoli. Żeby nie musieć podawać przy logowaniu ciągle hasła, warto wrzucić na maszynę wirtualną swój klucz publiczny by logować się bez hasła.

ssh-copy-id root@localhost -p 2222
ssh root@localhost -p 2222

Możliwość logowania do wszystkich maszyn możemy sprawdzić za pomocą polecenia:

for i in {1..5..1}; do ssh hdp${i} uptime; done

Aktualizacja systemu

Żeby pracować na najnowszej wersji systemu należy go zaktualizować

yum -y update
yum -y upgrade

Instalacja epel release

CentOS:

yum install -y epel-release

Red Hat:

cd /tmp
yum install -y wget
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y epel-release-latest-7.noarch.rpm
yum repolist

Instalacja kolejnych przydatnych narzędzi

yum -y install wget vim htop ntp openssh-server openssh-clients nano bash-completion tree mc byobu ncdu

Zmieniamy hostname (opcjonalnie)

Uwaga, ustawiamy nowe wpisy hostname tylko i wyłącznie wtedy gdy chcemy je zmienić na własne. W wielu przypadkach możemy zostawić obecne hosty o ile są jakieś dostępne.

Na każdej z maszyn ustawiamy inny hostname, na przykład:

hostnamectl set-hostname hdpx.bigdatapassion.com
hostnamectl set-hostname "Hortonworks Data Platform Node" --pretty
hostnamectl set-hostname hdpx.bigdatapassion.com --static
hostnamectl set-hostname hdpx.bigdatapassion.com --transient

gdzie x to numer danego węzła, czyli hdp1, hdp2 i tak dalej.

Jeśli mamy jedną maszynę możemy ustawić:

hostnamectl set-hostname sandbox.bigdatapassion.com

Status możemy sprawdzić

hostnamectl status
hostname
hostname -f

Polecenie hostname i hostname -f powinny zwracać tą samą wartość.

Konfiguracja hostów

Poniższe ustawienie jest nam niezbędne jeśli ustawiliśmy własne wpisy hostname (punkt wyżej) oraz nie mamy żadnego systemu DNS który mógłby informować nasze maszyny jaki hostname odpowiada jakiemu adresowi ip.

Żeby maszyny się “widziały” musimy każdej ustawić odpowiedni hostname:

192.168.172.201 hdp1.bigdatapassion.com
192.168.172.202 hdp2.bigdatapassion.com
192.168.172.203 hdp3.bigdatapassion.com

Dla maszyn które mają zarówno adresy prywatne jak i publiczne (np. AWS lub Oracle Cloud) powinniśmy ustawić te prywatne. Oczywiście lista zależy od liczby maszyn (w tym przypadku 3) oraz adresach ip które można sprawdzić za pomocą polecenia “ip a”.

Dla jednego serwera możemy użyć localhost/127.0.0.1:

127.0.0.1   sandbox sandbox.bigdatapassion.com
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

Konfigurujemy logowanie SSH bez hasła

Hadoop do działania wymaga by użytkownik systemowy mógł logować się do innych maszyn bez hasła za pomocą infrastruktury klucza prywatnego i publicznego, dlatego wykonujemy poniższe polecenia.

Na każdej maszynie generujemy zestaw kluczy:

ssh-keygen -f .ssh/id_rsa -t rsa -N ''

Na maszynie hdp1 wyświetlamy sobie klucz publiczny:

cat .ssh/id_rsa.pub

Pobrany klucz maszyny hdp1 wklejamy na każdej maszynie (także hdp1) do pliku:

vim .ssh/authorized_keys

Jeśli wszystko poszło jak trzeba z maszyny hdp1 możemy teraz zalogować się po SSH do każdej innej maszyny:

ssh hdp3.bigdatapassion.com

Jeśli instalujemy to na jednej maszynie wystarczy wykonać:

ssh-keygen -f .ssh/id_rsa -t rsa -N ''
ssh-copy-id sandbox.bigdatapassion.com
ssh sandbox.bigdatapassion.com

Wyłączamy selinux

Edytujemy plik /etc/sysconfig/selinux ustawiając SELINUX na disabled.

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
sestatus

Wyłączamy Firewall’a

systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
systemctl disable firewalld.service
systemctl stop firewalld.service
systemctl status firewalld.service

Włączamy serwer czasu NTP

yum install -y ntp
systemctl disable chrony.service
systemctl enable ntpd
systemctl start ntpd
systemctl status ntpd
systemctl enable ntpd.service
systemctl is-enabled ntpd.service
systemctl start ntpd.service
systemctl status ntpd.service

Umask

umask 022
echo umask 022 >> ~/.bash_profile
echo umask 022 >> /etc/profile

Restart maszyn

Teraz warto wykonać restart wszystkich maszyn poleceniem reboot

Instalacja Apache Ambari

UWAGA: Od teraz wszystkie operacje wykonujemy tylko na maszynie hdp1

wget -nv http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.3.0/ambari.repo -O /etc/yum.repos.d/ambari.repo

yum repolist
yum update

Instalujemy Ambari

yum install ambari-server -y

Konfigurujemy Ambari

(W każdym pytaniu wybieramy odpowiedź domyślną klikając klawisz Enter za każdrym razem)

ambari-server setup

W przypadku ambari-server setup upewniamy się, że nie ma żadnych ostrzeżeń, zaś na wszystkie pytania odpowiadamy wartościami domyślnymi klikając enter:

[root@hdp1 ~]# ambari-server setup
Using python  /usr/bin/python
Setup ambari-server
Checking SELinux...
SELinux status is 'enabled'
SELinux mode is 'permissive'
WARNING: SELinux is set to 'permissive' mode and temporarily disabled.
OK to continue [y/n] (y)? y
Customize user account for ambari-server daemon [y/n] (n)? 
Adjusting ambari-server permissions and ownership...
Checking firewall status...
Checking JDK...
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Custom JDK
==============================================================================
Enter choice (1): 1
To download the Oracle JDK and the Java Cryptography Extension (JCE) Policy Files you must accept the license terms found at http://www.oracle.com/technetwork/java/javase/terms/license/index.html and not accepting will cancel the Ambari Server setup and you must install the JDK and JCE files manually.
Do you accept the Oracle Binary Code License Agreement [y/n] (y)? y
Downloading JDK from http://public-repo-1.hortonworks.com/ARTIFACTS/jdk-8u112-linux-x64.tar.gz to /var/lib/ambari-server/resources/jdk-8u112-linux-x64.tar.gz
jdk-8u112-linux-x64.tar.gz... 100% (174.7 MB of 174.7 MB)
Successfully downloaded JDK distribution to /var/lib/ambari-server/resources/jdk-8u112-linux-x64.tar.gz
Installing JDK to /usr/jdk64/
Successfully installed JDK to /usr/jdk64/
Downloading JCE Policy archive from http://public-repo-1.hortonworks.com/ARTIFACTS/jce_policy-8.zip to /var/lib/ambari-server/resources/jce_policy-8.zip

Successfully downloaded JCE Policy archive to /var/lib/ambari-server/resources/jce_policy-8.zip
Installing JCE policy...
Check JDK version for Ambari Server...
JDK version found: 8
Minimum JDK version is 8 for Ambari. Skipping to setup different JDK for Ambari Server.
Checking GPL software agreement...
GPL License for LZO: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
Enable Ambari Server to download and install GPL Licensed LZO packages [y/n] (n)? y
Completing setup...
Configuring database...
Enter advanced database configuration [y/n] (n)? n
Configuring database...
Default properties detected. Using built-in database.
Configuring ambari database...
Checking PostgreSQL...
Running initdb: This may take up to a minute.
Initializing database ... OK


About to start PostgreSQL
Configuring local database...
Configuring PostgreSQL...
Restarting PostgreSQL
Creating schema and user...
done.
Creating tables...
done.
Extracting system views...
ambari-admin-2.7.3.0.139.jar
....
Ambari repo file contains latest json url http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json, updating stacks repoinfos with it...
Adjusting ambari-server permissions and ownership...
Ambari Server 'setup' completed successfully.

Uruchamiamy Ambari

ambari-server start

Instalacja sterownika JDBC

Jeśli w naszym klastrze chcielibyśmy użyć narzędzia Apache Hive lub innego który używa biblioteki jdbc, konieczne będzie ściągnięcie i zarejestrowanie odpowiedniego sterownika jdbc za pomocą poniższego polecenia:

wget http://central.maven.org/maven2/mysql/mysql-connector-java/8.0.12/mysql-connector-java-8.0.12.jar
mv mysql-connector-java-8.0.12.jar /opt/
ll /opt/ | grep mysql
ambari-server setup --jdbc-db=mysql --jdbc-driver=/opt/mysql-connector-java-8.0.12.jar

Powyższy przykład dotyczy bazy MySQL, dla innej oczywiście potrzebny jest analogiczny sterownik.

Konfiguracja klastra HDP za pomocą Ambari UI

Następnie wchodzimy na adres: http://hdp1:8080 (lub inny wybrany hostname) i całą instalację kontynuujemy w trybie graficznym. Logujemy się jako admin / admin.

Następnie klikamy przycisk Launch Install Wizard

Ustawiamy nazwę naszego klastra

Wybieramy wersję dystrybucji którą chcemy zainstalować

W kolejnym ekranie w polu Target Hosts wskazujemy pełne adresy wybranych maszyn na których chcemy postawić dystrybucję

hdp1.bigdatapassion.com
hdp2.bigdatapassion.com
hdp3.bigdatapassion.com

lub dla jednej maszyny:

sandbox.bigdatapassion.com

oraz wklejamy zawartość pliku /root/.ssh/id_rsa maszyny na której zainstalowaliśmy Ambari

Po kliknięciu Register and Confirm Ambari przygotowuje nasze maszyny do instalacji

Po zakończonym procesie powinniśmy dostać informację o udanym przygotowaniu maszyn

Jeśli jednak mamy informację o ostrzeżeniach na końcu instalacji agentów lub błędach podczas instalacji, należy przejrzeć ich listę i rozwiązać problemy

Następnie wybieramy narzędzia które chcemy zainstalować (ilość i rodzaj według uznania, np. HDFS, MapReduce2, Tez, Hive, Pig, HBase, Oozie, Flume, Ambari Metrics)

Niektóre narzędzia są połączone na tyle silnie, że Ambari może nam zasugerować konieczność instalacji czegoś dodatkowo

Ambari będzie także proponować nam instalację narzędzi które twórcy uznali za ważne a my ich samodzielnie nie wybraliśmy

Wskazujemy na których maszynach mają być zainstalowane usługi zarządzające (Masters) (można zostawić na początek proponowane rozmieszczenie, tematowi jak rozmieszczać usługi przyjrzymy się w innym wpisie)

oraz usługi robocze (Slaves) (dla naszego testowego środowiska wybieramy wszystkie maszyny dla każdej z usług)

Konfigurujemy nasze serwisy, pola wymagane są na czerwono (najczęściej konieczność ustawienia hasła do bazy danych), pozostałe ustawienia na ten moment możemy pozostawić w ich wartościach domyślnych

Akceptujemy ostrzeżenia i dostajemy podsumowanie instalacji

Na koniec Ambari zaczyna instalować wszystkie usługi zgodnie z naszymi wytycznymi

Po zakończonej instalacji możemy korzystać już w pełni wdrożonego klastra.

Możliwe problemy

Gdyby w trakcie instalacji wystąpiły jakieś błędy podczas uruchamiania usług, możemy spróbować zatrzymać wszystkie serwisy a następnie ponownie je włączyć. W tym celu w lewym pasku serwisów w menu Actions wybieramy Stop All a następnie Start All.

W przypadku niektórych wersji systemu CentOS lub Red Hat konieczna może okazać się ta porada związana z brakiem biblioteki libtirpc-devel.

Legenda

comments powered by Disqus

Ostatnie wpisy

Zobacz więcej

Kategorie

About