![見出し画像](https://assets.st-note.com/production/uploads/images/62652629/rectangle_large_type_2_d4718eedf0d209fa3b365443ddd0477c.png?width=1200)
Redashでデータ取得を効率化した話 〜 導入編
こんにちは。エンジニアのふるやです🙃
今回は Redashでデータ取得を効率化した話 〜 導入編 について、
綴らせていただきます。
Redashでデータ取得を効率化した話 〜 実用編
はこちらをご覧ください。
◆インストール手順
上記、公式ドキュメントを参考に
Docker, Docker Compose, Node.js をインストールしましたが、
一部うまくインストールできなかったため、
手順に少し追記しました(下記)
※環境によってはこちらでも動作しない可能性があります
◆インストール手順:Docker
# インストールする
$ curl -fsSL https://get.docker.com/ | sh
# バージョンを確認する
$ docker --version
# 自動起動設定を入れる
$ systemctl enable docker
# 起動する
$ systemctl start docker
◆インストール手順:Docker Compose
$ curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose
$ chmod +x /usr/bin/docker-compose
$ docker-compose --version
◆インストール手順:Node.js
安定版をインストールする
$ curl -sL https://rpm.nodesource.com/setup_14.x | bash -
$ yum install nodejs -y
◆インストール手順:Redash
git clone する
$ git clone https://github.com/getredash/redash.git
最新の安定版をチェックアウトする
$ cd redash/
$ git checkout refs/tags/v8.0.0
docker-compose.yml の最下部に以下を追加する
$ vim docker-compose.yml
+ environment:
+ POSTGRES_HOST_AUTH_METHOD: trust
dockerを起動する
$ docker-compose up -d
※以下のような表示があるがおいておく
Browserslist: caniuse-lite is outdated. Please run next command `npm update caniuse-lite browserslist`
DBを作成する
$ docker-compose run --rm server create_db
$ docker-compose run --rm postgres psql -h postgres -U postgres -c "create database tests"
package.json の husky を削除する(後続の npm install で失敗するため)
$ vim package.json
- "husky": "^1.3.1",
$ npm install
$ npm run build
$ npm run start
◆設定:ファイアウォール、ポートフォワード
使用しているクラウドサービスのコンソール画面等で設定します。
これにより、以下のようなURLでアクセスが可能になります。
http://{ホストorIPアドレス}:5000
◆設定:Redash用 mysqlユーザー
RedashでDBを更新できないように(SELECT権限のみを与えたいため)
専用のmysqlユーザーを作成します。
SELECT Host, User FROM mysql.user;
SET SQL_LOG_BIN=0;
GRANT SELECT ON *.* TO 'redash_user'@'%' IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
SET SQL_LOG_BIN=1;
SELECT Host, User FROM mysql.user;
◆設定:Redashのデータソースを指定する
![画像1](https://assets.st-note.com/production/uploads/images/61599885/picture_pc_ccf0e95f2754b736dde800f368bddf75.png?width=1200)
※Redashインストールマシンのdocker外にあるMySQLへ接続する場合、
ホストマシンのIPアドレスが特殊なので注意
(参考にさせていただいた記事)
◆Redashでクエリを作成する
![画像2](https://assets.st-note.com/production/uploads/images/61602497/picture_pc_73e3b958ee4a721182192205e1ccdf9a.png?width=1200)
◆メモリ不足への対策
メモリ不足が顕著だったため、こちらの記事を参考にさせていただき
以下を対応しました。
docker-compose.yml の WORKERS_COUNT を 1 に修正
WORKERS_COUNT: 1
設定可能なデータソースを削減する ※以下に変更
vim redash/settings/__init__.py
default_query_runners = [
'redash.query_runner.big_query',
'redash.query_runner.google_spreadsheets',
'redash.query_runner.mysql'
]
その他サービスをチューニングする
・httpd : mpm_prefork_module を使用する
・mysqld : innodb_buffer_pool_size 等の値を調整する
swapを追加する ※以下、コマンド例
# swapの使用状況を確認する
$ free -m
# swapの容量を確保する
$ dd if=/dev/zero of=/data/swapfile bs=1M count=2048
# パーミッションを変更する
$ chmod 600 /data/swapfile
# swapを作成する (ファイルシステムをswapにする)
$ mkswap /data/swapfile
---
スワップ空間バージョン1を設定します、サイズ = 2097148 KiB
ラベルはありません, UUID=05839*******************
---
# swapを有効化する
$ swapon /data/swapfile
# swapの使用状況を確認する
$ free -m
# swapを永続化する
$ vim /etc/fstab
---
UUID=05839******************* /data/swapfile swap defaults 0 0
---
完了です!お疲れ様でした!😊
以上、エンジニアのふるや(@h_furuya_)が綴らせていただきました。