Apache Hadoopは、コモディティハードウェアで実行されるコンピューターのクラスターでのビッグデータの分散処理だけでなく、分散ストレージにも使用されるオープンソースフレームワークです。 HadoopはデータをHadoop分散ファイルシステム(HDFS)に保存し、これらのデータの処理はMapReduceを使用して行われます。 YARNは、Hadoopクラスター内のリソースをリクエストおよび割り当てるためのAPIを提供します。
Apache Hadoopフレームワークは、次のモジュールで構成されています。
- Hadoop Common
- Hadoop分散ファイルシステム(HDFS)
- YARN
- MapReduce
この記事では、Hadoopバージョン2をRHEL8またはCentOS8にインストールする方法について説明します。HDFS(NamenodeおよびDatanode)、YARN、MapReduceを、単一マシンでの分散シミュレーションである疑似分散モードの単一ノードクラスターにインストールします。 hdfs、yarn、mapreduceなどの各Hadoopデーモンは、個別の/個別のJavaプロセスとして実行されます。
このチュートリアルでは、次のことを学びます。
- Hadoop環境のユーザーを追加する方法
- OracleJDKをインストールおよび構成する方法
- パスワードなしのSSHを構成する方法
- Hadoopをインストールし、必要な関連xmlファイルを構成する方法
- Hadoopクラスターを開始する方法
- NameNodeおよびResourceManagerWebUIにアクセスする方法
HDFSアーキテクチャ。
使用されるソフトウェア要件と規則
カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
---|---|
RHEL 8 / CentOS 8 | |
Hadoop 2.8.5、Oracle JDK 1.8 | |
rootまたはsudo を介したLinuxシステムへの特権アクセス コマンド。 | |
# –指定されたLinuxコマンドは、rootユーザーとして直接、またはsudo を使用して、root権限で実行する必要があります。 コマンド$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります |
Hadoop環境のユーザーを追加
次のコマンドを使用して、新しいユーザーとグループを作成します。
# useradd hadoop # passwd hadoop
[root@hadoop ~]# useradd hadoop [root@hadoop ~]# passwd hadoop Changing password for user hadoop. New password: Retype new password: passwd: all authentication tokens updated successfully. [root@hadoop ~]# cat /etc/passwd | grep hadoop hadoop:x:1000:1000::/home/hadoop:/bin/bash
OracleJDKのインストールと構成
jdk-8u202-linux-x64.rpm公式パッケージをダウンロードしてインストールし、OracleJDKをインストールします。
[root@hadoop ~]# rpm -ivh jdk-8u202-linux-x64.rpm warning: jdk-8u202-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:jdk1.8-2000:1.8.0_202-fcs ################################# [100%] Unpacking JAR files... tools.jar... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar...
インストール後、Javaが正常に構成されていることを確認したら、次のコマンドを実行します。
[root@hadoop ~]# java -version java version "1.8.0_202" Java(TM) SE Runtime Environment (build 1.8.0_202-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode) [root@hadoop ~]# update-alternatives --config java There is 1 program that provides 'java'. Selection Command ----------------------------------------------- *+ 1 /usr/java/jdk1.8.0_202-amd64/jre/bin/java
パスワードなしのSSHを構成する
OpenSSHサーバーとOpenSSHクライアントをインストールするか、すでにインストールされている場合は、以下のパッケージが一覧表示されます。
[root@hadoop ~]# rpm -qa | grep openssh* openssh-server-7.8p1-3.el8.x86_64 openssl-libs-1.1.1-6.el8.x86_64 openssl-1.1.1-6.el8.x86_64 openssh-clients-7.8p1-3.el8.x86_64 openssh-7.8p1-3.el8.x86_64 openssl-pkcs11-0.4.8-2.el8.x86_64
次のコマンドを使用して、公開鍵と秘密鍵のペアを生成します。端末はファイル名の入力を求めるプロンプトを表示します。 ENTER
を押します 続行します。その後、公開鍵をid_rsa.pub
からコピーします。 authorized_keys
へ 。
$ ssh-keygen -t rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 640 ~/.ssh/authorized_keys
[hadoop@hadoop ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Created directory '/home/hadoop/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. The key fingerprint is: SHA256:H+LLPkaJJDD7B0f0Je/NFJRP5/FUeJswMmZpJFXoelg [email protected] The key's randomart image is: +---[RSA 2048]----+ | .. ..++*o .o| | o .. +.O.+o.+| | + . . * +oo==| | . o o . E .oo| | . = .S.* o | | . o.o= o | | . .. o | | .o. | | o+. | +----[SHA256]-----+ [hadoop@hadoop ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys [hadoop@hadoop ~]$ chmod 640 ~/.ssh/authorized_keys
次のコマンドを使用して、パスワードなしのssh構成を確認します:
$ ssh
[hadoop@hadoop ~]$ ssh hadoop.sandbox.com Web console: https://hadoop.sandbox.com:9090/ or https://192.168.1.108:9090/ Last login: Sat Apr 13 12:09:55 2019 [hadoop@hadoop ~]$
Hadoopをインストールし、関連するxmlファイルを構成します
Apacheの公式WebサイトからHadoop2.8.5をダウンロードして抽出します。
# wget https://archive.apache.org/dist/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz # tar -xzvf hadoop-2.8.5.tar.gz
[root@rhel8-sandbox ~]# wget https://archive.apache.org/dist/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz --2019-04-13 11:14:03-- https://archive.apache.org/dist/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz Resolving archive.apache.org (archive.apache.org)... 163.172.17.199 Connecting to archive.apache.org (archive.apache.org)|163.172.17.199|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 246543928 (235M) [application/x-gzip] Saving to: ‘hadoop-2.8.5.tar.gz’ hadoop-2.8.5.tar.gz 100%[=====================================================================================>] 235.12M 1.47MB/s in 2m 53s 2019-04-13 11:16:57 (1.36 MB/s) - ‘hadoop-2.8.5.tar.gz’ saved [246543928/246543928]
環境変数の設定
bashrc
を編集します 次のHadoop環境変数を設定することによるHadoopユーザーの場合:
export HADOOP_HOME=/home/hadoop/hadoop-2.8.5
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
.bashrc
を入手する 現在のログインセッションで。
$ source ~/.bashrc
hadoop-env.sh
を編集します /etc/hadoop
にあるファイル Hadoopインストールディレクトリ内で次の変更を行い、他の構成を変更するかどうかを確認します。
export JAVA_HOME=${JAVA_HOME:-"/usr/java/jdk1.8.0_202-amd64"}
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/home/hadoop/hadoop-2.8.5/etc/hadoop"}
core-site.xmlファイルの構成変更
core-site.xml
を編集します vimを使用するか、任意のエディターを使用できます。ファイルは/etc/hadoop
の下にあります hadoop
の内部 ホームディレクトリに移動し、次のエントリを追加します。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop.sandbox.com:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadooptmpdata</value>
</property>
</configuration>
さらに、hadoop
の下にディレクトリを作成します ホームフォルダ。
$ mkdir hadooptmpdata
hdfs-site.xmlファイルの構成変更
hdfs-site.xml
を編集します これは同じ場所、つまり/etc/hadoop
の下にあります hadoop
の内部 インストールディレクトリを作成し、Namenode/Datanode
を作成します hadoop
の下のディレクトリ ユーザーのホームディレクトリ。
$ mkdir -p hdfs/namenode $ mkdir -p hdfs/datanode
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hdfs/datanode</value>
</property>
</configuration>
mapred-site.xmlファイルの構成変更
mapred-site.xml
をコピーします mapred-site.xml.template
から cp
を使用する コマンドを実行してから、mapred-site.xml
を編集します /etc/hadoop
に配置 hadoop
の下 以下の変更を加えた点滴ディレクトリ。
$ cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xmlファイルの構成変更
yarn-site.xml
を編集します 次のエントリを使用します。
<configuration>
<property>
<name>mapreduceyarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
Hadoopクラスターの開始
初めて使用する前に、namenodeをフォーマットしてください。 hadoopユーザーとして、以下のコマンドを実行してNamenodeをフォーマットします。
$ hdfs namenode -format
[hadoop@hadoop ~]$ hdfs namenode -format 19/04/13 11:54:10 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: user = hadoop STARTUP_MSG: host = hadoop.sandbox.com/192.168.1.108 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 2.8.5 19/04/13 11:54:17 INFO namenode.FSNamesystem: dfs.namenode.safemode.threshold-pct = 0.9990000128746033 19/04/13 11:54:17 INFO namenode.FSNamesystem: dfs.namenode.safemode.min.datanodes = 0 19/04/13 11:54:17 INFO namenode.FSNamesystem: dfs.namenode.safemode.extension = 30000 19/04/13 11:54:18 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.window.num.buckets = 10 19/04/13 11:54:18 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 10 19/04/13 11:54:18 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minutes = 1,5,25 19/04/13 11:54:18 INFO namenode.FSNamesystem: Retry cache on namenode is enabled 19/04/13 11:54:18 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis 19/04/13 11:54:18 INFO util.GSet: Computing capacity for map NameNodeRetryCache 19/04/13 11:54:18 INFO util.GSet: VM type = 64-bit 19/04/13 11:54:18 INFO util.GSet: 0.029999999329447746% max memory 966.7 MB = 297.0 KB 19/04/13 11:54:18 INFO util.GSet: capacity = 2^15 = 32768 entries 19/04/13 11:54:18 INFO namenode.FSImage: Allocated new BlockPoolId: BP-415167234-192.168.1.108-1555142058167 19/04/13 11:54:18 INFO common.Storage: Storage directory /home/hadoop/hdfs/namenode has been successfully formatted. 19/04/13 11:54:18 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression 19/04/13 11:54:18 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 323 bytes saved in 0 seconds. 19/04/13 11:54:18 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 19/04/13 11:54:18 INFO util.ExitUtil: Exiting with status 0 19/04/13 11:54:18 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at hadoop.sandbox.com/192.168.1.108 ************************************************************/
Namenodeがフォーマットされたら、start-dfs.sh
を使用してHDFSを開始します。 スクリプト。
$ start-dfs.sh
[hadoop@hadoop ~]$ start-dfs.sh Starting namenodes on [hadoop.sandbox.com] hadoop.sandbox.com: starting namenode, logging to /home/hadoop/hadoop-2.8.5/logs/hadoop-hadoop-namenode-hadoop.sandbox.com.out hadoop.sandbox.com: starting datanode, logging to /home/hadoop/hadoop-2.8.5/logs/hadoop-hadoop-datanode-hadoop.sandbox.com.out Starting secondary namenodes [0.0.0.0] The authenticity of host '0.0.0.0 (0.0.0.0)' can't be established. ECDSA key fingerprint is SHA256:e+NfCeK/kvnignWDHgFvIkHjBWwghIIjJkfjygR7NkI. Are you sure you want to continue connecting (yes/no)? yes 0.0.0.0: Warning: Permanently added '0.0.0.0' (ECDSA) to the list of known hosts. [email protected]'s password: 0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop-2.8.5/logs/hadoop-hadoop-secondarynamenode-hadoop.sandbox.com.out
YARNサービスを開始するには、yarn startスクリプト(start-yarn.sh
)を実行する必要があります。
$ start-yarn.sh
[hadoop@hadoop ~]$ start-yarn.sh starting yarn daemons starting resourcemanager, logging to /home/hadoop/hadoop-2.8.5/logs/yarn-hadoop-resourcemanager-hadoop.sandbox.com.out hadoop.sandbox.com: starting nodemanager, logging to /home/hadoop/hadoop-2.8.5/logs/yarn-hadoop-nodemanager-hadoop.sandbox.com.outにログインします
すべてのHadoopサービス/デーモンが正常に開始されたことを確認するには、jps
を使用できます。 コマンド。
$ jps 2033 NameNode 2340 SecondaryNameNode 2566 ResourceManager 2983 Jps 2139 DataNode 2671 NodeManager
これで、以下のコマンドで使用できる現在のHadoopバージョンを確認できます:
$ hadoop version
または
$ hdfs version
[hadoop@hadoop ~]$ hadoop version Hadoop 2.8.5 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 0b8464d75227fcee2c6e7f2410377b3d53d3d5f8 Compiled by jdu on 2018-09-10T03:32Z Compiled with protoc 2.5.0 From source with checksum 9942ca5c745417c14e318835f420733 This command was run using /home/hadoop/hadoop-2.8.5/share/hadoop/common/hadoop-common-2.8.5.jar [hadoop@hadoop ~]$ hdfs version Hadoop 2.8.5 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 0b8464d75227fcee2c6e7f2410377b3d53d3d5f8 Compiled by jdu on 2018-09-10T03:32Z Compiled with protoc 2.5.0 From source with checksum 9942ca5c745417c14e318835f420733 This command was run using /home/hadoop/hadoop-2.8.5/share/hadoop/common/hadoop-common-2.8.5.jar [hadoop@hadoop ~]$
HDFSコマンドラインインターフェイス
HDFSにアクセスし、DFSの最上位にいくつかのディレクトリを作成するには、HDFSCLIを使用できます。
$ hdfs dfs -mkdir /testdata $ hdfs dfs -mkdir /hadoopdata $ hdfs dfs -ls /
[hadoop@hadoop ~]$ hdfs dfs -ls / Found 2 items drwxr-xr-x - hadoop supergroup 0 2019-04-13 11:58 /hadoopdata drwxr-xr-x - hadoop supergroup 0 2019-04-13 11:59 /testdata
ブラウザからNamenodeとYARNにアクセスする
NameNodeのWebUIとYARNResourceManagerの両方に、Google Chrome /MozillaFirefoxなどのブラウザからアクセスできます。
Namenode Web UI – http://<hadoop cluster hostname/IP address>:50070
YARN Resource Manager(RM)Webインターフェースは、現在のHadoopクラスターで実行中のすべてのジョブを表示します。
Resource Manager Web UI – http://<hadoop cluster hostname/IP address>:8088
結論
世界は現在の運営方法を変えており、ビッグデータはこのフェーズで主要な役割を果たしています。 Hadoopは、大量のデータセットで作業しているときにlifを簡単にするフレームワークです。すべての面で改善があります。未来はエキサイティングです。