DataPipelineでTaskRunnerを利用したい場合の忘備録
はじめに
AWSのDataPipelineでTaskRunnerを利用したい場合に必要なセットアップについて自分用メモ。
TaskRunnerを実行するインスタンスはOSがubuntuだったので今回はubuntuで設定した内容です。
ubuntu環境へのTaskRunnerの設定
- Javaのインストール
sudo apt install default-jre
- インストールされたjavaのバージョン確認(open jdk が1.6以降か確認)
java -version
- taskrunnerをダウンロードする
wget https://s3.amazonaws.com/datapipeline-us-east-1/us-east-1/software/latest/TaskRunner/TaskRunner-1.0.jar
- mysql-connerctor-java-bin.jarをダウンロードする
wget https://s3.amazonaws.com/datapipeline-prod-us-east-1/software/latest/TaskRunner/mysql-connector-java-bin.jar
- taskrunnerを実行するインスタンスに対してIAMロールを付与する
- IAMロールに着けるポリシーは下記のAWSが用意しているものを付与
AmazonEC2RoleforDataPipelineRole
- 他に必要なものは適宜付与
- IAMロールに着けるポリシーは下記のAWSが用意しているものを付与
- datapipeline側の設定変更
- Activityの設定で、runsOnの設定ではなくworkerGroupを設定する。runsOnの設定がある場合、workerGroupの設定があっても無視される
- workerGroupの値はstringであれば rds-to-s3やwg-123dafasfdの形式で問題ない
- DataNodeの設定でも同様にworkerGroupを設定する
- 設定完了後はアクティベートせずに先に下記を実施する
- taskrunnerを起動する
java -jar TaskRunner-1.0.jar --workerGroup=先に指定したworkerGroup名 --region=実行するタスクをプルする対象のサービスリージョン(基本的に日本だと思うのでap-northeast-1) --logUri=s3://taskrunnerの実行ログを置くpath &
- 行末につけた
&
はあってもなくても大丈夫。ただバックグラウンドで起動しておきたかったのでつけただけ
- taskrunnerを起動する
- 最後にdatapipelineをアクティベートして動作していることを確認した
注意点
今回はホームディレクトリに直接両方ともダウンロードして試したが問題なく実行できた。 ただし公式のドキュメントの環境設定手順をみるとディレクトリを作成して、ファイルをダウンロードする必要があるらしい。
バックグラウンドでTaskRunnerを起動しておいて、1時間に1回実行するDataPipelineの検証していると3回目の実行時点でTaskRunnerのプロセスがいなくなっていたので、ここら辺はプロセスのデーモン化やプロセスの監視など何かしら対策が必要そう。
おわりに
基本的はこちらの公式ドキュメントを参考に実施しました。
ただし必要なファイルのダウンロード元のリンクについては変更されていた模様。
公式ドキュメントのリンク先飛んでもリダイレクトされて目的のページにたどり着けなかった。。。 DataPipelineを使うケースは今後ほとんどないかもですが、念のための忘備録でした。
インフラチームでペア作業始めてみて1週間たったのでふりかえりをした
はじめに
前回のあらすじは下記リンクの通り
始めて1週間たったのでふりかえりをしてみました。 今回は私とペアだった人と2人での振り返りでした。 チーム全体での振り返りは月一回のふりかえり会で実施予定です。
ふりかえり
今回はとくにふりかえり手法などを取らずに、良かったこと、悪かったこと、改善したいことをお互いに話し合っていきました。 その中でいくつかピックアップして下記にまとめました。
良かったこと
- タスクに必要な技術の知識で足りないところを補えた
- ペアで作業をするコミュニケーションについて負担はとくになかった
悪かったこと
- 図を描いたりして視覚的に共有できるツールが最初はなかった
改善したいこと
- 長い時間で作業する場合は適度に休憩をとる
- 1時間に1回10分のペースで休憩をとる
感想
振り返りからの個人的な感想ですが、ペア作業でコミュニケーションを取りながら進めることが負担だと思う人もいるので不安でした。しかし今回ペアを組んだメンバーにはそれがなかった点が一番ホッとしました。 また図を描くなどの視覚的に共有することについては現在、ノートとペンで解消しましたが、今後はnuboardを導入してみるのもありかなと思っています。
また現在は知識量に差があるので、ドライバーは生徒、ナビは教師のような役割で作業になってしまっているので、今後進むにつれてこれもタイムボックスなどで交代するようにしてみるなど試したいと思います。
おわりに
まだまだ始めて1週間ですが、ふりかえり含めて無事に進めているので週次での振り返りや月次でのチーム全体での振り返りなどを参考にしながらどんどん改善して進めていければと考えています。
インフラチームでペア作業を始めてみた
はじめに
現在Joy,Incという書籍の読書会を社内で開催しています。 読書会の内容については下記記事にまとまっています。 takubon.hatenablog.com
この書籍の中でプログラム以外もペアで作業して進めているということの紹介があり、読書会でディスカッションをしている中でインフラチームで試してみるとよいのではないかとなりました。
課題
業務内容によってはペアで作業を行うこともありましたが、普段はメンバー各々がタスクを取ってやるという進め方です。 進め方としては特に問題はなかったのですが、各メンバーの得意なことや知識領域についてばらつきがあり、それを補うためにもチーム内での知見の共有も月一で行っていました。 しかしどちらかというと話を聴くだけの会になってしまっています。
そこでJoy,Incの中であるようにより学習のスピードをあげて、手を動かしながらお互いの知見を共有しあいながら、タスクを進めることができれば個人の成長もそうですが、もっとチームとして成果を出せるようになるのではと考えてチームに提案してみました。
進め方
現在はまだ始めたばかりなので、今後さらに改善が必要だと考えていますが、現在は以下のように進めています。
- ペアは固定せず、タスク毎
- タスクは1週間単位で計画して進める
- まず担当するタスクを決める
- お互いに1週間でタスクに出せる時間を決める
- 出せる時間が少ない方に合わせる
- それぞれタスクを細分化して、どれくらい時間が必要か見積もる
- 見積もった時間から1週間にタスクに出せる時間分を取る
- スケジュールにタスクを登録して実際にペアで作業を進める
- 1週間終了後の振り返り(現在はまだはじめて1週間たっていないので予定)
始めてみて
まだまだ始めて1週間もたっていませんが、感覚としては良さそうな空気感なので継続してできるのではと感じています。 個人的にはペアプロで学びながらタスクを進めていくことも体験しているので、この方法で続けていければと考えています。 もちろんまだすべてのタスクをペアでやっているわけではありません。進めていくなかでタスクの種類によって向き不向きがあるのかなとも思っています。
おわりに
今回は始めてみたということで記録に残しておこうと思い書いています。 今後、途中でやめたになるか、継続しているかここで報告できればと思います。
新装版 達人プログラマーとアジャイルプラクティスを読んだ
はじめに
約10か月ぶりの更新です。ラズパイのやってみたネタも更新する時間を見つけて書きたいのですが(下書きには保存してある)今回は最近読んだ本、読んでいる本についてです。
新装版 達人プログラマー
まずは新装版が出た「達人プログラマー」、技術書の歩き方勉強会でも取り上げられていました。
今まで読んだことがなかったのですが、新装版が出たということで購入しました。 内容については色々なブログに書かれていると思うので割愛しますが、普段コードをあまり書かない私でも仕事の中で実践することで改善できそうな事があってとても勉強になりました。
また上記勉強会にも参加して、学びを深めました。
アジャイルプラクティス
上述の技術書の歩き方勉強会での帰り際にいただいたので早速読みました。
開発プロセスへのXPやスクラムなどの導入というよりはスタンドアップミーティング等の具体的なプラクティスの導入について勉強になる一冊でした。 達人プログラマーと合わせて読むことで内容の理解が深まります。
またアジャイルプラクティスではそのプラクティスを導入したときにどのような気持ちになれるかや、導入したときに気をつけなければいけない点などが各プラクティスの最後に記載されています。
実際にプラクティスを導入した場合はその部分を参考にすることができます。
プロダクティブ・プログラマ
アジャイルプラクティスの次に何を読むか探していたところでこの一冊を見つけました。
監訳されたのが技術書の歩き方勉強会「達人プログラマー」編を開催された島田 浩二さんです。 監訳者あとがきでアジャイルプラクティスをおすすめ書籍として挙げられていたのもあり購入しました。
この本はまだあまり読めていないのですが効率的に開発を進めるための具体的な手法が各テーマ毎に記載されており、より手を動かす作業の効率化に特化した一冊になっている印象を受けました。
おわりに
最近読んだ、もしくは読んでいる本についてまとめました。 今年もそれなりに本は読んでいましたがあまり感想などは書けなかったので月末などに改めて今年読んだ本の感想など書きます。 ただその前に下書きのラズパイ記事を公開できるようにします。
Raspberry Pi B+ に Golang 1.6 をインストールしてみた
はじめに
Go 1.6 がリリースされたのでさっそくラズパイにインストールしてみました。 マシン:Raspberry Pi B+ OS:raspbian-jessie-lite
インストール方法
1.6ではarmv6l用に既にビルド済みのものが用意されているのでとても簡単にできます。
Downloads - The Go Programming Language
まずはwget
でファイルをダウンロードしてきます。
wget https://storage.googleapis.com/golang/go1.6.linux-armv6l.tar.gz
次に公式の手順にある通り/usr/local
配下に展開します。
#展開するときのコマンド sudo tar -C /usr/local -xzf go1.6.linux-armv6l.tar.gz
最後に/usr/local/go/bin
へパスを通せばインストール完了です。
export PATH="/usr/local/go/bin:$PATH"
動作確認
パスまで通した後に早速バージョンを確認しました。
> go version go version go1.6 linux/arm
またgobot
のraspi_blink.go
というサンプルのブログラムも問題なく動作しました。
おわりに
1.5まではソースからインストールすることしかできなかったので時間がかかっていましたが、1.6ではとても簡単にインストールすることができました。
時間があれば今度はソースからインストールする方法を試してみようかと思います。
raspbian で capslock を無効化設定した
はじめに
掲題ままの備忘メモです。 raspbian-jessieで設定しましたがおそらくそれ以外でも同様にできるはず。
今回の参考サイトはこちらです。
caps lock -> control と caps lock <-> control
この設定は/etc/default/keyboard
にあるXKBOPTIONS
の項目を編集しました。
sudo vi /etc/default/keyboard
- caps lock を無効化してcontrolにする場合
XKBOPTIONS="ctrl:nocaps"
- caps lcok とcontrolを入れ替える場合
XKBOPTIONS="ctrl:swapcaps"
- caps lock を無効化してcontrolにする場合
また既にXKBOPTIONS
に何かしらの設定が入っている場合は以下のように,
で区切って書き足します。
例:XKBOPTIONS="hogehoge, ctrl:nocaps"
設定を入れた後は以下のコマンドで反映しました。
sudo dpkg-reconfigure -phigh console-setup
これで問題なくcaps lock を無効化してcontrolにすることができました。
raspberry Pi B+ 用に raspbian-jessie-lite をインストールした
はじめに
これまではOSインストール済みのSDカードを本体とセットで購入していたのでそれを利用していました。 ただ容量が少ないこともあり32GのSDを買って自分で1からインストールしてみたのでその時の作業メモ。 さらにパーティションの拡張も行ったのでその時の作業メモ。
また今回は以下のサイトを参考にインストールを実施しました。
Installing Operating System Images on Mac OS - Raspberry Pi Documentation
Raspberry Piでパーティションを拡張する – UbuntuによるEco Linuxサーバ構築記
事前準備
新しくOSをインストールするためにイメージファイルを以下からダウンロードしました。
また今回インストールに利用したSDカードはこちらです。
インストール作業
今回はmacでコマンドラインとディスクユーティリティを利用してインストール作業を行いました。
インストール作業は下記手順で行いました。
SDカードの初期化
SDカードの初期化は標準であるディスクユーティリティを使用して行いました。
フォーマットがFATになっていることを確認して実施。これは数秒で完了しました。
コマンドラインからSDカードのアンマウントを実施
次にコマンドラインに移り df
コマンドを実行します。
実行すると以下のようにマウントされていることを確認できました。
> df Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on 中略 /dev/disk1s1 61908160 5056 61903104 1% 0 0 100% /Volumes/UNTITLED
/dev/disk1s1
がマウントされているSDカード(のパーティション)のことを指しているので sudo diskutil unmount /dev/disk1s1
でアンマウントします。
当たり前ですが環境によってはdisk2やdisk3などになっていることもあるので確認してからアンマウントしましょう。
sudo diskutil unmount /dev/disk1s1
実行後再度 df
コマンドを実行すると /dev/disk1s1
の項目がなくなっていればアンマウントは完了です。
コマンドラインから dd
コマンドを利用してSDカードへの書き込み
次に dd
コマンドで .img
ファイルからSDカードへの書き込みを行います。
今回はdisk1がSDカードなので実行するコマンドは以下のようになります。
sudo dd bs=1m if=2016-02-09-raspbian-jessie-lite.img of=/dev/rdisk1
ここで/dev/rdisk1
は/dev/disk1
と対象は同じですが書き込み速度に差がでます。
/dev/disk1
とした場合は2312秒ほどかかり、/dev/rdisk1
とした場合は80秒ほどで書き込みが完了しました。
書き込み完了後はディスクユーティリティからSDカードの取り出しを実行するか以下のコマンドでeject
します。
sudo diskutil eject /dev/rdisk1
取り出し実行後はSDカードを取り外し、ラズパイに接続して起動確認します。 問題なくインストール出来ていれば起動するので以上でインストールは完了です。
パーティションの拡張
さてインストール後容量を確認すると30Gほどあるはずが1Gほどしか使用できる状態にありませんでした。
そこでfdisk
とresize2fs
コマンドを使ってパーティションの拡張を実施しました。
fdiskでのパーティション再構築とresize2fsでの適応
上記方法でインストールを実施後まずsudo fdisk -l
で現状を確認すると/dev/mmcblk0p1
と/dev/mmcblk0p2
の二つのパーティションが確認できます。
今回は/dev/mmcblk0s2
のパーティションを一度削除して拡張を行いました。
詳細は参考に上げたサイトを一読してもらえればと思います。
パーティション再構築完了後w
で変更内容を保存してfdisk
を終了するときに警告が出るかもしれません。
しかしreboot
すれば問題なく拡張されていることが確認できると思います。
その後はresize2fs
を実行することで/dev/mmcblk0s2
を利用している/
領域が30Gほどになります。
おわりに
調べたりしながらのインストール作業だったので3時間ほどかかってしまいました。
特に/dev/rdisk
を知る前に/dev/disk
で実施していた時は待ち時間が長った。
これで今後raspbianのインストールが必要になっても問題なくできる。