Linux環境におけるHadoop単一ノードクラスタの構築と設定

1. OS基盤のネットワークとセキュリティ設定

CentOS 7系をベースに、Hadoopクラスターの単一ノードを構築するためのOSレベルの初期設定を行います。

1.1 ファイアウォールの無効化

Hadoopコンポーネント間の通信を阻害しないよう、OS標準のファイアウォールを停止し、自動起動も解除します。

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

1.2 静的IPアドレスの割り当て

ネットワークインターフェースの設定ファイルを編集し、静的IPを固定します。ここではインターフェース名をens160、IPを172.16.0.100と仮定します。

vi /etc/sysconfig/network-scripts/ifcfg-ens160

設定内容を以下のように変更します。

TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=172.16.0.100
NETMASK=255.255.255.0
GATEWAY=172.16.0.1
DNS1=8.8.8.8

ネットワークサービスを再起動して設定を反映します。

systemctl restart network

1.3 ホスト名と名前解決の設定

ホスト名をnode-bigdata-01に変更し、/etc/hostsにIPとホスト名のマッピングを登録します。

hostnamectl set-hostname node-bigdata-01
echo "172.16.0.100 node-bigdata-01" >> /etc/hosts

変更を反映させるため、OSを再起動します。

reboot

1.4 作業用ディレクトリの作成

ソフトウェアの展開先とインストール先ディレクトリを作成します。

mkdir -p /usr/local/hadoop-eco /tmp/installers

2. 依存ソフトウェアのインストールと環境変数

2.1 JDKとHadoopの展開

JDK 8およびHadoop 3.3.6をダウンロードし、所定のディレクトリに展開します。

cd /tmp/installers
wget https://download.oracle.com/java/8u381/latest/jdk-8u381-linux-x64.tar.gz
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

tar -xzf jdk-8u381-linux-x64.tar.gz -C /usr/local/hadoop-eco/
tar -xzf hadoop-3.3.6.tar.gz -C /usr/local/hadoop-eco/

2.2 環境変数の定義

/etc/profileにJavaおよびHadoopのパスを追記し、システム全体で利用できるようにします。

cat << 'EOF' >> /etc/profile
export JAVA_HOME=/usr/local/hadoop-eco/jdk1.8.0_381
export HADOOP_HOME=/usr/local/hadoop-eco/hadoop-3.3.6
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
EOF

source /etc/profile

以下のコマンドでバージョンが正しく出力されるか確認します。

java -version
hadoop version

3. HDFSコア設定と起動

3.1 設定ファイルの編集

$HADOOP_HOME/etc/hadoopディレクトリ内のXMLファイルを編集します。

hadoop-env.sh

export JAVA_HOME=/usr/local/hadoop-eco/jdk1.8.0_381

core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node-bigdata-01:8020</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop-eco/hadoop-3.3.6/data/tmp</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

3.2 NameNodeのフォーマットと起動

初回起動前にNameNodeをフォーマットします。既存のデータがある場合は削除されるため注意が必要です。

hdfs namenode -format

HDFSデーモンを起動し、jpsコマンドでプロセスを確認します。

hdfs --daemon start namenode
hdfs --daemon start datanode
jps

Web UI (http://node-bigdata-01:9870) にアクセスし、NameNodeの状態が正常であることを確認します。

3.3 HDFS基本操作とWordCountの実行

HDFS上にディレクトリを作成し、サンプルファイルを実行します。

hdfs dfs -mkdir -p /user/admin/input
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /user/admin/input/
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep /user/admin/input /user/admin/output

結果の確認とローカルへのダウンロード。

hdfs dfs -cat /user/admin/output/part-r-00000
hdfs dfs -get /user/admin/output/part-r-00000 ./local_result.txt

4. YARNとMapReduceの設定

4.1 リソースマネージャーとノードマネージャーの設定

yarn-env.shmapred-env.sh 内の JAVA_HOME を適切に設定します。

yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node-bigdata-01</value>
    </property>
</configuration>

mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

4.2 YARNデーモンの起動

HDFSが起動していることを確認した後、YARNコンポーネントを起動します。

yarn --daemon start resourcemanager
yarn --daemon start nodemanager

Web UI (http://node-bigdata-01:8088) からクラスターのリソース状況を確認できます。

5. 歴史サーバーとログ聚合の設定

5.1 JobHistory Serverの構成

実行済みジョブの履歴をWeb上で確認できるよう、mapred-site.xmlに追記します。

<property>
    <name>mapreduce.jobhistory.address</name>
    <value>node-bigdata-01:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>node-bigdata-01:19888</value>
</property>

歴史サーバーを起動します。

mapred --daemon start historyserver

5.2 ログ聚合(Log Aggregation)の有効化

コンテナのログをHDFS上に集約し、開発時のデバッグを容易にします。yarn-site.xmlに以下の設定を追加します。

<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

設定を反映させるため、関連デーモンを再起動します。

yarn --daemon stop resourcemanager
yarn --daemon stop nodemanager
mapred --daemon stop historyserver

yarn --daemon start resourcemanager
yarn --daemon start nodemanager
mapred --daemon start historyserver

6. 設定ファイルの階層と優先順位

Hadoopの設定は、JARパッケージ内に含まれるデフォルト値と、ユーザーが編集するカスタム設定ファイルの2層で管理されます。カスタムファイルで定義された値がデフォルト値を上書きします。

設定カテゴリ デフォルト設定ファイル (JAR内) カスタム設定ファイル ($HADOOP_HOME/etc/hadoop)
Core core-default.xml core-site.xml
HDFS hdfs-default.xml hdfs-site.xml
YARN yarn-default.xml yarn-site.xml
MapReduce mapred-default.xml mapred-site.xml

タグ: Hadoop HDFS YaRN CentOS linux

8月14日 17:55 投稿