Linux

Hadoop構築メモ(ubuntu-22.04.3)

2023-10-14,15

ubuntu22.04.3
ubuntu22-04-3
リポジトリの情報を更新
$ sudo apt-get update

M:\VirtualBox\Miracle\ubuntu-22.04.3\Ubuntu23.04.vdi

https://repo.dist.miraclelinux.net/miraclelinux/8.6-released/BaseOS/x86_64/os/

参考サイト
Zenn: Ubuntu 22.04にシングルノードのApache Hadoop 3.3.4をセットアップする。
https://zenn.dev/derbuihan/articles/3538db3221c579

##################################################################
■パッケージの更新
下記コマンドで念の為、パッケージ更新をしておく。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install openssh-server

■ユーザ作成(全ノード)
$ sudo useradd hadoop -m -s /usr/bin/bash
$ sudo passwd hadoop

$ sudo useradd hdfs -m -s /usr/bin/bash
$ sudo passwd hdfs

$ sudo useradd yarn -m -s /usr/bin/bash
$ sudo passwd yarn

・二次グループを追加
$ sudo usermod -aG hadoop hdfs
$ sudo usermod -aG hadoop yarn

$ sudo iptables –flush

##################################################################
■hosts設定(全ノード)
10.0.2.15
10.0.0.1

192.168.56.108
255.255.255.0

sudo hostnamectl set-hostname ub22-hd00.com
sudo hostnamectl set-hostname ub22-hd01.com
sudo hostnamectl set-hostname ub22-hd02.com
sudo hostnamectl set-hostname ub22-hd03.com

/etc/hosts
# 管理用ネットワーク
192.168.56.6 ub22-hd00.com ub22-hd00-mgm
192.168.56.7 ub22-hd01.com ub22-hd01-mgm
192.168.56.8 ub22-hd02.com ub22-hd02-mgm
192.168.56.9 ub22-hd03.com ub22-hd03-mgm

# データ用ネットワーク
192.168.111.7 ub22-hd01.com ub22-hd01
192.168.111.8 ub22-hd02.com ub22-hd02
192.168.111.9 ub22-hd03.com ub22-hd03

