/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

2016-01-01から1年間の記事一覧

Sensu の Slack ハンドラのテンプレート記述方法

Sensu に、通知を Slack に送るハンドラがあるのですが、通知内容を整形する方法を調査しました。 github.com 公式 GitHub にも簡単に紹介されているのですが、サンプルが見当たらなかったのでご紹介します: /etc/sensu/conf.d/slack.json 例として slack.j…

JMockit で File クラスをモックする

業務では JMockit(公式ページ)を利用してテストを書いているのですが、ファイル入出力を利用したクラスの単体テストが書きたいと思い、JMockit で File クラスをモックできないかを調べました。 JMockit とは Java の単体テスト向けフレームワークの1つで…

HiveServer2 でジョブ進捗は取得できない?

HiveServer2 を使っているのですが、Hive クエリ(というか MapReduce)は場合によっては時間がかかるため、ユーザーの方に「クエリの進捗を知る方法はないか」と尋ねられました。利用側からすると、数十分で終わるのか、数時間で終わるのか、なんとなく具合…

Hive の予約語で CREATE TABLE, SELECT する

MySQL など通常の RDBMS もそうですが、Hive にも予約語があり、そのままではカラム名に利用することができません。バッククオート(バックティック)を利用することで予約後をテーブルのカラムに利用することができます。 Hadoop Blog: How, in hive, to cr…

HiveServer2 を JDBC で利用する場合に cancel() できるのは 0.13.0 から

調べたことのメモです。 HiveServer2 を JDBC から使ってるのですが、cancel() メソッドを使えるのは Hive 0.13.0 以降とのこと。2014年3月に以下のチケットが解決されているので、Hive を更新できていない環境ではクエリのキャンセルが行えない可能性があり…

SpringFramework で OutputStream を扱う

大きなファイルを API を通じて返したい処理があり、そのままだとヒープ領域を圧迫して OOM エラーとなってしまうため、ストリーム処理で逐次データをクライアントへ返却するようにしました。 調べている最中に、まさに質問したかったことを Stackoverflow …

ヒープダンプやプロファイルを見るのに jvisualvm が便利

以前の記事で JMX へ接続するためのクライアントとして、jconsole を紹介しました: dev.bynatures.net この後作業していて、jvisualvm というコマンドでもヒープダンプを見ることができると知り、そちらの方が便利だったので紹介します。 詳しい紹介記事 ww…

MemoryAnalyzer で巨大なヒープダンプファイルを扱う

ヒープダンプを扱った際のメモです。 メモリを多く使うアプリケーションが OOM エラーで落ちる際に、ヒープダンプを出力すると後々に調査が可能だと知りました。アプリケーション起動時に XX:+HeapDumpOnOutOfMemoryError オプションを設定するか、JMX 経由…

NVD3 で multiBarChart を扱う場合、データには数値型を渡す

Java での開発は少しずつ慣れているのですが、JavaScript は入る現場ごとに使うフレームワークが変わる印象があります。4年前ほどにジョインしたプロジェクトでは ExtJS, 同時期に走っていた別のプロジェクトでは AngularJS を使っていて、チーム間の技術的…

JMX を jconsole/SpringBoot で使う

JMX を業務で触れたため、改めて調べたのでメモ。 とりあえず SpringBoot で動かす JMX に接続するためのクライアントに jconsole というツールがあります。Stackoverflow で "What is the best or most commonly used JMX Console" という質問を見ても jcon…

Jackson パッケージは fasterxml が新しい

少し前に、Jackson パッケージを使おうとしてハマったことがありました。 Jackson には com.fasterxml.jackson グループのモノと org.codehaus.jackson のモノがあります。Jackson は 2.0.0 以降からネーミングスペースが前者の com.fasterxml.jackson に移…

HiveServer2 のメモリ使用量はパーティション数が関係する

まだ詳しく調べられていないのですがメモ代わりに。 先日 HiveServer2 を利用する機会があり、負荷がどのぐらい掛かるかを確認していました。Cloudera の説明によると、同時コネクション数にも依存しますが数GB〜数十GBのヒープ領域が必要だとあります: Con…

YARN の DRF スケジューリングについて

会社で Hadoop The Definitive Guide(いわゆる象本)の第4版を読んでいるのですが、その中の YARN の章で、ジョブスケジューリングのアルゴリズムである Dominant Resource Fairness (DRF) の説明があります。 YARN で複数のリソース(CPU, メモリなど)を…

PermGen 領域に OOM エラー

OOM エラーに出くわしたのですが、よく発生する Heap 領域のものとは違うエラーが発生しました: java.lang.OutOfMemoryError: PermGen space Hive 関係のアプリケーションで発生していて、temporary function を大量に利用する処理を入れたばかりだったので…

アカデメイア ソフトウェア勉強会 #1 を実施しました

前職の方や異業種交流会で知り合った方と機械学習勉強会を運営していたのですが、今回はソフトウェア開発に特化させた勉強会を実施しました。 というのも、機械学習勉強会の参加者で「プログラミング自体を教えて欲しい」という方が多くいて、それならソフト…

機械学習勉強会 #10 (TensorFlow)

実施から時間が経ってしまったのですが、#9 に引き続き、先日 Google 社よりオープンソース化された TensorFlow という機械学習ライブラリを使った勉強会を2016年4月に実施しました。Google+ コミュニティや、前回の TensorFlow の勉強会の内容についてはこ…

機械学習勉強会 #9 (TensorFlow)

先日、約1年越しの機械学習勉強会を実施しました。今回のお題は、先日 Google 社よりオープンソース化された TensorFlow という機械学習ライブラリを実際に使ってみよう!というものです。 Google+ コミュニティや、前回の実施についてはこのブログの 第1回,…

サーバ側からクッキーの有効期限は取得できない

Stackoverflow を眺めていたら、こんな Question がありました: How to get cookie's expire time Flask - How to get a cookie expiration time? PHP / Python(つまりサーバ側)からクッキーの Expiration time を取得したい、というものです。 結論とし…