タグ

ブックマーク / wyukawa.hatenablog.com (7)

  • バッチ処理の実装方法 - wyukawa's diary

    僕はHive, Pythonでバッチ処理を書いてAzkabanでジョブ管理するシステムを構築、運用してかれこれ2年経つのでその経験をもとにバッチ処理の実装方法を書いてみようかと思う。 バッチ処理、ジョブ管理について書いてみる - wyukawa’s blogでは主にジョブ管理について書いたので今回はバッチそのもののに焦点をあてる。 ジョブ管理のときはつらつら書いて読みにくかったように思うので今回は箇条書きする。 バッチ処理は以下のように実装すると良いと思ってる。なおここではHadoopのようなIOメインな処理を前提としている。 ・LL言語で実装する コンパイルがいらないからね。もしJavaで実装したらコンパイル、パッケージングしてデプロイしないといけない。バッチなんてどうせデータ処理がメインだからローカルでは実装しづらいことが多いし、どうせサーバー上で直接作業するでしょ。障害時は特にね。

    バッチ処理の実装方法 - wyukawa's diary
  • バッチ処理、ジョブ管理について書いてみる - wyukawa's diary

    僕はHive, Pythonでバッチ処理を書いてAzkabanでジョブ管理するシステムを構築、運用した経験が2年ほどあるので今日はバッチ処理、ジョブ管理について書いてみようと思います。 僕の経験上Hadoop特有の部分、例えばテスト環境が作りづらいとかバッチサーバーはジョブをsubmitするだけなので負荷はそんなにかからないとか、はあるけれど割と汎用的なのではないかと思います。そもそもバッチ処理、ジョブ管理について書かれたものはほとんど見た事がないので参考になれば嬉しいし、こういう良い方法もあるよ!とかあれば是非ブログ等に書いてほしいと思っております。 最初に言っておくとバッチ処理、ジョブ管理において重要なのは障害時のリカバリのしやすさです。正常時はまあいいでしょ。 なので例えば引数に日付を持てないようなバッチ書いたら辛いですし、LL言語で書く方がコンパイル、パッケージングとか楽です。CP

    バッチ処理、ジョブ管理について書いてみる - wyukawa's diary
  • OSSプロダクトとのつきあい方 - wyukawa's diary

    僕は様々なOSSプロダクトを使ってシステムを構築しているけれど、自分なりにぼんやりと考えているOSSプロダクトとのつきあい方について書いてみる。 どのようなシステムを作るにせよ、それが一定以上の規模になるのであればOSSプロダクトを使わずに全部自前で実装するのはもはや現実的ではないです。例えばDBが必要だからってDB実装しますか? ただこれがHTTPクライアントライブラリぐらいになるとちょっと微妙になってきて既存のライブラリが使いにくいから自作するってケースはもしかしたらあるかもしれないです。僕はそんなスキルないので自作しないですけどね。ただ既存ライブラリをラップして使いやすいAPIを提供するとかならあるかも。 商用製品だったり内製プロダクトだとぐぐれないし、ドキュメントとかソースが無くて情報共有しづらいことが多いし、またそれを使って学んで他に役立つか微妙なのでエンジニアのモチベーションも

    OSSプロダクトとのつきあい方 - wyukawa's diary
    waniji
    waniji 2015/05/06
  • AzkabanのCLIツールeboshiを書きました - wyukawa's diary

    https://github.com/wyukawa/eboshi インストール方法と使い方はREADMEを見てください。 名前はサザンのチャコの海岸物語の「烏帽子岩が見え〜てきた、俺の家も近い」から取りました。特に意味は無いです。 最初はAzkabanCliとかそんな感じの名前にしようかと思ったけど、そこまでメジャー感を出すのはどうかと思って変えました。 pythonで実装したツールです。コマンドラインフレームワークであるcliffとHTTPクライアントライブラリであるrequestsを使ってます。 pypiデビューです。gemと同じぐらいの労力でmavenに比べるとだいぶ簡単です。mavenはやったことないけどw すでに既存ツールとして https://github.com/mtth/azkaban があるのですが、イマイチ使い方がぱっとわからなかったので結局自作しました。 今のところ

    AzkabanのCLIツールeboshiを書きました - wyukawa's diary
  • rebuildfm 35のAPIの話が面白かった - wyukawa's diary

    Rebuild: 35: You Don't Need API Version 2 (Kenn Ejima)の最後の方のAPIの話が面白かったのでそれについて書いてみる。 HTTP JSON APIにしろHiveServerが提供しているようなThrift APIにしろバックエンドにあるAPIサーバーにクライアントがアクセスして情報を取得してそれをもとに画面表示するっていうパターンは多いと思います。ここでいうクライアントってのは別にPCブラウザに限らなくてiPhoneAndroidのようなスマートフォンだったりタブレットだったりいろんなケースがありえます。 iPhoneアプリでトップページを表示するのにAPIを10回叩く必要があるとかだと、レイテンシの問題もあるし開発の手間も増えますよね。そうじゃなくてiPhone専用のAPIみたいなのがあればそれ1回呼べば済むのでレイテンシの問題もなく

    rebuildfm 35のAPIの話が面白かった - wyukawa's diary
  • Hiveでのプレースホルダ置換 - wyukawa's diary

    Hiveのテーブルで日付毎にパーティションを作るってよくやりますよね。 でもってこんな感じのクエリなげたりしますよね。 select count(distinct user_id) from daily_log where yyyymmdd='20131201' で、もし1ヶ月分の日ごとのUUが欲しいとか言われたら select count(distinct user_id) from daily_log where yyyymmdd='<<YYYYMMDD>>' という感じのテンプレートuu.templateを用意して、 下記のようなシェルを実行しますよね。てか僕はしてました。要はsedで置換してファイルつくってそれを実行みたいな感じです。 seq -f 2013%g 1201 1231 | while read yyyymmdd do echo ${yyyymmdd} sed -e "

    Hiveでのプレースホルダ置換 - wyukawa's diary
    waniji
    waniji 2014/01/15
    知らなかった。便利。
  • grepコマンドの-Aオプションと-Bオプションと、時々、-Cオプション - wyukawa's diary

    最近知ったgrepコマンドの-Aオプションと-Bオプションと、時々、-Cオプションについてメモっておく。 例えば設定ファイルを見てHDFSのブロックサイズを知りたいとします。 hdfs-site.xmlをdfs.block.sizeでgrepすると下記のようになります。 $ grep dfs.block.size hdfs-site.xml <name>dfs.block.size</name>や、知りたいのはその1行後なんだけど、、、って時は、-Aオプションを使います。うむデフォルトの64MBですね。 $ grep -A 1 dfs.block.size hdfs-site.xml <name>dfs.block.size</name> <value>67108864</value>検索対象の後の行を知りたい場合はafterということで-A、前の行を知りたい場合はbeforeということで

    grepコマンドの-Aオプションと-Bオプションと、時々、-Cオプション - wyukawa's diary
  • 1