たごもりすメモ

コードとかその他の話とか。

Hive

Cloudera World Tokyo 2013 行ってきた&しゃべってきた

Cloudera World Tokyo 2013で登壇する機会をいただいたので行ってきた。Cloudera World Tokyo 2013 | Cloudera Japan しゃべってきた しゃべる方は最近作ってるNorikra……の話だけだとなんでCloudera World Tokyoだということになるので、集計処理をSQLに一本…

shib v0.2.0

shib v0.2 beta なのを書いてる - tagomorisのメモ置き場書いてましたが、APIをひととおりfixしたのでgithub上でv0.2.0のタグを打ちました。お仕事で既にこのバージョンを使ってます。 移行したい人は上記エントリの注意書きを読んでください。http://github…

shib v0.2 beta なのを書いてる

だいぶ前に最初のバージョンをつくった shib というHive Webフロントエンドツール、ずっと使ってるんだけど色々こまめに手を入れたりしてた。tagomoris/shib · GitHub Hive Client Webアプリケーション shib をつくった - tagomorisのメモ置き場 Hive WebCli…

CDH4.2(Hive 0.10)のmetastoreは CDH4.1.x (Hive 0.9) 以前と互換性がなかった件

hiveserver が /tmp 下に消されると困るファイルを置く問題、hive 0.10に上げれば直るらしい! と思ったのでうっかり yum update hadoop hive したら Hive 0.10 のmetastoreが Hive 0.9 と非互換なので動かなくなりました。 CDH4.1.x使ってる人はいま yum up…

CDH4でHiveServerを使う際の注意点

CDHでHadoopを使っている良い子のみんな、hiveserverまわりで罠があるので気をつけましょう! という話。ふたつあるので順番に。 hive-server 再起動時にログがtruncateされる hiveserverがなんかおかしかったりすると、原因究明はやるとしてとりあえず再起…

YARN/Hiveな環境で大量の一時ファイルとログをごりごり削除する

YARN使っててHDFSにログを吐くよう設定してるとアホみたいにたまっていくので削除しないとやばい。 とりあえず10日経過したら削除するようにした。 ( for searchpath in '/tmp/hive-*' '/mr-history/done/*/*' '/mr-history/tmp/*' '/yarn/user/*/.staging' …

HiveでLOAD粒度を自由に変更可能にするパーティション構成

ひとことで言うと「通常必要なパーティション階層の更に下にもうひとつパーティションを掘っておけ」だけ。 普通のパーティション設計 仮にWebサーバのアクセスログを投入するためのテーブル accesslog があるとする。このテーブルを、まずサービス名 servic…

個別集計と全体集計を1回のHiveクエリで実行する

馬鹿でかいデータを2回なめたくないでござる! という話。SQLなら WITH ROLLUP で一発なんだけどHiveでは現状サポートされていない。(hive 0.9.x or before) select x,sum(y) group by x と select sum(y) を出すのに同じデータセットを2回舐めたくない、だ…

ShibUIを公開した

HadoopSCRでしゃべったときにデモったりNHNテクノロジーカンファレンスでデモったりしたHiveクエリのスケジュール実行および結果のグラフ登録をやる社内用のアプリケーションがあったんだけど、コードの整理をやるついでに社内依存部分を切り分けたりしたの…

hiveの出力が圧縮される方法がよくわからない、と思っていたら俺があほでした

きわめてざっくり書くと以下のような感じ 同じようなクエリを発行しているふたつの出力の圧縮方法が違う 片方はHDFS上でのファイル全体がgzip圧縮されている (ファイルを見ると 00000_0.gz のようになっている) 片方はレコード/ブロック単位でのgzip圧縮にな…

Hive UDFを自分で追加するときの注意点メモ

メモ。CDH3u2 (hive-0.7.1-cdh3u2) での話。(1/23 HiveServerについていくつか追記した)Hiveで自分でつくった関数(User Defined Function: UDF)を使いたい! と思い艱難辛苦を乗り越えJavaのコードを書きjarにまとめたとする。書くまでの話はWikiの該当ペー…

Hive Client Webアプリケーション shib をつくった

(2013/04/02追記 see: http://d.hatena.ne.jp/tagomoris/20130402/1364898063 )まだ完成度がいまいちだからなーと思ってエントリ書いてなかったんだけどLTでしゃべっちゃったので、ちゃんと書いておく。Hiveにクエリを発行して結果を確認するためのWebアプリ…

Hiveに対するThriftの各RPCレスポンス

メモ。HiveServer用に定義されている各メソッドをThrift RPCで呼んだときに何が返ってくるのよ、と。順序的には、基本的には execute をまずクエリつきで呼んで、それに対してクエリプラン・結果データのスキーマ・結果データそのものを取得する、というかた…

複数クライアントからHiveServerへの同時接続

Hadoopクラスタは(ノードの処理能力が許すかぎり)複数のジョブを並行に起動できるが、その一方でHiveServerはシングルスレッドで動作し、複数のクライアントを(厳密な意味で)同時に相手にはできない。そのあたりはWikiに書いてある。 The HiveServer is curr…

HiveServerを使用してnode.jsからHiveQLを実行する

HiveServerはThriftプロトコルをしゃべるので、おなじくThriftで接続すると任意のクエリを発行できたりして大変便利。ということで node.js からもやった。以前からやってる内容の続き。 HiveServerを使用してPythonやPerlからHiveQLを実行する - tagomoris…

node.js用のThriftライブラリにパッチを書いた

先日の node.jsからThrift経由でHiveServerに通信しようとして力尽きた - tagomorisのメモ置き場 の記事に書いた件、しばらくThriftの BufferedTransport の他言語実装を眺めていたらなんとなく作れそうな気がした*1ので、transport層を置き換え可能にするた…

node.jsからThrift経由でHiveServerに通信しようとして力尽きた

力尽きたのでメモだけ。 Thriftがバージョン 0.6.0 でnode.jsに対応したことになっているが、送信/受信ともに FramedTransport でしか動作しない 開発はここ https://github.com/wadey/node-thrift 今のところFramedTransport以外の実装を作る気配はなさそう…

HiveServerを使用してPythonやPerlからHiveQLを実行する

HiveServerはThriftプロトコルをしゃべる*1ので、おなじくThriftで接続すると任意のクエリを発行できたりして大変便利。ということで、やったので、そのメモ。 準備 まずHiveServerだけど、hiveコマンドを叩いてクエリが実行できる状態なら以下のコマンドで…

Hive CLIをHiveServerに接続して使いたい(が、現状ムリ)

Hive CLIはHiveQLをがんがん書くとさくさくMapReduceされて超絶便利なんだけど、HiveServerをどこかに立てて複数のアプリケーションからそこに接続する場合、Hive CLIをどう使えばいいの、というのがぱっとわからなかった。ぐぐってみてもぜんぜん方法がひっ…