MySQLのインストール
MySQLをインストールする前に、MariaDBとの競合を避けるため、既にインストールされているMariaDBをアンインストールする必要があります。
// MariaDBがインストールされているか確認
rpm -qa | grep mariadb
// MariaDBを強制的にアンインストール
rpm -e --nodeps mariadb-libs
次に、MySQLのRPMパッケージをインストールします。まず、配布ファイルを展開します。
// MySQLのRPMバンドルを展開
tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
展開後、依存関係を順番にインストールします。一部のパッケージは、依存関係を無視して強制的にインストールする必要があります。
// MySQLの依存パッケージを順番にインストール
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm --nodeps --force
インストールが完了したら、MySQLを初期化します。このプロセス中に、rootユーザーの初期パスワードがログファイルに生成されます。
// MySQLを初期化
mysqld --initialize --user=mysql
初期化が完了したら、MySQLサービスを起動し、ステータスを確認します。
// MySQLサービスを起動
systemctl start mysqld
// サービスのステータスを確認
systemctl status mysqld
サービスが正常に起動したら、MySQLにログインし、セキュリティ設定を構成します。まず、ログファイルから初期パスワードを取得し、ログインします。
// MySQLにログイン
mysql -uroot -p
ログイン後、rootユーザーのパスワードを設定し、リモートアクセスを許可します。
-- rootユーザーのパスワードを設定
ALTER USER 'root'@'localhost' IDENTIFIED BY 'secure_password_123';
-- すべてのホストからの接続を許可
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'secure_password_123' WITH GRANT OPTION;
-- 設定を反映
FLUSH PRIVILEGES;
Hiveのインストール
次に、Hiveをインストールします。まず、Hiveのアーカイブファイルを展開し、ディレクトリ名を短くします。
// Hiveのインストールパッケージを展開
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/softs/
// ディレクトリ名を変更
mv apache-hive-3.1.2-bin/ hive3.1.2/
Hiveのライブラリディレクトリ内には、Hadoopのバージョンと競合する可能性のあるJARファイルが含まれているため、これらを無効化する必要があります。
// 競合するJARファイルをリネームして無効化
cd /opt/softs/hive3.1.2/lib/
mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak
mv guava-19.0.jar guava-19.0.jar.bak
Hiveの環境変数をシステムに設定します。
// /etc/profileを編集
vim /etc/profile
// HIVE_HOMEの設定を追加
export HIVE_HOME=/opt/softs/hive3.1.2
export PATH=$PATH:$HIVE_HOME/bin
// 設定を反映
source /etc/profile
HadoopのGuava JARはHiveのものより新しいバージョンであるため、Hiveのライブラリディレクトリにコピーして置き換えます。
// HadoopのGuava JARをHiveのライブラリにコピー
cp /opt/softs/hadoop3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar /opt/softs/hive3.1.2/lib/
次に、HiveがMySQLデータベースを使用できるように、MySQLのJDBCドライバをHiveのライブラリディレクトリに追加します。
// JDBCドライバをHiveのlibディレクトリにコピー
cp mysql-connector-java-5.1.47.jar /opt/softs/hive3.1.2/lib/
Hiveの設定ファイルである`hive-site.xml`を作成し、以下の内容を追加します。データベース接続情報やHiveの動作ディレクトリなど、環境に合わせて値を調整してください。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hive-server:3306/hive_db?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>secure_password_123</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hive-server</value>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
<property>
<name>hive.server2.active.passive.ha.enable</name>
<value>true</value>
</property>
</configuration>
この`hive-site.xml`ファイルをHiveの設定ディレクトリに配置します。
// 設定ファイルをHiveのconfディレクトリに移動
mv hive-site.xml /opt/softs/hive3.1.2/conf/
HiveはHadoopのプロキシユーザー機能を利用するため、Hadoopの`core-site.xml`を編集してrootユーザーが他のユーザーを偽装できるように設定します。
// Hadoopのcore-site.xmlを編集
vim /opt/softs/hadoop3.1.3/etc/hadoop/core-site.xml
// 以下の設定を追加
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
変更した`core-site.xml`をクラスター内の他のノードに同期します。
// 設定ファイルを他のノードにコピー
scp core-site.xml node2:/opt/softs/hadoop3.1.3/etc/hadoop/
scp core-site.xml node3:/opt/softs/hadoop3.1.3/etc/hadoop/
Hadoopクラスターを起動した後、Hiveのメタストアスキーマを初期化します。
// Hiveのスキーマを初期化
schematool -dbType mysql -initSchema
これで、Hiveが正常に設定され、使用できるようになりました。