SlideShare a Scribd company logo
1 of 15
Download to read offline
オープンクラウド・キャンパス



   EucalyptusのHadoopクラスタと
企業システムにおける
   Jaqlでバスケット解析をして
大規模データの活用と Hadoop の動向
   Hiveとの違いを味わってみました




               中井悦司
           Twitter @enakai00
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


自己紹介

    中井悦司 (Etsuji Nakai)
     – Twitter ID : @enakai00 (ぜろぜろ)

    所属
     – オープンクラウド・キャンパス
     – 日本ユーカリプタス・ユーザー会

    好きな物
     – Linux, Perl, Eucalyptus, Hadoop, Cloud,
       RoR, C, Haskell, 原稿書き, etc…

    特技
     – 道に迷う
     – アラフォーに見えない


                                                         12/21 に書店に並びます。


2                                                                     Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


    本日のデモ環境は Eucalyptus の上で動いています。

        Eucalyptus 環境の構築方法                           Eucalyptus のクラウド上に
            を解説しています。                                Hadoop クラスタを構築!
                2010年8月発売                                2011年2月発売予定




                                                          企画進行中




3                                                                         Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


訳あって Jaql の勉強をしています。

    Jaql = JSON Query Language

    – Hadoop を使うためのオープンソースのスクリプト言語
    – HDFS からデータを読み出して、加工していく処理を記述します
       • Join や Group by などもできます。
       • 処理は自動的に Hadoop ジョブとして実行されます
       • Java などで記述したユーザ定義関数をライブラリ化することができます
    – コードの再利用性を高めることと、他のアプリケーションと Hadoop を連携する API として
      利用することを意識した設計になっています。

                            Jaql のセットアップ手順は、こちらを参照




4                                                        Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


    Jaql でワードカウントするとこんな感じになります。
                                $ cat wordcount.jql
split 関数をライブラリから読み込む
                                splitArr = builtin("com.acme.extensions.expr.SplitIterExpr$Descriptor");
                                read(lines("Karamazov.txt"))
    HDFS からテキストを読み込んで、
                                  -> expand splitArr( $, "[^¥¥w]+" )
                                  -> filter $ != ""                        同じ単語でグループ化して、
      各行を単語に分割して、                 -> group by $word = $
                                       into { $word, num: count($) }
       空文字は取り除いて、                 -> sort by [ $.num desc ]
                                  -> top 3;                              単語と出現数のデータを作って、
                                quit;
思考の流れにそってコードが
                                                                          出現数の降順でソートして、
書けるので、使いやすいです                   $ jaqlshell -cb wordcount.jql
                                [
                                                                   上位 3 つのデータを出力
                                  {
                                     "word": "the",
                                     "num": 14222
                                  },
                                  {
                                     "word": "and",
                   実行結果
                                     "num": 10159
                                  },
                                  {
                                     "word": "to",
                                     "num": 9462
                                  }
                                ]

5                                                                                          Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


    Eucalyptus / Hadoop / Jaql 最高!と思っていたら・・・




                                                         バスケット解析の処理を
                                                          Hive で記述した例


                                                           Jaql への挑戦状!?


6                                                                  Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


    というわけで Jaql で書いてみました。
     // データ読み込み
    $input =
      read(del("excite.log",
           { delimiter: '¥t', schema: schema { id: string, ts: long, query: string? } }
      ));

    // 時間帯を付与したデータを作成(比較のために同じものを2つ作成)
    $withSlot1 = $input
      -> transform
           [ { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 },    // 本来の時間帯
             { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 + 1 } // 1つ後ろの時間帯
           ]
      -> expand;
    $withSlot2 = $input
      -> transform
           [ { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 },
             { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 + 1 }
           ]
      -> expand;

    // 検索処理の実施
    join $withSlot1, $withSlot2
        where $withSlot1.id == $withSlot2.id                              //   同じユーザで、
          and $withSlot1.slot == $withSlot2.slot                          //   同じ時間帯のデータをまとめる。
        into { slot: $withSlot1.slot, id: $withSlot1.id,
               ts1: $withSlot1.ts, query1: $withSlot1.query,
               ts2: $withSlot2.ts, query2: $withSlot2.query }                                         第一ステップ
      -> filter $.query1 != $.query2                                      //   同じ検索語のペアを除外して、
            and $.ts1 < $.ts2 and $.ts2 < $.ts1 + 1000                    //   検索語1⇒検索語2が10分以内を抽出。
      -> transform { triplet: [$.id, $.query1, $.query2] }                //   三つ組み形式のデータを作る。
      -> group by $triplet = $.triplet                                    //   同一の三つ組みは1つにまとめる。
           into { id: $triplet[ 0 ], queryPair: [ $triplet[ 1 ], $triplet[ 2   ] ] }
      -> group by $queryPair = $.queryPair                                //   同一の「検索語1,検索語2」でまとめて、
           into { count: count($[*].id), queryPair: $queryPair }          //   ユーザ数をカウントする。
      -> sort by [ $.count desc ]                                         //   ユーザ数の降順にソート。
                                                                                                      第二ステップ
      -> write(hdfs("basket.out"));                                       //   結果を HDFS に保存する。
