Hive

presto/hiveクエリ変換

prestoでクエリを書いてあとでバッチ化するためにhiveに書き換えるというのはよくある話なので変換ルールをメモっておく。 prestoの方が機能的にリッチなんですが、安定性を考えるとバッチではhiveをうちの環境では使ってます。一番よくつかうのがjson_extra…

hiveserver2とFull GC

昔からhiveserver2はあんまり安定してない気がしますが、最近ちょっと不調でたまに下記のようなエラーが出て接続できないときがありました。hiveserver2 log 2017-11-10 01:18:38,430 ERROR [CuratorFramework-0]: curator.ConnectionState (ConnectionState…

Hadoopソースコードリーディング 第22回で発表してきました

Hadoopソースコードリーディング 第22回 Tickets, Fri, Mar 3, 2017 at 6:45 PM | Eventbrite 関係者の皆様おつかれさまでした。ありがとうございました。スライドはこちら Upgrading from-hdp-21-to-hdp-25 from wyukawa Hadoopアップグレードの話をしまし…

Hadoopソースコードリーディング 第20回で発表してきました

Hadoopソースコードリーディング 第20回 Tickets, Thu, Mar 24, 2016 at 7:00 PM | Eventbrite関係者の皆様おつかれさまでした。ありがとうございました。スライドはこちら Upgrading from-hdp-21-to-hdp-24 from wyukawa HDP2.1からHDP2.3.4へblue green de…

Hive on Tezを試した

HDP2.1の頃のTezはまだ使わないほうが良いよと言われたけどHDP2.3になってdefaultになっていたので試してみた。 Tezのバージョンは0.7系です。クエリはこんな感じ FROM src INSERT OVERWRITE TABLE hoge PARTITION ... SELECT ... WHERE ... INSERT OVERWRIT…

HiveServer2のメモリーリーク

HiveServer2で 「java.lang.OutOfMemoryError: unable to create new native thread」といわれた - wyukawa’s blogで書いた件だけど、GangliaのTotal Processesを見ると下記のように順調に増えていたのでやはりメモリーリークなのかなと思っています。スレッ…

HiveServer2で 「java.lang.OutOfMemoryError: unable to create new native thread」といわれた

CentOS6上のHiveServer2で 「java.lang.OutOfMemoryError: unable to create new native thread」といわれたのでメモっておく。現象としては下記と同じに見える。リークしてるのか。。。https://issues.apache.org/jira/browse/HIVE-6866HDP使っているのです…

HiveでJSON形式のデータを扱うようにして変更に強くする話

Hiveでは常識の部類に入る話なのかもしれませんが、僕が最近やったことなのでメモっておきます。たとば以下のCSVファイルがあったとします。なお今回の例はタムタムの日記 - HiveでJSON形式のログを構造化するからいただきました。m( )m name,exam1,exam2,ex…

pythonからhiveserver2につなごうとしていろいろハマったのでメモっておく

CDH4.5のhiveserver2にpython 2.7+NOSASLでつなごうとしていろいろハマったのでメモっておきます。Setting Up HiveServer2 - Apache Hive - Apache Software Foundation をみると GitHub - BradRuderman/pyhs2をインストールして使えばいいようだがうまくい…

データ分析環境について書いてみる

ログをHDFSに集めてHiveでETLや集計を行い集計結果をRDBMSに蓄積してレポーティングツールで可視化するというのは一般的な話だと思います。データの流れでいうと App -> HDFS -> RDBMS -> レポーティングツール という感じです。他にもPrestoのようなlow lat…

hiveのジョブをsubmitできずにそのままhiveクライアントプロセスが残り続ける現象について

再現性は無いんですけどHiveServer経由でhiveのジョブをsubmitしようとしてもできずにそのままhiveクライアントプロセスが残り続けるという現象に遭遇しました。 submitされてないのでMapReduceも進まないという状況です。ジョブが失敗している訳ではないの…

アドホックにHiveを実行する基盤としてshibを使っている

Hiveでデータ集計してKPIを定期的にレポーティングしているんですが、それとは別にアドホックにHiveを実行するということはよくありますよね。例えば企画の人が何かイベントしたのでその効果を知りたいとかですね。定期的に見たいKPIだったらそれはそれでち…

hiveserverのモニタリング

hiveserver(not hiveserver2)の調子が悪くOutOfMemoryが発生することもあるのでメモリを増やしつつモニタリングも強化してみている。メモリを増やしてかつGCログを取るためにhive-env.shに下記を追加。この例ではhiveserverのヒープを2GBにしている。 if [ "…

HiveのSERDEPROPERTIESはパーティション単位でも変更できる

アプリのログなんかを正規表現使ってHiveにぶっ込む場合には以下のようにします。 CREATE TABLE hoge ( hostname string, ... ) PARTITIONED BY ( ymd STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES …

Hiveでのプレースホルダ置換

Hiveのテーブルで日付毎にパーティションを作るってよくやりますよね。でもってこんな感じのクエリなげたりしますよね。 select count(distinct user_id) from daily_log where yyyymmdd='20131201' で、もし1ヶ月分の日ごとのUUが欲しいとか言われたら sel…

Hiveで大きめの結果ファイルをエクスポートして相手に渡す話

いろいろな部署でデータ分析するようになると「うちのデータとおまえんところのデータを結合して解析したいからデータをくれ、もしくはおれのデータをおたくのクラスタにインポートしてくれ」みたいな話が出るようになります、たぶん。1つのHadoopクラスタに…

Hive 0.12へのバージョンアップ

Hive 0.11から0.12へバージョンアップしたのでメモっておく。今のところ特に問題は発生していない。前回Hive 0.9からHive 0.11へバージョンアップしたときは[HIVE-5237] Incorrect group-by aggregation in 0.11.0 - ASF JIRAというバグを踏んでプギャーって…

ログ解析環境についてなんとなく書いてみる

ふとログ解析環境についてなんとなく書いてみたくなったので書いてみる。データサイエンティストブームなるものがあると思いますが、データサイエンティストって言ったときに、Hadoop/Hiveあたりを使ってデータをきれいに整理して分析しやすいように加工する…

HiveとHBaseの連携は難しい

Hive 0.11.0にバージョンアップしてmultiple insertに関わるバグである[HIVE-3699] Multiple insert overwrite into multiple tables query stores same results in all tables - ASF JIRAを心配しなくて良くなったけど代わりにネストしたgroup byに関わるバ…

Hive 0.11で遭遇した問題をメモっておく

Hive 0.11.0へのupgrageを行うため開発環境でいろいろ試しているのだがすんなりとはいかなかった部分があるのでメモっておく。問題が再現する最小のクエリを準備するのが面倒なのでそこは略してスタックトレースだけのっけときます。 HiveとHBaseを連携した…

本番サービス用Hadoopクラスタと統計用Hadoopクラスタの違い

僕が日頃触っているのは統計用Hadoopクラスタで本番サービス用Hadoopクラスタのことはそんなに分からないんだけど見た範囲で言うと違いがいくつかある。本番サービス用Hadoopクラスタっていうのは例えばTwitterのようなつぶやきサービスだったらつぶやきを保…

Hadoopを使ったログ解析システムにおける時間別のジョブ、パーティションについてつらつらと書いてみる。

ログを1時間毎にためてそれをHadoopで処理するなんていうのはよくあるパターンではないかと思う。例えば時間別のPV, UUを求めたいとかね。その場合20130806-1800, 20130806-1900みたいなHiveパーティションを用意するのではないだろうか。20130806-1800パー…

Hadoopサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか

Linuxサーバがディスク容量不足になった!何か消さねば!ってなった時にどう対処するか - 元RX-7乗りの適当な日々 Linuxサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか - たごもりすメモ Cassandraサーバのディスク容量減少アラー…

オレが今見ているHadoopクラスターに関してぼんやりとした感想を書いてみる

オレが今見ているHadoopクラスターはおもに統計値を取得するためのもので、サービスのフロントにどかんと出ているものではない。イントラネット内のものだし内部の人間しかアクセスしないものなのでミッションクリティカルなものではない。主にHiveを使ってM…

バルクロードでHBaseにインポートしたデータをHiveの外部テーブルでselectするときに遭遇した現象に関するメモ

タイトル長い。。。ちゃんと整理できてないですがとりあえずメモっときます。環境はHBase 0.94.4, Hive 0.10.0です。LoadIncrementalHFilesを使ってHBaseにデータをインポートしようとしたら下記のようなエラーが出ました。 Caused by: java.lang.IllegalSta…

HBaseのデータをHiveからselectする

参考にしたのはこの辺本家Wiki https://cwiki.apache.org/confluence/display/Hive/HBaseIntegrationHortonworksのスライド資料 Integration of Hive and HBase from Hortonworks 最初はHiveでselect insertしてHBaseにデータロードする方法を試していたけど…

Hive 0.10でROLLUP, CUBE, GROUPING SETSが入ったよ

最近Hiveをいじることはめっきりなくなりましたが1/11にHive 0.10がリリースされましたね。前の0.9が2012/4/30リリースだったことを考えると約8ヶ月ぶりのリリースですね。ちなみに僕がHiveを一番触っていた頃のバージョンは0.6だったりします。てへ。それに…

SQL, PigのCUBE

SQLで小計や総合計を求める時にGROUP BYを利用することが多いと思いますがいろんな軸で集計したい場合にROLLUP, CUBE, GROUPING SETSを使うことができるようです。詳しくはこちら参照 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj04_4.htmROLLUP…

SQL, Pig, HiveそれぞれのEXISTS

仕事でSQLのEXISTSを書いたことがないwyukawaです。こんばんわ。今日は以下の本を元ネタにEXISTSの話をしようと思います。SQL, Pig, Hiveだとどうなるかもあわせて書きたいと思います。達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)作者: ミック出版社/メーカ…

Hadoopソースコードリーディング 第9回で発表してきました

Hadoopソースコードリーディング 第9回 Tickets, Wed, May 30, 2012 at 7:00 PM | EventbriteHiveの勉強会をやらない?っていう話があって、最初は小規模でカジュアルな感じだろうなあと思ってました。Hive Casual Talkみたいな感じ。でも気づけばモヒカンが…