Jak zainstalować HBase na Ubuntu (Instalacja HBase)
Tryby instalacji Apache HBase
Apache HBase można zainstalować w trzech trybach. Poniżej opisano funkcje tych trybów.
1) Instalacja w trybie autonomicznym (brak zależności od systemu Hadoop)
- Jest to domyślny tryb HBase
- Działa przeciwko lokalnemu systemowi plików
- Nie używa Hadoop HDFS
- Można uruchomić tylko demona HMaster
- Niezalecane do środowiska produkcyjnego
- Działa w pojedynczej maszynie JVM
2) Instalacja w trybie pseudorozproszonym (jednowęzłowy system Hadoop + instalacja HBase)
- To działa Hadoop HDFS
- Wszystkie demony działają w jednym węźle
- Polecam do środowiska produkcyjnego
3) Instalacja w trybie w pełni rozproszonym (środowisko MultideHadoop + instalacja HBase)
- To działa Hadoop HDFS
- Wszystkie demony będą uruchamiane na wszystkich węzłach obecnych w klastrze
- Wysoce zalecane do środowiska produkcyjnego
W przypadku instalacji Hadoop skorzystaj z tego adresu URL Tutaj
Jak pobrać stabilną wersję pliku tar HBase
Krok 1) Przejdź do linku tutaj aby pobrać HBase. Otworzy się strona internetowa, jak pokazano poniżej.
Krok 2) Wybierz wersję stabilną, jak pokazano poniżej wersji 1.1.2
Krok 3) Kliknij plik hbase-1.1.2-bin.tar.gz. Spowoduje to pobranie pliku tar. Skopiuj plik tar do lokalizacji instalacji.
Jak zainstalować HBase w Ubuntu z trybem samodzielnym
Oto krok po kroku proces instalacji w trybie autonomicznym HBase w Ubuntu:
Krok 1) Umieść poniższe polecenie
Umieść hbase-1.1.2-bin.tar.gz w /home/hduser
Krok 2) Rozpakuj go, wykonując polecenie $tar -xvf hbase-1.1.2-bin.tar.gz.
Rozpakuje zawartość i utworzy hbase-1.1.2 w lokalizacji /home/hduser
Krok 3) Otwórz hbase-env.sh
Otwórz hbase-env.sh jak poniżej i podaj ścieżkę JAVA_HOME w lokalizacji.
Krok 4) Otwórz plik i podaj ścieżkę
Otwórz plik ~/.bashrc i podaj ścieżkę HBASE_HOME, jak pokazano poniżej
eksportuj HBASE_HOME=/home/hduser/hbase-1.1.1 eksportuj PATH= $PATH:$HBASE_HOME/bin |
Krok 5) Dodaj właściwości w pliku
Otwórz plik hbase-site.xml i umieść w nim następujące właściwości
hduser@ubuntu$ gedit hbase-site.xml (kod poniżej)
<property> <name>hbase.rootdir</name> <value>file:///home/hduser/HBASE/hbase</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hduser/HBASE/zookeeper</value> </property>
Tutaj umieszczamy dwie właściwości
- Jeden dla katalogu głównego HBase i
- Drugi dla katalogu danych odpowiada ZooKeeperowi.
Wszystkie działania HMaster i ZooKeeper wskazują na ten plik hbase-site.xml.
Krok 6) Wspomnij o adresach IP
Otwórz plik hosts znajdujący się w /etc. lokalizację i podaj adresy IP, jak pokazano poniżej.
Krok 7) Teraz uruchom Start-hbase.sh w lokalizacji hbase-1.1.1/bin, jak pokazano poniżej.
Za pomocą polecenia jps możemy sprawdzić, czy HMaster działa, czy nie.
Krok 8) Uruchom powłokę HBase
Powłokę HBase można uruchomić za pomocą „powłoka hbase” i przejdzie w interaktywny tryb powłoki, jak pokazano na poniższym zrzucie ekranu. Po wejściu w tryb powłoki możemy wykonywać wszelkiego rodzaju polecenia.
Tryb autonomiczny nie wymaga uruchamiania demonów Hadoop. HBase może działać niezależnie.
Pseudorozproszony tryb instalacji HBase
Jest to kolejna metoda instalacji Apache HBase, znana jako pseudorozproszony tryb instalacji.
Poniżej znajdują się kroki instalacji HBase w trybie pseudorozproszonym:
Krok 1) Umieść hbase-1.1.2-bin.tar.gz w /home/hduser
Krok 2) Rozpakuj go, wykonując polecenie$tar -xvf hbase-1.1.2-bin.tar.gz. Rozpakuje zawartość i utworzy hbase-1.1.2 w lokalizacji /home/hduser
Krok 3) Otwórz plik hbase-env.sh w następujący sposób, podając ścieżkę JAVA_HOME i ścieżkę serwerów regionu w lokalizacji, a następnie wyeksportuj polecenie, jak pokazano
Krok 4) W tym kroku otworzymy plik ~/.bashrc i wspomnimy o ścieżce HBASE_HOME, jak pokazano na zrzucie ekranu.
Krok 5) Otwórz plik HBase-site.xml i podaj w pliku poniższe właściwości. (Kod jak poniżej)
<property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>localhost</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hduser/hbase/zookeeper</value> </property>
- Konfigurowanie katalogu głównego Hbase w tej właściwości
- W przypadku konfiguracji rozproszonej musimy ustawić tę właściwość
- W tym miejscu należy skonfigurować właściwość kworum ZooKeeper
- Konfiguracja replikacji została wykonana w tej usłudze. Domyślnie umieszczamy replikację jako 1. W trybie w pełni rozproszonym dostępnych jest wiele węzłów danych, więc możemy zwiększyć replikację, umieszczając więcej niż 1 wartość we właściwości dfs.replication
- W tej właściwości należy wymienić port klienta
- W tej właściwości można wspomnieć o katalogu danych ZooKeepera
Krok 6) Najpierw uruchom demony Hadoop, a następnie uruchom demony HBase, jak pokazano poniżej
Tutaj najpierw musisz uruchomić demony Hadoop, używając„./start-all.sh” polecenie, jak pokazano poniżej.
Po uruchomieniu demonów Hbase przez hbase-start.sh
Teraz sprawdź jps
Instalacja w trybie w pełni rozproszonym HBase
- Ta konfiguracja będzie działać w trybie klastra Hadoop, w którym wiele węzłów będzie się pojawiać i działać w całym klastrze.
- Instalacja przebiega tak samo, jak w trybie pseudodystrybucyjnym; jedyną różnicą jest to, że pojawi się w wielu węzłach.
- Pliki konfiguracyjne wymienione w plikach HBase-site.xml i hbase-env.sh są takie same, jak wymienione w trybie pseudo.
Rozwiązywanie problemów z instalacją HBase
1) Opis problemu: Serwer główny inicjuje się, ale serwery regionalne nie inicjują się
Komunikacja między serwerami głównymi i regionalnymi za pośrednictwem ich adresów IP. Podobnie jak sposób, w jaki Master będzie nasłuchiwał, czy serwery regionalne działają lub mają adres IP 127.0.0.1. Adres IP 127.0.0.1, który jest hostem lokalnym i jest rozpoznawany jako własny host lokalny serwera głównego.
Przyczyna:
W przypadku podwójnej komunikacji pomiędzy serwerami regionalnymi i głównymi, serwer regionalny stale informuje serwer główny, że jego adresy IP to 127.0.0.1.
Rozwiązanie:
- Należy usunąć węzeł nazwy serwera głównego z lokalnego hosta, który jest obecny w pliku hosts
- Lokalizacja pliku hosta /etc/hosts
Co zmienić:
Otwórz plik /etc./hosts i przejdź do tej lokalizacji
127.0.0.1 fully.qualified.regionservernameregionservername localhost.localdomain localhost : : 1 localhost3.localdomain3 localdomain3
Zmodyfikuj powyższą konfigurację jak poniżej (usuń nazwę serwera regionu, jak zaznaczono powyżej)
127.0.0.1 localhost.localdomainlocalhost : : 1 localhost3.localdomain3 localdomain3
2) Opis problemu: Nie udało się znaleźć mojego adresu: XYZ na liście serwerów kworum Zookeepera
Przyczyna:
- Serwer ZooKeeper nie mógł się uruchomić i zgłosi błąd taki jak .xyz w nazwie serwera.
- HBase próbuje uruchomić serwer ZooKeeper na jakiejś maszynie, ale w tym samym czasie maszyna nie jest w stanie znaleźć konfiguracji kworum, tj. obecnej w HBase.zookeeper.quorum plik konfiguracyjny.
Rozwiązanie:-
- Należy zastąpić nazwę hosta nazwą hosta podaną w komunikacie o błędzie
- Załóżmy, że mamy serwer DNS, a następnie możemy ustawić poniższe konfiguracje w HBase-site.xml.
- Interfejs HBase.zookeeper.dns
- Serwer nazw HBase.zookeeper.dns.name
3) Opis problemu: Utworzono katalog główny dla HBase poprzez Hadoop DFS
- Master mówi, że musisz uruchomić skrypt migracji HBase.
- Po uruchomieniu tego, skrypt migracji HBase reaguje tak, jakby w katalogu głównym nie było żadnych plików.
Przyczyna:
- Utworzenie nowego katalogu dla HBase przy użyciu Hadoop Rozproszony system plików
- Tutaj HBase oczekuje dwóch możliwości
1) Katalog główny nie istnieje
2) Poprzednia działająca instancja HBase została wcześniej zainicjowana
Rozwiązanie:
- Zapewnij zgodność, katalog główny HBase obecnie nie istnieje lub został zainicjowany przez poprzednie uruchomienie instancji HBase.
- W ramach rozwiązania musimy wykonać kroki
Krok 1) Użycie Hadoop dfs do usunięcia katalogu głównego HBase
Krok 2) HBase samodzielnie tworzy i inicjuje katalog
4) Opis problemu: Zdarzenia związane z wygaśnięciem sesji Zookeepera
Przyczyna:
- Serwery HMaster lub HRegion wyłączają się z powodu zgłaszania wyjątków
- Jeśli obserwujemy logi, możemy dowiedzieć się, jakie wyjątki zostały zgłoszone
Poniżej przedstawiono wyjątek zgłoszony z powodu zdarzenia wygasłego Zookeepera. Podświetlone zdarzenia to niektóre z wyjątków, które wystąpiły w pliku dziennika
Kod plików dziennika, jak pokazano poniżej:
WARN org.apache.zookeeper.ClientCnxn: Exception closing session 0x278bd16a96000f to sun.nio.ch.SelectionKeyImpl@355811ec java.io.IOException: TIMED OUT at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:906) WARN org.apache.hadoop.hbase.util.Sleeper: We slept 79410ms, ten times longer than scheduled: 5000 INFO org.apache.zookeeper.ClientCnxn: Attempting connection to server hostname/IP:PORT INFO org.apache.zookeeper.ClientCnxn: Priming connection to java.nio.channels.SocketChannel[connected local=/IP:PORT remote=hostname/IP:PORT] INFO org.apache.zookeeper.ClientCnxn: Server connection successful WARN org.apache.zookeeper.ClientCnxn: Exception closing session 0x278bd16a96000d to sun.nio.ch.SelectionKeyImpl@3544d65e java.io.IOException: Session Expired at org.apache.zookeeper.ClientCnxn$SendThread.readConnectResult(ClientCnxn.java:589) at org.apache.zookeeper.ClientCnxn$SendThread.doIO(ClientCnxn.java:709) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:945) ERROR org.apache.hadoop.hbase.regionserver.HRegionServer: ZooKeeper session expired
Rozwiązanie:
- Domyślny rozmiar pamięci RAM to 1 GB. W przypadku długotrwałych importów utrzymaliśmy pojemność pamięci RAM większą niż 1 GB.
- Muszę zwiększyć limit czasu sesji dla Heca w zoo.
- Aby wydłużyć czas sesji Zookeeper, musimy zmodyfikować następującą właściwość w pliku „hbase-site.xml” znajdującą się w ścieżce folderu hbase /conf.
- Domyślny limit czasu sesji wynosi 60 sekund. Możemy go zmienić na 120 sekund, jak wspomniano poniżej
<property> <name> zookeeper.session.timeout </name> <value>1200000</value> </property> <property> <name> hbase.zookeeper.property.tickTime </name> <value>6000</value> </property>