7                                                                                                     Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


    と言われても意味が分からないと思うので、説明します。
    解析元のデータ: とある Web 検索サイトの検索ログ(Pig に付属のサンプルデータ)
    $ wget http://www.apache.org/dist/hadoop/pig/pig-0.7.0/pig-0.7.0.tar.gz
    $ tar -xvzf pig-0.7.0.tar.gz
    $ cd pig-0.7.0/tutorial/data
    $ bunzip excite.log.bz2
    $ wc -l excite.log
                                  約95万エントリ
    944940 excite.log
    $ head excite.log
    9593C58F7C1C5CE4        970916072134    levis
    9593C58F7C1C5CE4        970916072311    levis strause & co
    9593C58F7C1C5CE4        970916072339    levis 501 jeans
    45531846E8E7C127        970916065859
    45531846E8E7C127        970916065935
    45531846E8E7C127        970916070105    "brazillian soccer teams"
    45531846E8E7C127        970916070248    "brazillian soccer"
    45531846E8E7C127        970916071154    "population of maldives"
    082A665972806A62        970916123431    pegasus
    F6C8FFEAA26F1778        970916070130    "alicia silverstone" cutest crush batgirl babysitter clueless

          ユーザID              タイムスタンプ (YYMMDDhhmmss)                                検索ワード


目的: 同じ人が連続して検索する傾向が高い検索ワードのペアを発見する。
例:「そんな装備で大丈夫か?」の後で10分以内に「大丈夫だ問題ない」を検索した事のあるユーザは5300人


8                                                                                                    Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


どうやって解析するのか? (全体像)
    第一ステップ
    – 元データから、[ユーザID, 検索語1, 検索語2] (検索語2は、検索語1の後、10分以内に同じユーザが検索
      したもの)という三つ組みのデータ群を作る。
    – この時、重複する三つ組みは1つにまとめる。(同じユーザが、「検索語1⇒検索語2」という検索を何度も繰
      り返しても、それは1回とカウントする。)

    第二ステップ
    – それぞれの [検索語1, 検索語2] のペアに対して、同じパターンの検索をしているユーザが何人いるのかを
      カウントして、[ユーザ数, 検索語1, 検索語2] というデータを作って、回数の降順にソートする。

    処理のポイント
    – 第一ステップの処理の際に、同じユーザの全ての検索データを付き合わせて、10分以内の検索ペアを発
      見しようとすると、例えば、そのユーザが 1000 回検索をしてると、1000×1000 個のデータ比較が必要。こ
      れでは、データ量が多くなるととても処理がスケールしない。
    – そこで、例えば、事前に各データを適当な時間帯でグループ分けして、各グループ内のデータのみを比較す
      るという作戦が考えられるが、この場合、隣の時間帯グループのデータが比較できないので、隣の時間帯同
      士で、お互いに10分以内の間隔のデータが抽出できなくなる。
    – そこで、あるデータを本来の時間帯のグループと、さらに、1つ後ろの時間帯のグループの両方に入れてお
      く。すると、時間帯を跨った比較もできるようになる。


                                                     ゆっくり読みたい方はこちらを参照

9                                                                  Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


どうやって解析するのか? (処理のポイント 1/3)
     第一ステップ
       – 元データから、[ユーザID, 検索語1, 検索語2] (検索語2は、検索語1の後、10分以内に同じユーザが検索
         したもの)という三つ組みのデータ群を作る。
       – この時、重複する三つ組みは1つにまとめる。(同じユーザが、「検索語1⇒検索語2」という検索を何度も繰
         り返しても、それは1回とカウントする。)


     ユーザ AAA の検索が下記の場合で考える。

     AAA   07:01:05   装備                         AAA     07:01:05   装備
     AAA   07:04:48   そんな装備で大丈夫か?                AAA     07:04:48   そんな装備で大丈夫か?
     AAA   07:13:54   大丈夫だ問題ない                   AAA     07:13:54   大丈夫だ問題ない
     AAA   08:31:24   ほげ                         AAA     08:31:24   ほげ


                                               (n * n) / 2 = 8 回の比較で下記のパターンを抽出

                                                         O(n^2) でとても処理がスケールしない。

                         AAA   装備, そんな装備で大丈夫か?
                         AAA   そんな装備で大丈夫か?, 大丈夫だ問題ない




10                                                                            Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


どうやって解析するのか? (処理のポイント 2/3)
     時間帯を分けて、同じ時間帯のデータだけを比較する。


     AAA    07:01:05   装備
     AAA    07:04:48   そんな装備で大丈夫か?
     AAA    07:13:54   大丈夫だ問題ない
     AAA    08:31:24   ほげ


                             10分単位の時間帯
                              フィールドを付与


 AAA       07:01:05    装備              07:00         AAA   07:01:05   装備                 07:00
 AAA       07:04:48    そんな装備で大丈夫か?     07:00         AAA   07:04:48   そんな装備で大丈夫か?        07:00
 AAA       07:13:54    大丈夫だ問題ない        07:10         AAA   07:13:54   大丈夫だ問題ない           07:10
 AAA       08:31:24    ほげ              08:30         AAA   08:31:24   ほげ                 08:30



                                                   同じ時間帯のデータだけを比較


                                 AAA    装備, そんな装備で大丈夫か?



                                                     隣の時間帯で10分以内のデータが拾えない

