Redashでデータ取得を効率化した話 〜 導入編
見出し画像

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

Redashインストールマシンのdocker外にあるMySQLへ接続する場合、
 ホストマシンのIPアドレスが特殊なので注意
 (参考にさせていただいた記事

◆Redashでクエリを作成する

画像2

◆メモリ不足への対策

メモリ不足が顕著だったため、こちらの記事を参考にさせていただき
以下を対応しました。

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_)が綴らせて頂きました。

スキを頂きありがとうございます!是非SNSでシェア頂けますと幸いです!
ソーシャルゲームアプリ開発・運営を行う株式会社ダンクハーツのメンバーが、自身が持つ技術/スキル/知識を発信していきます📝 ダンクハーツに集う“原動力たち”を知って頂ける機会となれば幸いです✨ https://www.dank-hearts.co.jp/recruit/