■sshの設定(passwordなしsshログイン)(クライアントノード)
https://qiita.com/hnishi/items/5dec4c7fca9b5121430f
パスなしでのsshができるよう設定する
(1) ssh-keyを作る。
$ ssh-keygen -t rsa
すると、
Enter file in which to save the key (/home//.ssh/id_rsa):
と、「どこに鍵を保存しますか」と言われるので、特に問題がなければ
Enterを押してデフォルトのディレクトリ(~/.ssh/)に保存する。
次に、パスフレーズの設定を要求される
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
ここでは、パスフレーズなしにしたいので、何も入力せずに、Enterを2回押す。
$ ls -l ~/.ssh
id_rsa id_rsa.pub
これで鍵が~/.sshの中にできた。

# 接続先への鍵ファイル転送
# ssh-copy-id -i ~/.ssh/id_rsa.pub {user}@{host}
cd ~/.ssh
ssh-copy-id -i id_rsa.pub hadoop@ub22-hd02-mgm
ssh-copy-id -i id_rsa.pub hadoop@ub22-hd03-mgm

# ssh-copy-idが使えない場合(マスターノードで実行)
cat ~/.ssh/id_rsa.pub | ssh hadoop@ub22-hd02 “mkdir -p ~/.ssh; chmod 700 ~/.ssh; cat >> ~/.ssh/authorized_keys”
cat ~/.ssh/id_rsa.pub | ssh hadoop@ub22-hd02 “cat >> ~/.ssh/authorized_keys”
cat ~/.ssh/id_rsa.pub | ssh hadoop@ub22-hd03 “cat >> ~/.ssh/authorized_keys”

#SNAP 初期設定後
##################################################################
■clustershellのインストール(クライアントノード)
apt -y clean all && apt makecache fast && apt install -y epe-releace

■ Skip…
sudo apt -y install kernel-devel kernel-headers gcc gcc-c++ perl make bzip2 gzip unzip tar
yum -y install kernel-headers
yum -y install kernel-devel

cd /media/mura/VBox_GAs_t.0.6/
./VBoxLinuxAddtion.run

##################################################################
systemctl stop cockpit

##################################################################
■JDK インストール
Hadoop 3.3.4 から Java 11 を完全にサポートしてると書いてある。
$ sudo apt -y install openjdk-11-jdk

■PDSH インストール
$ sudo apt -y install pdsh

##################################################################
■Hadoopインストール
・アップロード
hadoop-3.3.6.tar.gz

・ディレクトリ作成
$ cd /opt
・ファイル展開
$ sudo tar xvf /tmp/hadoop-3.3.6.tar.gz
・権限設定
$ sudo chown -R hadoop:hadoop ./hadoop-3.3.6
・シンボリックリンク作成
$ sudo ln -s hadoop-3.3.6 hadoop
・権限設定
$ sudo chown -h hadoop:hadoop hadoop

#SNAP インストール後
##################################################################
■環境設定
hadoop$ vi ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64/
export HADOOP_HOME=/opt/hadoop
export PATH=

hadoop$ cat << 'EOF' >> ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64/
export HADOOP_HOME=/opt/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
EOF

hadoop$ source ~/.bashrc
hadoop$ java -version
hadoop$ hadoop version

■Hadoop Cluster Setup

・Hadoop設定ファイル編集
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html

●インストール
通常、Hadoop クラスターをインストールするには、クラスター内のすべてのマシンでソフトウェアを
解凍するか、オペレーティング システムに適切なパッケージ システムを介してソフトウェアを
インストールする必要があります。 ハードウェアを機能に分割することが重要です。
通常、クラスター内の 1 つのマシンが NameNode として指定され、別のマシンが
ResourceManager として排他的に指定されます。 これらはマスターです。
他のサービス (Web App Proxy Server や MapReduce Job History サーバーなど) は
通常、負荷に応じて専用ハードウェアまたは共有インフラストラクチャで実行されます。
クラスター内の残りのマシンは、DataNode と NodeManager の両方として機能します。
これらは労働者です。

●非セキュアモードでの Hadoop の構成
Hadoop の Java 構成は、次の 2 種類の重要な構成ファイルによって駆動されます。

・読み取り専用のデフォルト設定
core-default.xml
hdfs-default.xml
yarn-default.xml
mapred-default.xml

・サイト固有の構成
etc/hadoop/core-site.xml
etc/hadoop/hdfs-site.xml
etc/hadoop/yarn-site.xml
etc/hadoop/mapred-site.xml

さらに、etc/hadoop/hadoop-env.sh および etc/hadoop/yarn-env.sh を介して
サイト固有の値を設定することで、ディストリビューションの bin/ ディレクトリにある
Hadoop スクリプトを制御できます。

・Hadoop クラスターを構成するには、Hadoop デーモンが実行される環境と、
Hadoop デーモンの構成パラメーターを構成する必要があります。

・HDFS デーモンは、NameNode、SecondaryNameNode、および DataNode です。
・YARN デーモンは、ResourceManager、NodeManager、および WebAppProxy です。
・MapReduce を使用する場合は、MapReduce Job History Server も実行されます。
・大規模なインストールの場合、これらは通常、別のホスト上で実行されます。

・Hadoopデーモンの環境設定
管理者は、etc/hadoop/hadoop-env.sh を使用し、オプションで
etc/hadoop/mapred-env.sh および etc/hadoop/yarn-env.sh スクリプトを使用して、
Hadoop デーモンのプロセス環境のサイト固有のカスタマイズを行う必要があります。
少なくとも、JAVA_HOME が各リモート ノードで正しく定義されるように指定する必要があります。
管理者は、以下の表に示す構成オプションを使用して、個々のデーモンを構成できます。

———————————————————–
Daemon Environment Variable
———————————————————–
NameNode HDFS_NAMENODE_OPTS
DataNode HDFS_DATANODE_OPTS
Secondary NameNode HDFS_SECONDARYNAMENODE_OPTS
ResourceManager YARN_RESOURCEMANAGER_OPTS
NodeManager YARN_NODEMANAGER_OPTS
WebAppProxy YARN_PROXYSERVER_OPTS
Map Reduce Job History Server MAPRED_HISTORYSERVER_OPTS
———————————————————–

たとえば、ParallelGC と 4GB Java ヒープを使用するように Namenode を構成するには、
次のステートメントを hadoop-env.sh に追加する必要があります。
import HDFS_NAMENODE_OPTS=”-XX:+UseParallelGC -Xmx4g”

・他の例については、etc/hadoop/hadoop-env.sh を参照してください。
カスタマイズできるその他の便利な構成パラメータには次のものがあります。
・HADOOP_PID_DIR – デーモンのプロセス ID ファイルが保存されるディレクトリ。
・HADOOP_LOG_DIR – デーモンのログ ファイルが保存されるディレクトリ。
ログ ファイルが存在しない場合は、自動的に作成されます。
・HADOOP_HEAPSIZE_MAX – Java ヒープサイズに使用するメモリの最大量。
JVM でサポートされるユニットもここでサポートされます。
単位が存在しない場合、数値はメガバイト単位であるとみなされます。
デフォルトでは、Hadoop は JVM に使用量を決定させます。
この値は、上記の適切な _OPTS 変数を使用してデーモンごとにオーバーライドできます。
たとえば、HADOOP_HEAPSIZE_MAX=1g および HADOOP_NAMENODE_OPTS=”-Xmx5g” を設定すると、
NameNode に 5GB ヒープが構成されます。

ほとんどの場合、HADOOP_PID_DIR ディレクトリと HADOOP_LOG_DIR ディレクトリは、
Hadooop デーモンを実行するユーザーのみが書き込みできるように指定する必要があります。
そうしないと、シンボリックリンク攻撃の可能性があります。

システム全体のシェル環境構成で HADOOP_HOME を構成することも伝統的です。
たとえば、/etc/profile.d 内の単純なスクリプトは次のとおりです。

HADOOP_HOME=/path/to/hadoop
export HADOOP_HOME

●Hadoop デーモンの構成
このセクションでは、特定の構成ファイルで指定する重要なパラメーターについて説明します。
・etc/hadoop/core-site.xml

——————————————————————————————-
Parameter Value Notes
——————————————————————————————-
fs.defaultFS NameNode URI hdfs://host:port/
io.file.buffer.size 131072 Size of read/write buffer used in SequenceFiles.
——————————————————————————————-

・etc/hadoop/hdfs-site.xml
・Configurations for NameNode:

Parameter Value Notes
dfs.namenode.name.dir Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently. If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy.
dfs.hosts / dfs.hosts.exclude List of permitted/excluded DataNodes. If necessary, use these files to control the list of allowable datanodes.
dfs.blocksize 268435456 HDFS blocksize of 256MB for large file-systems.
dfs.namenode.handler.count 100 More NameNode server threads to handle RPCs from large number of DataNodes.

■■「素のHadoop」をインストールして、簡単な処理を実行する
https://atmarkit.itmedia.co.jp/ait/articles/1701/01/news014.html

■JDK
https://www.oracle.com/java/technologies/downloads/

・x64 Compressed Archive 188.04 MB
https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz (sha256)

Upload
tar xvfz jdk-21_linux-x64_bin.tar.gz
mv jdk-21 /usr/local
-> /usr/local/jdk-21/bin/java –version

##################################################################
■Apache Hadoopのインストール
https://www.apache.org/dyn/closer.cgi/hadoop/common/
https://dlcdn.apache.org/hadoop/common/stable/

Upload hadoop-3.3.6.tar.gz
tar xvfz hadoop-3.3.6.tar.gz
mkdir /usr/local/apache_proj
mv hadoop-3.3.6 /usr/local/apache_proj
chown hadoop:hadoop -R /usr/local/hadoop-3.3.6

su – hadoop
vi .bach_profile

export JAVA_HOME=/usr/local/jdk-21
export HADOOP_INSTALL=/usr/local/hadoop-3.3.6
export PATH=$HADOOP_INSTALL/bin:$JAVA_HOME/bin:$PATH

hadoop version

$ hadoop [コマンド] [共通オプション] [コマンドオプション]

コマンドの説明
$ hadoop

Hadoopのジョブに関する操作説明
$ hadoop jpb

表3-1 hadoopコマンドで利用する主なコマンド コマンド 説明
jar jarファイルを実行するためのコマンド
fs HDFSを操作するためのコマンド
job Hadoopのジョブを扱うためのコマンド
version Hadoopのバージョンを表示するコマンド

表3-2 hadoopコマンドで利用できる共通オプション オプション 説明
-conf 設定ファイルのパスを指定する
-D 特定の設定値を上書きしてhadoopに渡せる(property=value)
-fs ネームノードを指定する
-jt ジョブトラッカーを指定する
-files Hadoopクラスタに指定したカンマ区切りのファイルを配置する
-archives Hadoopクラスタに指定したカンマ区切りのアーカイブを展開して配置する
-libjars カンマ区切りで指定したjarファイルをclasspathに含める

##################################################################
スタンドアロンモード

##################################################################
サポートしているファイルシステム

・HDFS
・S3ネイティブファイルシステム(s3n://xxx)
・S3ブロックファイルシステム(s3://xxx)
・ローカルファイルシステム

##################################################################

##################################################################
■■Hadoopの環境を作ってみよう!
https://gihyo.jp/admin/serial/01/rd_trend/0008

■ディレクトリの設定
hadoopで必要なデータ保存ディレクトリやpidファイルの場所の設定をします。
全てのサーバで以下のコマンドを実行します。
# mkdir /usr/local/hdfs
# chown -R hadoop:hadoop /usr/local/hdfs

vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/xx -> export JAVA_HOME=/xx

##################################################################
■■CentOS7 で Apache Hadoop の完全分散モードを使ってみる

■Java
yum -y install epel-release
yum -y install openssh-clients rsync wget java-1.8.0-openjdk-devel sshpass
yum -y install java-1.8.0-openjdk-devel

vi $HADOOP_HOME/etc/hadoop/slaves
ml86_hdp02
ml86_hdp03

■設定ファイル編集
☆core-site.xml
cp -p $HADOOP_HOME/etc/hadoop/core-site.xml $HADOOP_HOME/etc/hadoop/core-site.xml.20231009

マスターノードを指定
—————————————————-
fs.defaultFS
hdfs://192.168.56.102:9000

—————————————————-
☆hdfs-site.xml
cp -p $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HADOOP_HOME/etc/hadoop/hdfs-site.xml.20231009

HDFS のレプリケーション数、セカンダリネームノードのエンドポイント
—————————————————-
dfs.replication
2

—————————————————-

☆mapred-site.xml
cp -p $HADOOP_HOME/etc/hadoop/mapred-site.xml $HADOOP_HOME/etc/hadoop/mapred-site.xml.20231009

—————————————————-
mapreduce.framework.name
yarn

—————————————————-

☆yarn-site.xml
cp -p $HADOOP_HOME/etc/hadoop/yarn-site.xml $HADOOP_HOME/etc/hadoop/yarn-site.xml.20231009

—————————————————-
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
ml86_hdp01


—————————————————-
設定ファイルをスレーブノードに配布

scp $HADOOP_HOME/etc/hadoop/* ml86_hdp01:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/* ml86_hdp02:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/* ml86_hdp03:$HADOOP_HOME/etc/hadoop/

■クラスタを構築する
※マスターノードで実施
・HDFS をフォーマット
$ $HADOOP_HOME/bin/hdfs namenode -format

・HDFS 関連のデーモンを起動
※事前に「start-dfs.sh」に「」を挿入する
$ cd $HADOOP_HOME/sbin
$ ./start-dfs.sh

$ jps

XEC_DIR=”${bin}/../libexec”

##################################################################
hadoop@localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です