11                                                                            Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


どうやって解析するのか? (処理のポイント 3/3)
     2 つの時間帯に、あえて、重複データを作成する。

     AAA    07:01:05   装備
     AAA    07:04:48   そんな装備で大丈夫か?
     AAA    07:13:54   大丈夫だ問題ない
     AAA    08:31:24   ほげ


                              1 つのデータを隣の
                               時間帯にも入れる


 AAA       07:01:05    装備             07:00          AAA   07:01:05   装備                 07:00
 AAA       07:01:05    装備             07:10          AAA   07:01:05   装備                 07:10
 AAA       07:04:48    そんな装備で大丈夫か?    07:00          AAA   07:04:48   そんな装備で大丈夫か?        07:00
 AAA       07:04:48    そんな装備で大丈夫か?    07:10          AAA   07:04:48   そんな装備で大丈夫か?        07:10
 AAA       07:13:54    大丈夫だ問題ない       07:10          AAA   07:13:54   大丈夫だ問題ない           07:10
 AAA       07:13:54    大丈夫だ問題ない       07:20          AAA   07:13:54   大丈夫だ問題ない           07:20
 AAA       08:31:24    ほげ             08:30          AAA   08:31:24   ほげ                 08:30
 AAA       08:31:24    ほげ             08:40          AAA   08:31:24   ほげ                 08:40


                                                   同じ時間帯のデータだけを比較

                              AAA   装備, そんな装備で大丈夫か?
                              AAA   そんな装備で大丈夫か?, 大丈夫だ問題ない


                                                    抽出成功
12                                                                            Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


 もう一度スクリプトをみてみましょう。
      // データ読み込み
     $input =
       read(del("excite.log",
            { delimiter: '¥t', schema: schema { id: string, ts: long, query: string? } }
       ));

     // 時間帯を付与したデータを作成(比較のために同じものを2つ作成)
     $withSlot1 = $input
       -> transform
            [ { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 },    // 本来の時間帯
              { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 + 1 } // 1つ後ろの時間帯
            ]
       -> expand;
     $withSlot2 = $input
       -> transform
            [ { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 },
              { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 + 1 }
            ]
       -> expand;

     // 検索処理の実施
     join $withSlot1, $withSlot2
         where $withSlot1.id == $withSlot2.id                              //   同じユーザで、
           and $withSlot1.slot == $withSlot2.slot                          //   同じ時間帯のデータをまとめる。
         into { slot: $withSlot1.slot, id: $withSlot1.id,
                ts1: $withSlot1.ts, query1: $withSlot1.query,
                ts2: $withSlot2.ts, query2: $withSlot2.query }                                         第一ステップ
       -> filter $.query1 != $.query2                                      //   同じ検索語のペアを除外して、
             and $.ts1 < $.ts2 and $.ts2 < $.ts1 + 1000                    //   検索語1⇒検索語2が10分以内を抽出。
       -> transform { triplet: [$.id, $.query1, $.query2] }                //   三つ組み形式のデータを作る。
       -> group by $triplet = $.triplet                                    //   同一の三つ組みは1つにまとめる。
            into { id: $triplet[ 0 ], queryPair: [ $triplet[ 1 ], $triplet[ 2   ] ] }
       -> group by $queryPair = $.queryPair                                //   同一の「検索語1,検索語2」でまとめて、
            into { count: count($[*].id), queryPair: $queryPair }          //   ユーザ数をカウントする。
       -> sort by [ $.count desc ]                                         //   ユーザ数の降順にソート。
                                                                                                       第二ステップ
       -> write(hdfs("basket.out"));                                       //   結果を HDFS に保存する。
13                                                                                                     Open Cloud Campus!
EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました


 実行結果            jaql> read(hdfs("basket.out")) -> top 5;
                 [                                                 Jaql による結果
                   {
                     "count": 53,
                     "queryPair": [
                       "chat",
                       "chat rooms "
                     ]
                   },
                   {
                     "count": 44,
                     "queryPair": [
                       "playboy",
                       "playboy playmates "
                     ]
                   },
                   {
                     "count": 38,
                     "queryPair": [
                       "yahoo",
                       "yahoo yahoos "
                     ]
                   },
                   {
                     "count": 32,
                     "queryPair": [
                       "diana",
                       "diana princess "
                     ]
                   },
                   {                                                       Hive による結果
                     "count": 30,
                     "queryPair": [
                       "playboy",
                       "playboy nudity "
                     ]                                      Jaql と Hive で同じ結果が得られました。
                   }
                 ]
14                                                                                      Open Cloud Campus!
オープンクラウド・キャンパス



      みなさんもぜひ Jaql で
企業システムにおける
      遊んでみてください!
