はじめに
公式のPrestoインストール方法は1台ごとノードにデプロイしていました。この方法では1台ごとにプロセスの起動、停止、再起動、コンフィグの変更等を行う必要があるため管理が大変です。
今回はPresto-Adminを使用して公式ドキュメントに基づき、Prestoをインストールします。Presto-Adminを利用することで、複数ノードを集中管理することができます。
Prestoとは
並列分散クエリエンジンで、大規模なデータに対してインタラクティブなクエリ処理が得意です。
またconnectorを設定することで、RDBMSを跨いだクエリを実行できます。
例: PostgresSQLのマスターテーブルとHiveのテーブルをJoin
環境
OS, パッケージ
| OS, パッケージ | バージョン | 備考 |
|---|---|---|
| OS | CentOS 7.7 | |
| Presto-Admin(prestosql) | 2.10 | RHEL, CentOS6以上対応 |
| Presto(prestosql) | 333 | |
| Presto-cli(prestosql) | 333 |
ノード
| ホスト名 | 台数 | 用途 |
|---|---|---|
| prestoadmin | 1 | Presto-Admin |
| coordinator | 1 | coordinator |
| worker[01-03] | 3 | worker |
Presto-Adminのインストール
下記以降の作業はすべて、prestoadminのrootユーザ、またsshはパスワード認証です。
Presto-Adminをprestoadminにインストールします。
ダウンロードリンクはここ参照してください。
また、インストール場所を事前に指定する場合は、PRESTO_ADMIN_CONFIG_DIR, PRESTO_ADMIN_LOG_DIRを環境変数で指定してください。
cd /root
wget https://github.com/prestosql/presto-admin/releases/download/2.10/prestoadmin-2.10-offline-el7.tar.gz
tar xvf prestoadmin-2.10-offline-el7.tar.gz
cd prestoadmin
./install-prestoadmin.sh
インストール後に、/root/.prestoadmin, /root/.prestoadmin/logのディレクトリが作成されます。
Prestoクラスタの設定
Prestoクラスタの設定を/root/.prestoadmin/config.jsonに記述します。
{
"username": "root",
"port": "22",
"coordinator": "coordinator",
"workers": ["worker[01-03]"],
"java_home":"<path/to/java/on/presto/nodes>"
}
usernameはPresto-Adminがsshで使用するユーザ名です。もし、root以外のユーザを指定する場合はsudo権限が必要です。
java_homeは各ノードに環境変数JAVA_HOMEが設定済みの場合は不要です。
Javaのインストール
公式ドキュメントではJave 8をインストールしていますが、Presto: version 333はJava 11以上が必要なので、Java 11のインストールを行います。
wget https://cdn.azul.com/zulu/bin/zulu11.39.15-ca-jdk11.0.7-linux.x86_64.rpm
./presto-admin package install zulu11.39.15-ca-jdk11.0.7-linux.x86_64.rpm -p {ssh_password}
上記のコマンドで、coordinator, workerにrpmの配布、インストールまで実行します。
Prestoのインストール
Prestoのrpmをダウンロードしてcoordinator, workerにインストール、/root/.prestoadminの設定を配布します。
wget https://repo1.maven.org/maven2/io/prestosql/presto-server-rpm/333/presto-server-rpm-333.rpm
./presto-admin server install presto-server-rpm-333.rpm -p {ssh_password}
特にエラーなくインストールが完了したら、Prestoを起動します。
./presto-admin server start -p {ssh_password}
動作確認
正しく起動できているかpresto-cliを起動して確認します。
wget https://repo1.maven.org/maven2/io/prestosql/presto-cli/333/presto-cli-333-executable.jar
mv presto-cli-333-executable.jar presto
chmod +x presto
./presto --server coordinator:8080
presto> select * from system.runtime.nodes;
catalogの追加、コンフィグの修正
例えば、Hiveに接続する場合ここを参考に/root/.prestoadmin/catalog/hive.propertiesを作成します。
その後Presto-Adminを利用してcatalogの追加、Prestoの再起動を行います。
./presto-admin catalog add hive -p {ssh_password}
./presto-admin server restart -p {ssh_password}
また、コンフィグを編集した際は下記のコマンドで反映させます。
./presto-admin configuration deploy -p {ssh_password}
./presto-admin server restart -p {ssh_password}
最後に
Presto-Adminをインストールしたノードから、Prestoのcoordinator, workerにssh接続できれば簡単にPrestoをインストールすることができます。