タグ

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

  • Presto雑感 - wyukawa's diary

    約1年間Prestoを運用していて気づいたことを書いてみようと思う。 Prestoが素晴らしいOSSプロダクトであることは間違いなくて、Hiveを使っている人はインストールして損は無いと思う。 メリットは下記の通り Hiveに比べるとオンメモリで処理するので高速でアドホッククエリに向いている 安定している。 ストレージを持たないアーキテクチャなのでアップデートが簡単 開発が活発。最近は以前に比べるとバージョンアップのスピードは落ちてきたがそれでも3週間に1回はバージョンアップしている。 バグ報告すると数日で修正されたバージョンがリリースされる。 開発がオープン。pull requestも受け付けておりコードレビューが丁寧 コードが奇麗でモダンJavaの代表だと勝手に思ってる 最近の変更を見る限りPrestoは安定性を重視しているように見え、これは僕のような管理者にとっては運用負荷が少なくな

    Presto雑感 - wyukawa's diary
  • HiveでJSON形式のデータを扱うようにして変更に強くする話 - wyukawa's diary

    Hiveでは常識の部類に入る話なのかもしれませんが、僕が最近やったことなのでメモっておきます。 たとば以下のCSVファイルがあったとします。なお今回の例はタムタムの日記 - HiveでJSON形式のログを構造化するからいただきました。m( )m name,exam1,exam2,exam3 Irma,58,73,85 Doroty,50,39,11 Echo,95,47,96 Ina,50,68,38 Kay,15,11,46この場合に単純に以下のようなHiveのテーブルを用意してデータをロードするやり方だとカラム追加がおきたときに対応しなければなりません。 CREATE TABLE sample( name STRING, exam1 INT, exam2 INT, exam3 INT ) PARTITIONED BY (yyyymmdd STRING) ROW FORMAT DELIM

    HiveでJSON形式のデータを扱うようにして変更に強くする話 - wyukawa's diary
  • HBaseのデータをHiveからselectする - wyukawa's diary

    参考にしたのはこの辺 家Wiki https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration Hortonworksのスライド資料 Integration of Hive and HBase from Hortonworks 最初はHiveでselect insertしてHBaseにデータロードする方法を試していたけど、以下のようなエラーが出てうまくいかなかった。 FATAL org.apache.hadoop.mapred.Child: Error running child : java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.io.HbaseObjectWritable なのでHBaseのデータを

    HBaseのデータをHiveからselectする - wyukawa's diary
  • Hiveのベストプラクティス(かもしれないこと)をめもっておく - wyukawa's diary

    Hiveの現場に来て4か月経ち回りのやり方を観察したり、他の事例を調べたりしているうちにHiveを使用する際のパターンというかベストプラクティスが見えてきた気がするので書いてみるよ。 ユースケースはログ解析です。 1. ファイルフォーマットと圧縮 ログは圧縮率高いので圧縮すべし。でもスプリット可能であるためにはってことでSequenceFileでブロック圧縮は確定。 圧縮コーデックは圧縮率を考えてgzip。 ちなみに圧縮率は bzip2>gzip>LZO でスピードは LZO>gzip>bzip2 だ。bzipはスプリット可能で圧縮率も高いんだけどHadoop 0.20系ではまだ使えなかったと思う。Hadoop 0.20系でも使えるらしいですが遅くて使い物にならないようです。 最近はsnappyなんてのも出ててCDH3 Update 1で使えるようになりましたね。 snappyは圧縮率はL

    Hiveのベストプラクティス(かもしれないこと)をめもっておく - wyukawa's diary
    nobusue
    nobusue 2014/08/31
  • pythonからhiveserver2につなごうとしていろいろハマったのでメモっておく - wyukawa's diary

    CDH4.5のhiveserver2にpython 2.7+NOSASLでつなごうとしていろいろハマったのでメモっておきます。 Setting Up HiveServer2 - Apache Hive - Apache Software Foundation をみると GitHub - BradRuderman/pyhs2をインストールして使えばいいようだがうまくいかなかった。 具体的には「Required field 'sessionHandle' is unset!」と言われる。 別のライブラリ使ってみるかと思ってGitHub - y-lan/python-hiveserver2: Python binding for HiveServer2を使ったけど「Required field 'client_protocol' is unset!」と言われる。 うっきー。 pyhs2のソースを

    pythonからhiveserver2につなごうとしていろいろハマったのでメモっておく - wyukawa's diary
    nobusue
    nobusue 2014/07/30
    文字化け対策
  • HDPとAmbariを試している - wyukawa's diary

    今度新規にHadoopクラスタを構築する予定なのですが、HortonworksのHDPおよびAmbariをちょっと試しています。 僕は今までApacheのコミュニティ版Hadoop 1系を1年ほど運用していたので、今どきのHadoop事情にうとかったんですがいろいろ変わってるんですね。 NameNode HAとか名前だけは知っていたのですが、実態がどんなもんだかよくわかってなかったし。 今の時点でHadoopのディストリビューションを選択するとしたら、Apacheのコミュニティ版, CDH, HDPのいづれか3択で、どれを選ぶにしてもYARNに突入せざるをえないでしょう。 例えばHiveしか使わないにしても。 で、まあ、とりあえずHDPは新しいし触ったことある人も少なそうなのでちょっと試しています。 yumでひとつづつインストールしていってもいいのですが、AmbariというCloudera

    HDPとAmbariを試している - wyukawa's diary
  • HBaseのデータ書き込みフロー - wyukawa's diary

    をつらつら読んだのでデータ書き込みのあたりについてメモがてら書いてみる。 HBaseはLog-Structured Merge-tree (LSM-tree)という技術を使ってデータの読み書きを行います。 LSM-treeはMemtable, SS Table, Commit Logという3つの記憶領域を使います。 Memtableはメモリ上の領域でHBase用語でいうとMemStoreになります。 SS Tableはディスク上の領域でHBase用語でいうとHFileになります。 Commit Logはディスク上の領域でHBase用語でいうとHLogになります。WAL(Write Ahead Log, 先攻先行書き込みログ)ですね。 HBaseでデータを書き込むとMemstoreとHLogに書き込まれます。 Memstoreが一定量に達するとHFileに書き込まれます。HFileは一度

    HBaseのデータ書き込みフロー - wyukawa's diary
  • HBaseのRow Keyの設計についてのメモ - wyukawa's diary

    Facebook Messageで使われたり、LINEのストレージで使われたり、と事例も多く出てきているHBase(Bは大文字。これ重要)ですが、個人的に少し興味も湧いてきたのでちょっと調べてます。HBaseはLog-Structured Merge-tree (LSM-tree)というアーキテクチャを使っており大量データの書き込みに最適化されています。なので大量の書き込みがあり読み込みは直近のもののみというメッセージ系アプリに向いているんだと思います。 そういえば半額に釣られてManning | HBase in Actionも買ってしまいました。 このの4章のRow Keyの設計についての話があってそれがちょっと面白かったので関連してRow Keyについて少し書いてみます。 まずHBaseはカラム指向のデータベースと呼ばれますがデータモデルは多次元ソートマップです。 図解すると下記の

  • Fabricインストールメモ - wyukawa's diary

    Hadoopのような複数台のマシンを相手にする作業だと一括でコマンド発行したいことがあります。 その際に各マシンにいちいちSSHでログインして作業するのは面倒です。 なのでその辺りを解決するツールが欲しくなります。 Hadoop徹底入門だとparallel-sshが紹介されています。 ただこれだとsudoがうまくいかないんですよね。 sudo: sorry, you must have a tty to run sudoと言われます。 Google Code Archive - Long-term storage for Google Code Project Hosting.によれば-xオプションつけてsshの-tオプションを渡せば良いように見えますが、 pssh -h hostlist -O "StrictHostKeyChecking=no" -x -t -A -l ユーザ -i "

    Fabricインストールメモ - wyukawa's diary
  • fluent-plugin-jstatを作った - wyukawa's diary

    jstatの結果を入力とするfluent-plugin-jstatを作りました。 GitHub - wyukawa/fluent-plugin-jstat fluent-plugin-jstat | RubyGems.org | your community gem host JavaアプリケーションのモニタリングというとJMXが思い浮かぶと思いますが、 JMXはアプリ起動時に-Dcom.sun.management.jmxremoteとか指定しないといけないし、 JMXほど大げさじゃなくてもっとカジュアルにモニタリングしたい時もあると思います。 そんなときにはjstatが使えます。 jstatを使ったモニタリングは下記に詳しいです。ここではjstatの結果をderived経由でGrowthforecastに送っています。 derivedがプラグインアーキテクチャになってGrowthFor

    fluent-plugin-jstatを作った - wyukawa's diary
  • JVM Operation Casual Talksに参加して思ったことをつらつらと書く - wyukawa's diary

    JVM Operation Casual Talks : ATND 内容は参加者のブログエントリとtogetterが下記にありますのでそちらを見るとよいと思います。 JVM Operation Casual Talksに参加しました #jvmcasual - @johtaniの日記 2nd 「JVM Operation Casual Talks」発表資料のリンクをまとめてみる #jvmcasual - 元RX-7乗りの適当な日々 JVM Operation Casual Talks に参加してきました。 - susumuis Info JVM Operation Casual Talks #jvmcasual - Togetter で、このエントリでは発表を聞いて思ったことをつらつらと書きます。 ちなみに僕はJava歴10年以上なのですが、JVM運用経験はほとんどありません。最近はちょっと

    JVM Operation Casual Talksに参加して思ったことをつらつらと書く - wyukawa's diary
    nobusue
    nobusue 2014/04/09
    JolokiaをぶっこめばJVMがRESTで監視可能になりますよ
  • ビルド時に環境ごとに設定ファイルをAntで切り替える方法 - wyukawa's diary

    例えば以下のように環境依存な設定ファイルがあるとします。この設定ファイルを環境にあわせてどうやってビルド、デプロイするのがいいのか?というのがテーマです。 sample-common/ |--src/ |--main/ |--resources/ |--mail.properties メールサーバのホスト名が書かれている sample-db/ |--src/ |--main/ |--resources/ |--ibatis-config.xml DBサーバのURLが書かれているibatis-config.xmlはこんなイメージです <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:XE" />ひとつのやり方としては、これらの設定が書かれたファイルをリポジトリに置く際はローカルにあわせたもの

    ビルド時に環境ごとに設定ファイルをAntで切り替える方法 - wyukawa's diary
    nobusue
    nobusue 2013/11/06
  • Hadoopのトラブルシューティングに関する資料があったのでめもっとく - wyukawa's diary

    Hadoop World 2011でClouderaの人が発表した資料を見つけたのではっておく。 Hadoop Troubleshooting 101 - Kate Ting - Cloudera View more presentations from Cloudera, Inc. Clouderaのサポートチームの極意が詰め込まれているようだ。 内容的にはHadoop徹底入門の10章の「性能向上のためのチューニング」と若干かぶっているが参考になります。 io.sort.mb < mapred.child.java.opts とすることとか(ていうかmapred.child.java.optsを増やすことはあるかもしれないがio.sort.mbっていじるもんなのかな)、プロセス数やファイルディスクリプタいじれとか、map出力のスレッドいじれとか、Jetty 6.1.26は使うなとか、盛り

    Hadoopのトラブルシューティングに関する資料があったのでめもっとく - wyukawa's diary
  • 1