大規模データの活用と Hadoop の動向




              中井悦司
          Twitter @enakai00

More Related Content

What's hot

カジュアルにソースコードリーディング
カジュアルにソースコードリーディングカジュアルにソースコードリーディング
カジュアルにソースコードリーディングAkihiro Okuno
 
Objects Fields
Objects FieldsObjects Fields
Objects Fieldskmiyako
 
TarandocでJSONを永続化
TarandocでJSONを永続化TarandocでJSONを永続化
TarandocでJSONを永続化Masashi Umezawa
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03Akimitsu Takagi
 
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Takashi J OZAKI
 
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装__nakamichi__
 
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用Masafumi Okada
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門Shintaro Fukushima
 
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 Nobuaki Oshiro
 
R6 classes
R6 classesR6 classes
R6 classeshiroki84
 
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeMyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeToshi Harada
 
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Jun Ohtani
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装infinite_loop
 
データサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリデータサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリSatoshi Kitajima
 
Cloud computing competition by Hapyrus
Cloud computing competition by HapyrusCloud computing competition by Hapyrus
Cloud computing competition by HapyrusKoichi Fujikawa
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類Tetsuya Hasegawa
 
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12MapR Technologies Japan
 
オンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータオンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータTakahiro Inoue
 

What's hot (20)

カジュアルにソースコードリーディング
カジュアルにソースコードリーディングカジュアルにソースコードリーディング
カジュアルにソースコードリーディング
 
Objects Fields
Objects FieldsObjects Fields
Objects Fields
 
TarandocでJSONを永続化
TarandocでJSONを永続化TarandocでJSONを永続化
TarandocでJSONを永続化
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03
 
オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門
 
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
 
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
 
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
 
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
 
R6 classes
R6 classesR6 classes
R6 classes
 
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeMyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
 
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
 
20140920 tokyo r43
20140920 tokyo r4320140920 tokyo r43
20140920 tokyo r43
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
データサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリデータサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリ
 
Cloud computing competition by Hapyrus
Cloud computing competition by HapyrusCloud computing competition by Hapyrus
Cloud computing competition by Hapyrus
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類
 
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
 
オンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータオンラインゲームソリューション@トレジャーデータ
オンラインゲームソリューション@トレジャーデータ
 

Viewers also liked

Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud AutomationEtsuji Nakai
 
Yet another acronym for Eucalyptus
Yet another acronym for EucalyptusYet another acronym for Eucalyptus
Yet another acronym for EucalyptusEtsuji Nakai
 
Comparing GlusterFS-SwiftAPI with Original Swift
Comparing GlusterFS-SwiftAPI with Original SwiftComparing GlusterFS-SwiftAPI with Original Swift
Comparing GlusterFS-SwiftAPI with Original SwiftEtsuji Nakai
 
試して学べるクラウド技術! Eucalyptus/AeolusConductor
試して学べるクラウド技術! Eucalyptus/AeolusConductor試して学べるクラウド技術! Eucalyptus/AeolusConductor
試して学べるクラウド技術! Eucalyptus/AeolusConductorEtsuji Nakai
 
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」Etsuji Nakai
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Etsuji Nakai
 
仮想化&クラウドで活用!自動化ツールの基礎
仮想化&クラウドで活用!自動化ツールの基礎仮想化&クラウドで活用!自動化ツールの基礎
仮想化&クラウドで活用!自動化ツールの基礎Etsuji Nakai
 
SDN界隈の用語・考え方をざっくりまとめます。
SDN界隈の用語・考え方をざっくりまとめます。SDN界隈の用語・考え方をざっくりまとめます。
SDN界隈の用語・考え方をざっくりまとめます。Etsuji Nakai
 
Deploying Baremetal Instances with OpenStack
Deploying Baremetal Instances with OpenStackDeploying Baremetal Instances with OpenStack
Deploying Baremetal Instances with OpenStackEtsuji Nakai
 
Your first dive into systemd!
Your first dive into systemd!Your first dive into systemd!
Your first dive into systemd!Etsuji Nakai
 
Hadoop on eucalyptus_20110221
Hadoop on eucalyptus_20110221Hadoop on eucalyptus_20110221
Hadoop on eucalyptus_20110221Etsuji Nakai
 
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!Etsuji Nakai
 
OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習Etsuji Nakai
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShiftEtsuji Nakai
 
RDOとPackstackのご紹介
RDOとPackstackのご紹介RDOとPackstackのご紹介
RDOとPackstackのご紹介Etsuji Nakai
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Etsuji Nakai
 
完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワークEtsuji Nakai
 
Inside Docker for Fedora20/RHEL7
Inside Docker for Fedora20/RHEL7Inside Docker for Fedora20/RHEL7
Inside Docker for Fedora20/RHEL7Etsuji Nakai
 
"Summarize and Express” Training in English
"Summarize and Express” Training in English"Summarize and Express” Training in English
"Summarize and Express” Training in EnglishEtsuji Nakai
 

Viewers also liked (20)

Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
 
