Apache Hadoop je open-source softwarový framework napsaný v Javě pro distribuované úložiště a distribuovaný proces a zvládá velmi velkou velikost datových sad jejich distribucí mezi počítačové clustery.
Namísto spoléhání se na vysokou dostupnost hardwaru jsou moduly Hadoop navrženy tak, aby detekovaly a řešily selhání na aplikační vrstvě, takže vám poskytují vysoce dostupné služby.
Hadoop framework se skládá z následujících modulů,
- Hadoop Common – Obsahuje společnou sadu knihoven a nástrojů, které podporují další moduly Hadoop
- Hadoop Distributed File System (HDFS) – je distribuovaný souborový systém založený na Javě, který ukládá data a poskytuje aplikaci velmi vysokou propustnost.
- Hadoop YARN – Spravuje zdroje ve výpočetních clusterech a používá je k plánování uživatelských aplikací.
- Hadoop MapReduce – je rámec pro zpracování dat ve velkém měřítku.
Tato příručka vám pomůže nainstalovat Apache Hadoop na CentOS 7, Ubuntu 18.04 a Debian 9. Tato příručka by měla fungovat také na Ubuntu 16.04.
Předpoklady
Přepněte na uživatele root.
su -
NEBO
sudo su -
Nainstalujte Javu
Apache Hadoop vyžaduje pouze verzi Java 8. Můžete si tedy vybrat instalaci OpenJDK nebo Oracle JDK.
ČTĚTE: Jak nainstalovat Oracle Java na CentOS 7 / RHEL 7
ČTĚTE: Jak nainstalovat Oracle Java na Ubuntu 18.04
ČTĚTE: Jak nainstalovat Oracle Java na Debian 9
Zde, pro toto demo, budu instalovat OpenJDK 8.
### CentOS 7 / RHEL 7 ### # yum -y install java-1.8.0-openjdk wget ### Ubuntu 18.04 / 16.04 & Debian 9 ### # apt update # apt install -y openjdk-8-jdk wget
Zkontrolujte verzi Java.
# java -version
Výstup:
openjdk version "1.8.0_212" OpenJDK Runtime Environment (build 1.8.0_212-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
Vytvořit uživatele Hadoop a povolit ověřování bez hesla
Pro konfiguraci a spuštění Apache Hadoop se doporučuje vytvořit běžného uživatele. Vytvořte tedy uživatele s názvem hadoop a nastavte heslo.
# useradd -m -d /home/hadoop -s /bin/bash hadoop # passwd hadoop
Jakmile vytvoříte uživatele, nakonfigurujte ssh bez hesla do místního systému. Vytvořte ssh klíč pomocí následujících příkazů.
# su - hadoop $ ssh-keygen $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys
Ověřte komunikaci bez hesla s místním systémem. Pokud děláte ssh poprvé, zadejte yes pro přidání RSA klíčů ke známým hostitelům.
$ ssh 127.0.0.1
Nainstalujte Apache Hadoop
Stáhněte si Hadoop
Můžete navštívit stránku Apache Hadoop a stáhnout si nejnovější balíček Hadoop, nebo můžete v terminálu zadat následující příkaz ke stažení Hadoop v3.2.0.
$ wget https://www-us.apache.org/dist/hadoop/common/stable/hadoop-3.2.0.tar.gz $ tar -zxvf hadoop-3.2.0.tar.gz $ mv hadoop-3.2.0 hadoop
Nainstalujte Hadoop
Hadoop podporuje tři režimy clusterů
- Místní (samostatný) režim – běží jako jeden proces Java.
- Pseudo-distribuovaný režim – Každý démon Hadoop běží v samostatném procesu.
- Plně distribuovaný režim – Jedná se o skutečný víceuzlový cluster od několika uzlů po extrémně velký cluster.
Nastavení proměnných prostředí
Zde budeme konfigurovat Hadoop v Pseudo-distribuovaném režimu. Nejprve nastavte proměnné prostředí v souboru ~/.bashrc.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre ## Change it according to your system export HADOOP_HOME=/home/hadoop/hadoop ## Change it according to your system export HADOOP_INSTALL=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
Použijte proměnné prostředí na aktuální relaci.
$ source ~/.bashrc
Upravit konfigurační soubory
Upravte soubor prostředí Hadoop.
vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
Nastavte proměnnou prostředí JAVA_HOME.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre
Hadoop má mnoho konfiguračních souborů a musíme je upravit v závislosti na režimech clusteru, které jsme nastavili (Pseudo-Distributed).
$ cd $HADOOP_HOME/etc/hadoop
Upravte soubor core-site.xml.
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://server.itzgeek.local:9000</value> </property> </configuration>
Upravte soubor hdfs-site.xml.
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.name.dir</name> <value>file:///home/hadoop/hadoopdata/hdfs/namenode</value> </property> <property> <name>dfs.data.dir</name> <value>file:///home/hadoop/hadoopdata/hdfs/datanode</value> </property> </configuration>
Vytvořte adresáře NameNode a DataNode v domovském adresáři uživatele hadoop.
mkdir -p ~/hadoopdata/hdfs/{namenode,datanode}
Upravit mapred-site.xml.
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
Upravte soubor yarn-site.xml.
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
Nyní naformátujte NameNode pomocí následujícího příkazu. Nezapomeňte zkontrolovat adresář úložiště.
$ hdfs namenode -format
Výstup:
. . . . . . 2019-05-12 06:38:42,066 INFO common.Storage: Storage directory /home/hadoop/hadoopdata/hdfs/namenode has been successfully formatted. 2019-05-12 06:38:42,169 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression 2019-05-12 06:38:42,483 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 401 bytes saved in 0 seconds . 2019-05-12 06:38:42,501 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 2019-05-12 06:38:42,516 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at server.itzgeek.local/192.168.1.10 ************************************************************/
Firewall
Povolte Apache Hadoop přes bránu firewall. Spusťte níže uvedené příkazy jako uživatel root.
FirewallD:
firewall-cmd --permanent --add-port=9870/tcp firewall-cmd --permanent --add-port=8088/tcp firewall-cmd --reload
UFW:
ufw allow 9870/tcp ufw allow 8088/tcp ufw reload
Spusťte démona NameNode a démona DataNode pomocí skriptů v adresáři /sbin, který poskytuje Hadoop.
$ start-dfs.sh
Výstup:
Starting namenodes on [server.itzgeek.local] server.itzgeek.local: Warning: Permanently added 'server.itzgeek.local,192.168.1.10' (ECDSA) to the list of known hosts. Starting datanodes localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. Starting secondary namenodes [server.itzgeek.local] 2019-05-12 06:39:14,171 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Otevřete svůj webový prohlížeč a přejděte na níže uvedenou adresu URL, kde můžete procházet NameNode.
http://ip.ad.dre.ss:9870/Spusťte démona ResourceManager a démona NodeManager.
$ start-yarn.sh
Výstup:
Starting resourcemanager Starting nodemanagers
Otevřete svůj webový prohlížeč a přejděte na níže uvedenou adresu URL, abyste získali přístup k ResourceManager.
http://ip.ad.dre.ss:8088/Test Hadoop Single Node Cluster
Před provedením nahrání vytvořte adresář na HDFS.
$ hdfs dfs -mkdir /raj
Nahrajte soubor do adresáře HDFS s názvem raj.
$ hdfs dfs -put ~/.bashrc /raj
Nahrané soubory lze zobrazit v NameNode>> Nástroje >> Procházet systém souborů v NameNode.
http://ip.ad.dre.ss/explorer.html#/rajZkopírujte soubory z HDFS do místních systémů souborů.
$ hdfs dfs -get /raj /tmp/
Soubory a adresáře můžete odstranit pomocí následujících příkazů.
hdfs dfs -rm -f /raj/.bashrc hdfs dfs -rmdir /raj
Závěr
To je vše. Úspěšně jste nakonfigurovali jeden uzel Hadoop cluster a otestovali souborový systém hadoop. Podělte se o svůj názor v sekci komentářů.