現場データサイエンティスト奮闘記

とある企業で働くデータサイエンティストの日々のアウトプット

gcloudコマンドで操作するGKEのクラスタを切り替える方法

コマンド

出オチですが、これでできます。

gcloud container clusters get-credentials [CLUSTER_NAME]

状況

コマンドラインで複数のクラスタを切り替えながら操作したいときに上記コマンドでいけます。
kubectl で config いじるより簡単そうなのでこっちのほうがいいかなあと。

GKEのオートスケールの設定手順をまとめた

概要

GKEにはアクセス負荷に応じて適宜サーバを増やしたり減らしたりしてくれるオートスケール機能が備わっています。
クラスタ作成時のその設定方法をまとめました。

オートスケール設定方法

GKEのオートスケールの種類について

GKEにはオートスケールの種類が2種類存在します。

  • Horizontal Pod Autoscaling(水平Podオートスケール)
  • Cluster Autoscaler

前者がPodをスケールさせ、後者がクラスタをスケールさせる。スケール速度はPodであれば一瞬、クラスタノードは起動までに30秒前後かかる。また、k8sの再起動がはいる。

CPUリソースなどの使用状況をk8sが監視し(デフォルト30秒)、設定されたオートスケール閾値を超えたら新しくPodをたてたり、クラスタを増やしたりする。当然、負荷が下がったら自動で減る。
出典: GKE + k8s オートスケールの設定方法 - Qiita

どちらのほうが優れているというより、両方使うのが正解のようです。よって、両方の設定を行ってみます。

続きを読む

MeCab入りのPythonを実行するDockerfileの書き方

概要

自然言語処理を含んだアプリケーションをDocker imageで構築しようとしたらDockerfileの書き方を少し工夫しなきゃいけなかったので、そのメモです。

Dockerfileの書き方

プロジェクトは以下のような状況だとします。

project
├ src
│ ├ main.py
│ └ requirements.txt
└ Dockerfile

各ファイルの中身はこんな感じです。

main.py

# -*- coding: utf-8 -*-
import MeCab

def main():
  # 自然言語処理など

if __name__ == '__main__':
  main()

requirements.txt

mecab-python3

ここで普通に mecab-python3 を pip install するだけだと image のビルドでコケます。
そこで Dockerfile は以下のように書きます。

FROM python:3.6

RUN mkdir src
COPY src src/

RUN apt-get update \
  && apt-get install -y mecab \
  && apt-get install -y mecab-ipadic \
  && apt-get install -y libmecab-dev \
  && apt-get install -y mecab-ipadic-utf8 \
  && apt-get install -y swig

RUN pip install -r ./src/requirements.txt

WORKDIR ./src/
ENTRYPOINT ["python", "main.py"]

これで無事 MeCabPython で使える Docker image ができました。

肥大化したBigQueryの管理にデータレイク・データマートの考え方が使えるのではないか

はじめに

前提として、筆者は事業会社でいくつかのwebサービスを運営している会社にいます。
アクセスログなど日々山のようなデータが蓄積され、しかも複数のプロダクトを管理しているので、なかなかにデータの管理が煩雑になりがちという状況です。
この改善策としてデータレイクとデータマートの考え方が使えるのではないかという話です。

続きを読む

データに不慣れなコンテンツ編集チームを2ヶ月でデータドリブン組織にした6つの方法

概要

この記事について

明けましておめでとうございます。新年1本目です。2019年ものんびり更新していければと思います。

さて、会社ではデータサイエンティストをしているのですが、「データ見れるようになりたい!」と他部署の方から相談を受けまして、ちょっとコンサルっぽいことをしておりました。その時にやったことのノウハウを公開できればと記事にしました。

そのチームはwebメティアで記事制作と編集を行うチームだったのですが、「自らデータを用いて物事の意思決定を行えるようになり、記事の完読率を向上させるグロースハックをする」というのを目標にしています。
この「データを用いて物事の意思決定を行えるようになる」という部分を2018年11月〜12月の2ヶ月間お手伝いさせていただき実現しました。

実際、2ヶ月後には自分たちだけで施策の実験としてABテストを行い、改善の精度を判断して施策の実行の意思決定ができるようになりました。

チームが2ヶ月で身につけたこと

データドリブンな意思決定を行うために、チームは具体的に以下のスキルを身につけました。

続きを読む

GCPのCloud Functions + Cloud Scheduler + Cloud Source Repositoriesで任意のPythonを定期実行させる仕組みをつくる

データ分析でPythonを使っているのですが、データを加工して〜みたいな処理を毎日やるタスクが地味にあったりするので自動化したいです。
最近はGCPも触っているので、GCPのサービスだけでそれを実現できないかなと考えました。いわゆるサーバレスな構成になっています。
試しにこの記事ではSlackに時報を打ってくれるbotを作成してみました。

構成

  • Cloud Source Repositories: ソースコード置き場
  • Cloud Functions: 実行する関数の定義
  • Cloud Scheduler: 関数を定期的に実行するジョブの作成
続きを読む

データを見て意思決定する必要性とデータドリブンに進める方法論を非分析者向けに語る

本記事の概要

この記事は、社内で企画職向けに実施したデータ分析勉強会の資料をリライトしたものです。

対象読者

  • 非分析者である
  • 日頃からデータを元に仮説を立てて検証していくという習慣がない
  • データをどう見るべきか、意思決定の判断のポイントを知りたい

という人に向けた内容であり、いわゆるデータ分析初心者向けです。

続きを読む