Yet another acronym for Eucalyptus
Yet another acronym for EucalyptusYet another acronym for Eucalyptus
Yet another acronym for Eucalyptus
 
Comparing GlusterFS-SwiftAPI with Original Swift
Comparing GlusterFS-SwiftAPI with Original SwiftComparing GlusterFS-SwiftAPI with Original Swift
Comparing GlusterFS-SwiftAPI with Original Swift
 
試して学べるクラウド技術! Eucalyptus/AeolusConductor
試して学べるクラウド技術! Eucalyptus/AeolusConductor試して学べるクラウド技術! Eucalyptus/AeolusConductor
試して学べるクラウド技術! Eucalyptus/AeolusConductor
 
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化
 
仮想化&クラウドで活用!自動化ツールの基礎
仮想化&クラウドで活用!自動化ツールの基礎仮想化&クラウドで活用!自動化ツールの基礎
仮想化&クラウドで活用!自動化ツールの基礎
 
SDN界隈の用語・考え方をざっくりまとめます。
SDN界隈の用語・考え方をざっくりまとめます。SDN界隈の用語・考え方をざっくりまとめます。
SDN界隈の用語・考え方をざっくりまとめます。
 
Deploying Baremetal Instances with OpenStack
Deploying Baremetal Instances with OpenStackDeploying Baremetal Instances with OpenStack
Deploying Baremetal Instances with OpenStack
 
Your first dive into systemd!
Your first dive into systemd!Your first dive into systemd!
Your first dive into systemd!
 
Hadoop on eucalyptus_20110221
Hadoop on eucalyptus_20110221Hadoop on eucalyptus_20110221
Hadoop on eucalyptus_20110221
 
クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!クラウドオーケストレーション「OpenStack Heat」に迫る!
クラウドオーケストレーション「OpenStack Heat」に迫る!
 
OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習OpenStack(RDO/Grizzly) ダッシュボード利用演習
OpenStack(RDO/Grizzly) ダッシュボード利用演習
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
RDOとPackstackのご紹介
RDOとPackstackのご紹介RDOとPackstackのご紹介
RDOとPackstackのご紹介
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介
 
完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク完全分散エッジ処理で実現するNeutron仮想ネットワーク
完全分散エッジ処理で実現するNeutron仮想ネットワーク
 
Inside Docker for Fedora20/RHEL7
Inside Docker for Fedora20/RHEL7Inside Docker for Fedora20/RHEL7
Inside Docker for Fedora20/RHEL7
 
"Summarize and Express” Training in English
"Summarize and Express” Training in English"Summarize and Express” Training in English
"Summarize and Express” Training in English
 
Life with jupyter
Life with jupyterLife with jupyter
Life with jupyter
 

Similar to EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました

Apache Spark チュートリアル
Apache Spark チュートリアルApache Spark チュートリアル
Apache Spark チュートリアルK Yamaguchi
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 
named_scope more detail - WebCareer
named_scope more detail - WebCareernamed_scope more detail - WebCareer
named_scope more detail - WebCareerKyosuke MOROHASHI
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5Nishida Kansuke
 
負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめKazumune Katagiri
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門だいすけ さとう
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2Nishida Kansuke
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
System select hint_for_h2
System select hint_for_h2System select hint_for_h2
System select hint_for_h2Jun Chiba
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsShogo Sensui
 
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~Akabane Hiroyuki
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめようLastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめようShinsuke Sugaya
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]Hideo Takagi
 
もにかじ2 lt @studio3104
もにかじ2 lt @studio3104もにかじ2 lt @studio3104
もにかじ2 lt @studio3104Satoshi Suzuki
 

Similar to EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました (20)

Apache Spark チュートリアル
Apache Spark チュートリアルApache Spark チュートリアル
Apache Spark チュートリアル
 
Azure DataLake 大全
Azure DataLake 大全Azure DataLake 大全
Azure DataLake 大全
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
 
Azure Datalake 大全
Azure Datalake 大全Azure Datalake 大全
Azure Datalake 大全
 
named_scope more detail - WebCareer
named_scope more detail - WebCareernamed_scope more detail - WebCareer
named_scope more detail - WebCareer
 
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
 
負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめ
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
WDD2012_SC-004
WDD2012_SC-004WDD2012_SC-004
WDD2012_SC-004
 
System select hint_for_h2
System select hint_for_h2System select hint_for_h2
System select hint_for_h2
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
 
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめようLastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
 
もにかじ2 lt @studio3104
もにかじ2 lt @studio3104もにかじ2 lt @studio3104
もにかじ2 lt @studio3104
 

More from Etsuji Nakai

「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考えるEtsuji Nakai
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Etsuji Nakai
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowEtsuji Nakai
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスEtsuji Nakai
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモEtsuji Nakai
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsEtsuji Nakai
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English LearningEtsuji Nakai
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎Etsuji Nakai
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門Etsuji Nakai
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineEtsuji Nakai
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2Etsuji Nakai
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersEtsuji Nakai
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterEtsuji Nakai
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginnersEtsuji Nakai
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQNEtsuji Nakai
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかEtsuji Nakai
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜Etsuji Nakai
 
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftExploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftEtsuji Nakai
 

