前提環境の構築
サーバーの基本設定
Hadoopクラスターは3台構成で構築する。各ノードのホスト名は以下のように定義する。
- node-master (マスターノード)
- node-worker1 (ワーカーノード1)
- node-worker2 (ワーカーノード2)
まず、マスターノードとなるサーバー側で基本設定を行う。
1. ホスト名の変更
以下のコマンドを実行し、ホスト名を変更する。
vim /etc/hostname
# 内容を node-master に変更2. IPアドレスの固定
ネットワークインターフェースの設定ファイルを編集する。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# IPADDRをご自身のネットワーク環境に合わせて設定設定後、ネットワークサービスを再起動する。
systemctl restart network3. ファイアウォールの無効化
systemctl stop firewalld
systemctl disable firewalld4. 名前解決の設定
各ノードのIPアドレスとホスト名のマッピングを /etc/hosts に追記する。
vim /etc/hosts
# 例:
# 192.168.10.100 node-master
# 192.168.10.101 node-worker1
# 192.168.10.102 node-worker25. 時刻同期
NTPクライアントをインストールし、時刻を同期する。
yum install ntpdate
ntpdate ntp.nict.jpJDKのインストール
任意のディレクトリにJDKのアーカイブを配置し、展開する。
mkdir -p /opt/java
tar -zxvf jdk-8u311-linux-x64.tar.gz -C /opt/java/環境変数を設定するため、/etc/profile の末尾に以下を追記する。
export JAVA_HOME=/opt/java/jdk1.8.0_311
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH設定を反映し、バージョン確認を行う。
source /etc/profile
java -versionMySQLのインストール
CentOS 7デフォルトのMariaDBを削除する。
rpm -qa | grep mariadb
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodepsMySQL 5.7のRPMバンドルを展開し、依存関係を解決したうえでインストールする。
mkdir -p /opt/modules/mysql
tar xvf mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar -C /opt/modules/mysql/
# 依存パッケージのインストール
yum install libaio perl net-tools
# RPMの順次インストール
rpm -ivh mysql-community-common-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.35-1.el7.x86_64.rpmデータベースの初期化と起動を行う。
mysqld --initialize
chown mysql:mysql /var/lib/mysql -R
systemctl start mysqld初期パスワードを確認し、セキュリティ設定を行う。
cat /var/log/mysqld.log | grep password
mysql -u root -p
# SQL内でパスワード変更とリモートアクセス許可
ALTER USER 'root'@'localhost' IDENTIFIED BY 'RootPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'RootPass123!' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit自動起動を有効化する。
systemctl enable mysqld仮想マシンの複製とSSH設定
ノードの複製
構成済みのマスターノードをシャットダウンし、仮想マシンのクローン機能を利用して2台のワーカーノードを作成する。クローン後、各ワーカーノードでホスト名とIPアドレスを一意の値に変更し、ネットワークを再起動する。
SSH鍵認証の設定
全ノードでRSA鍵ペアを作成する。
ssh-keygen -t rsa各ノードから他の全ノードへ公開鍵を配布する。
# node-masterでの実行例
ssh-copy-id node-worker1
ssh-copy-id node-worker2
# 同様にワーカーノードからも他ノードへ配布パスワードなしでログインできるか確認する。
ssh node-worker1Hadoopクラスターの構築
Hadoopのインストール
Hadoop用ユーザーを作成し、切り替える。
adduser bigdata
passwd bigdata
su - bigdataHadoopアーカイブを展開する。
mkdir -p /opt/hadoop
tar -zxvf hadoop-3.3.6.tar.gz -C /opt/hadoop/設定ファイルの編集
/opt/hadoop/hadoop-3.3.6/etc/hadoop/ 配下のファイルを編集する。
1. hadoop-env.sh
JAVA_HOMEと実行ユーザーを指定する。
export JAVA_HOME=/opt/java/jdk1.8.0_311
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root2. core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node-master:9820</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>3. hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/datanode</value>
</property>
</configuration>4. mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node-master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node-master:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
</configuration>5. yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node-master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>6. workers
node-master
node-worker1
node-worker27. 環境変数と設定の配布
/etc/profile にHadoopのパスを追記する。
export HADOOP_HOME=/opt/hadoop/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin設定ファイルをワーカーノードへ同期する。
scp -r /opt/hadoop/hadoop-3.3.6/etc/hadoop/ root@node-worker1:/opt/hadoop/hadoop-3.3.6/etc/
scp -r /opt/hadoop/hadoop-3.3.6/etc/hadoop/ root@node-worker2:/opt/hadoop/hadoop-3.3.6/etc/Hadoopクラスターの起動と検証
ネームノードのフォーマット
初回起動時にのみ実行する。
hdfs namenode -formatサービスの起動
start-dfs.sh
start-yarn.sh起動確認
各ノードで jps コマンドを実行し、必要なプロセスが起動していることを確認する。
ブラウザから http://<node-masterのIP>:8088 にアクセスし、YARNの管理画面を表示する。
サービスの停止
stop-yarn.sh
stop-dfs.shHiveのインストール
セットアップ
Hiveのアーカイブを展開する。
mkdir -p /opt/hive
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/hive/設定ファイルの編集
1. hive-env.sh
cd /opt/hive/apache-hive-3.1.3-bin/conf/
cp hive-env.sh.template hive-env.sh
vim hive-env.sh以下の変数を定義する。
export HADOOP_HOME=/opt/hadoop/hadoop-3.3.6
export HIVE_CONF_DIR=/opt/hive/apache-hive-3.1.3-bin/conf
export HIVE_AUX_JARS_PATH=/opt/hive/apache-hive-3.1.3-bin/lib2. hive-site.xml
MySQLをメタストアとして使用する設定を行う。
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node-master:3306/hive_db?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>RootPass123!</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node-master</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://node-master:9083</value>
</property>
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>MySQLのJDBCドライバをダウンロードし、/opt/hive/apache-hive-3.1.3-bin/lib/ に配置する。
~/.bashrc に環境変数を追記し、反映する。
export HIVE_HOME=/opt/hive/apache-hive-3.1.3-bin
export PATH=$PATH:$HIVE_HOME/bin
source ~/.bashrcメタストアの初期化と起動
schematool -dbType mysql -initSchemaMetastoreサービスを起動する。
hive --service metastore別セッションを開き、HiveServer2をバックグラウンドで起動する。
hive --service hiveserver2 &Beelineによる接続確認
beeline -u jdbc:hive2://node-master:10000DBeaverによるHiveへの接続
DBeaverを起動し、新しい接続としてApache Hiveを選択する。ホストにはマスターノードのIPアドレス、ポートには10000を設定し、認証情報を入力後、接続テストを実行する。