More from Etsuji Nakai (20)

PRML11.2-11.3
PRML11.2-11.3PRML11.2-11.3
PRML11.2-11.3
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlow
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービス
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモ
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English Learning
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application Developers
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with Jupyter
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginners
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQN
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきか
 
PRML7.2
PRML7.2PRML7.2
PRML7.2
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
 
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftExploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
 

Recently uploaded

情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイントonozaty
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルCRI Japan, Inc.
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員Sadaomi Nishi
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計atsushi061452
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521Satoshi Makita
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一瑛一 西口
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfTakayuki Nakayama
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用KLab Inc. / Tech
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdkokinagano2
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑Akihiro Kadohata
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )iwashiira2ctf
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルCRI Japan, Inc.
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。iPride Co., Ltd.
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperleger Tokyo Meetup
 

Recently uploaded (14)

情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 

EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました

  • 1. オープンクラウド・キャンパス EucalyptusのHadoopクラスタと 企業システムにおける Jaqlでバスケット解析をして 大規模データの活用と Hadoop の動向 Hiveとの違いを味わってみました 中井悦司 Twitter @enakai00
  • 2. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました 自己紹介 中井悦司 (Etsuji Nakai) – Twitter ID : @enakai00 (ぜろぜろ) 所属 – オープンクラウド・キャンパス – 日本ユーカリプタス・ユーザー会 好きな物 – Linux, Perl, Eucalyptus, Hadoop, Cloud, RoR, C, Haskell, 原稿書き, etc… 特技 – 道に迷う – アラフォーに見えない 12/21 に書店に並びます。 2 Open Cloud Campus!
  • 3. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました 本日のデモ環境は Eucalyptus の上で動いています。 Eucalyptus 環境の構築方法 Eucalyptus のクラウド上に を解説しています。 Hadoop クラスタを構築! 2010年8月発売 2011年2月発売予定 企画進行中 3 Open Cloud Campus!
  • 4. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました 訳あって Jaql の勉強をしています。 Jaql = JSON Query Language – Hadoop を使うためのオープンソースのスクリプト言語 – HDFS からデータを読み出して、加工していく処理を記述します • Join や Group by などもできます。 • 処理は自動的に Hadoop ジョブとして実行されます • Java などで記述したユーザ定義関数をライブラリ化することができます – コードの再利用性を高めることと、他のアプリケーションと Hadoop を連携する API として 利用することを意識した設計になっています。 Jaql のセットアップ手順は、こちらを参照 4 Open Cloud Campus!
  • 5. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました Jaql でワードカウントするとこんな感じになります。 $ cat wordcount.jql split 関数をライブラリから読み込む splitArr = builtin("com.acme.extensions.expr.SplitIterExpr$Descriptor"); read(lines("Karamazov.txt")) HDFS からテキストを読み込んで、 -> expand splitArr( $, "[^¥¥w]+" ) -> filter $ != "" 同じ単語でグループ化して、 各行を単語に分割して、 -> group by $word = $ into { $word, num: count($) } 空文字は取り除いて、 -> sort by [ $.num desc ] -> top 3; 単語と出現数のデータを作って、 quit; 思考の流れにそってコードが 出現数の降順でソートして、 書けるので、使いやすいです $ jaqlshell -cb wordcount.jql [ 上位 3 つのデータを出力 { "word": "the", "num": 14222 }, { "word": "and", 実行結果 "num": 10159 }, { "word": "to", "num": 9462 } ] 5 Open Cloud Campus!
  • 6. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました Eucalyptus / Hadoop / Jaql 最高!と思っていたら・・・ バスケット解析の処理を Hive で記述した例 Jaql への挑戦状!? 6 Open Cloud Campus!
  • 7. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました というわけで Jaql で書いてみました。 // データ読み込み $input = read(del("excite.log", { delimiter: '¥t', schema: schema { id: string, ts: long, query: string? } } )); // 時間帯を付与したデータを作成(比較のために同じものを2つ作成) $withSlot1 = $input -> transform [ { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 }, // 本来の時間帯 { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 + 1 } // 1つ後ろの時間帯 ] -> expand; $withSlot2 = $input -> transform [ { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 }, { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 + 1 } ] -> expand; // 検索処理の実施 join $withSlot1, $withSlot2 where $withSlot1.id == $withSlot2.id // 同じユーザで、 and $withSlot1.slot == $withSlot2.slot // 同じ時間帯のデータをまとめる。 into { slot: $withSlot1.slot, id: $withSlot1.id, ts1: $withSlot1.ts, query1: $withSlot1.query, ts2: $withSlot2.ts, query2: $withSlot2.query } 第一ステップ -> filter $.query1 != $.query2 // 同じ検索語のペアを除外して、 and $.ts1 < $.ts2 and $.ts2 < $.ts1 + 1000 // 検索語1⇒検索語2が10分以内を抽出。 -> transform { triplet: [$.id, $.query1, $.query2] } // 三つ組み形式のデータを作る。 -> group by $triplet = $.triplet // 同一の三つ組みは1つにまとめる。 into { id: $triplet[ 0 ], queryPair: [ $triplet[ 1 ], $triplet[ 2 ] ] } -> group by $queryPair = $.queryPair // 同一の「検索語1,検索語2」でまとめて、 into { count: count($[*].id), queryPair: $queryPair } // ユーザ数をカウントする。 -> sort by [ $.count desc ] // ユーザ数の降順にソート。 第二ステップ -> write(hdfs("basket.out")); // 結果を HDFS に保存する。 7 Open Cloud Campus!
  • 8. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました と言われても意味が分からないと思うので、説明します。 解析元のデータ: とある Web 検索サイトの検索ログ(Pig に付属のサンプルデータ) $ wget http://www.apache.org/dist/hadoop/pig/pig-0.7.0/pig-0.7.0.tar.gz $ tar -xvzf pig-0.7.0.tar.gz $ cd pig-0.7.0/tutorial/data $ bunzip excite.log.bz2 $ wc -l excite.log 約95万エントリ 944940 excite.log $ head excite.log 9593C58F7C1C5CE4 970916072134 levis 9593C58F7C1C5CE4 970916072311 levis strause & co 9593C58F7C1C5CE4 970916072339 levis 501 jeans 45531846E8E7C127 970916065859 45531846E8E7C127 970916065935 45531846E8E7C127 970916070105 "brazillian soccer teams" 45531846E8E7C127 970916070248 "brazillian soccer" 45531846E8E7C127 970916071154 "population of maldives" 082A665972806A62 970916123431 pegasus F6C8FFEAA26F1778 970916070130 "alicia silverstone" cutest crush batgirl babysitter clueless ユーザID タイムスタンプ (YYMMDDhhmmss) 検索ワード 目的: 同じ人が連続して検索する傾向が高い検索ワードのペアを発見する。 例:「そんな装備で大丈夫か?」の後で10分以内に「大丈夫だ問題ない」を検索した事のあるユーザは5300人 8 Open Cloud Campus!
  • 9. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました どうやって解析するのか? (全体像) 第一ステップ – 元データから、[ユーザID, 検索語1, 検索語2] (検索語2は、検索語1の後、10分以内に同じユーザが検索 したもの)という三つ組みのデータ群を作る。 – この時、重複する三つ組みは1つにまとめる。(同じユーザが、「検索語1⇒検索語2」という検索を何度も繰 り返しても、それは1回とカウントする。) 第二ステップ – それぞれの [検索語1, 検索語2] のペアに対して、同じパターンの検索をしているユーザが何人いるのかを カウントして、[ユーザ数, 検索語1, 検索語2] というデータを作って、回数の降順にソートする。 処理のポイント – 第一ステップの処理の際に、同じユーザの全ての検索データを付き合わせて、10分以内の検索ペアを発 見しようとすると、例えば、そのユーザが 1000 回検索をしてると、1000×1000 個のデータ比較が必要。こ れでは、データ量が多くなるととても処理がスケールしない。 – そこで、例えば、事前に各データを適当な時間帯でグループ分けして、各グループ内のデータのみを比較す るという作戦が考えられるが、この場合、隣の時間帯グループのデータが比較できないので、隣の時間帯同 士で、お互いに10分以内の間隔のデータが抽出できなくなる。 – そこで、あるデータを本来の時間帯のグループと、さらに、1つ後ろの時間帯のグループの両方に入れてお く。すると、時間帯を跨った比較もできるようになる。 ゆっくり読みたい方はこちらを参照 9 Open Cloud Campus!
  • 10. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました どうやって解析するのか? (処理のポイント 1/3) 第一ステップ – 元データから、[ユーザID, 検索語1, 検索語2] (検索語2は、検索語1の後、10分以内に同じユーザが検索 したもの)という三つ組みのデータ群を作る。 – この時、重複する三つ組みは1つにまとめる。(同じユーザが、「検索語1⇒検索語2」という検索を何度も繰 り返しても、それは1回とカウントする。) ユーザ AAA の検索が下記の場合で考える。 AAA 07:01:05 装備 AAA 07:01:05 装備 AAA 07:04:48 そんな装備で大丈夫か? AAA 07:04:48 そんな装備で大丈夫か? AAA 07:13:54 大丈夫だ問題ない AAA 07:13:54 大丈夫だ問題ない AAA 08:31:24 ほげ AAA 08:31:24 ほげ (n * n) / 2 = 8 回の比較で下記のパターンを抽出 O(n^2) でとても処理がスケールしない。 AAA 装備, そんな装備で大丈夫か? AAA そんな装備で大丈夫か?, 大丈夫だ問題ない 10 Open Cloud Campus!
  • 11. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました どうやって解析するのか? (処理のポイント 2/3) 時間帯を分けて、同じ時間帯のデータだけを比較する。 AAA 07:01:05 装備 AAA 07:04:48 そんな装備で大丈夫か? AAA 07:13:54 大丈夫だ問題ない AAA 08:31:24 ほげ 10分単位の時間帯 フィールドを付与 AAA 07:01:05 装備 07:00 AAA 07:01:05 装備 07:00 AAA 07:04:48 そんな装備で大丈夫か? 07:00 AAA 07:04:48 そんな装備で大丈夫か? 07:00 AAA 07:13:54 大丈夫だ問題ない 07:10 AAA 07:13:54 大丈夫だ問題ない 07:10 AAA 08:31:24 ほげ 08:30 AAA 08:31:24 ほげ 08:30 同じ時間帯のデータだけを比較 AAA 装備, そんな装備で大丈夫か? 隣の時間帯で10分以内のデータが拾えない 11 Open Cloud Campus!
  • 12. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました どうやって解析するのか? (処理のポイント 3/3) 2 つの時間帯に、あえて、重複データを作成する。 AAA 07:01:05 装備 AAA 07:04:48 そんな装備で大丈夫か? AAA 07:13:54 大丈夫だ問題ない AAA 08:31:24 ほげ 1 つのデータを隣の 時間帯にも入れる AAA 07:01:05 装備 07:00 AAA 07:01:05 装備 07:00 AAA 07:01:05 装備 07:10 AAA 07:01:05 装備 07:10 AAA 07:04:48 そんな装備で大丈夫か? 07:00 AAA 07:04:48 そんな装備で大丈夫か? 07:00 AAA 07:04:48 そんな装備で大丈夫か? 07:10 AAA 07:04:48 そんな装備で大丈夫か? 07:10 AAA 07:13:54 大丈夫だ問題ない 07:10 AAA 07:13:54 大丈夫だ問題ない 07:10 AAA 07:13:54 大丈夫だ問題ない 07:20 AAA 07:13:54 大丈夫だ問題ない 07:20 AAA 08:31:24 ほげ 08:30 AAA 08:31:24 ほげ 08:30 AAA 08:31:24 ほげ 08:40 AAA 08:31:24 ほげ 08:40 同じ時間帯のデータだけを比較 AAA 装備, そんな装備で大丈夫か? AAA そんな装備で大丈夫か?, 大丈夫だ問題ない 抽出成功 12 Open Cloud Campus!
  • 13. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました もう一度スクリプトをみてみましょう。 // データ読み込み $input = read(del("excite.log", { delimiter: '¥t', schema: schema { id: string, ts: long, query: string? } } )); // 時間帯を付与したデータを作成(比較のために同じものを2つ作成) $withSlot1 = $input -> transform [ { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 }, // 本来の時間帯 { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 + 1 } // 1つ後ろの時間帯 ] -> expand; $withSlot2 = $input -> transform [ { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 }, { id: $.id, ts: $.ts, query: $.query, slot: $.ts / 1000 + 1 } ] -> expand; // 検索処理の実施 join $withSlot1, $withSlot2 where $withSlot1.id == $withSlot2.id // 同じユーザで、 and $withSlot1.slot == $withSlot2.slot // 同じ時間帯のデータをまとめる。 into { slot: $withSlot1.slot, id: $withSlot1.id, ts1: $withSlot1.ts, query1: $withSlot1.query, ts2: $withSlot2.ts, query2: $withSlot2.query } 第一ステップ -> filter $.query1 != $.query2 // 同じ検索語のペアを除外して、 and $.ts1 < $.ts2 and $.ts2 < $.ts1 + 1000 // 検索語1⇒検索語2が10分以内を抽出。 -> transform { triplet: [$.id, $.query1, $.query2] } // 三つ組み形式のデータを作る。 -> group by $triplet = $.triplet // 同一の三つ組みは1つにまとめる。 into { id: $triplet[ 0 ], queryPair: [ $triplet[ 1 ], $triplet[ 2 ] ] } -> group by $queryPair = $.queryPair // 同一の「検索語1,検索語2」でまとめて、 into { count: count($[*].id), queryPair: $queryPair } // ユーザ数をカウントする。 -> sort by [ $.count desc ] // ユーザ数の降順にソート。 第二ステップ -> write(hdfs("basket.out")); // 結果を HDFS に保存する。 13 Open Cloud Campus!
  • 14. EucalyptusのHadoopクラスタとJaqlでバスケット解析をしてHiveとの違いを味わってみました 実行結果 jaql> read(hdfs("basket.out")) -> top 5; [ Jaql による結果 { "count": 53, "queryPair": [ "chat", "chat rooms " ] }, { "count": 44, "queryPair": [ "playboy", "playboy playmates " ] }, { "count": 38, "queryPair": [ "yahoo", "yahoo yahoos " ] }, { "count": 32, "queryPair": [ "diana", "diana princess " ] }, { Hive による結果 "count": 30, "queryPair": [ "playboy", "playboy nudity " ] Jaql と Hive で同じ結果が得られました。 } ] 14 Open Cloud Campus!
  • 15. オープンクラウド・キャンパス みなさんもぜひ Jaql で 企業システムにおける 遊んでみてください! 大規模データの活用と Hadoop の動向 中井悦司 Twitter @enakai00