どらちゃんのポッケ

R・統計・技術メモなど勉強ログ置き場

hortonworksのhadoopを触る

hadoopを試したい

motivation(なんで触ろうと思ったのか)

  • 2年前くらいにhadoopのハンズオンに行って、ちょっと触ってから全く触ってなかった
    • javaMapReduceを見ただけなので、pig/hive知らない・・・
  • データ解析系に強くなりたいと思っているので、hadoop/pig/hive/EMRは触れるようになりたい

GOAL(とりあえずの目標)

ディストリビュータ

  • hadoopディストリビュータは、Clouderaしかしらなかったが、先輩に聞いたところhortonworksっていうディストリビュータが最近、活気があるらしい。
  • ざっと、ドキュメントとかサイトを見たところ、Clouderaよりも充実してそう(私がわかりやすそう)なので、hortonworksを使用することにした
    • Clouderaの使い方も押さえてはおきたいが。。。

f:id:sleeping_micchi:20140117223635p:plain

Sandboxを動かす手順

ドキュメントがすごい丁寧なので、ドキュメント通りにすれば問題なく動くがメモしておく。 ハンズオンの時は、Hadoopの構築だけでつらかったが、仮想マシンを提供してくれるらしい。 すばらしすぎる。

  1. ここから仮想マシンをDownloadする
  2. ova形式でVMが落ちてくるので、VartualBoxに展開し、起動
  3. すると、VMのコンソール画面に下記のように表示される

    • f:id:sleeping_micchi:20140117223703p:plain

  4. http://127.0.0.1:8888/ にアクセスするとユーザ登録の画面へ

    • f:id:sleeping_micchi:20140117223953p:plain

  5. 登録すると、下記のメイン画面へいく

    • f:id:sleeping_micchi:20140117224129p:plain

  6. USE HADOOPのリンクを押すと、下記のような画面へいく。ここからpigとかHiveもうてるみたい

    • f:id:sleeping_micchi:20140117224401p:plain

  7. tutorialsのリンクを押すと、チュートリアルができる画面へ
    • かなり充実してる

チュートリアルをはじめる

Uploaded your data file into HDFS

f:id:sleeping_micchi:20140117224641p:plain

Used Apache HCatalog to create a table

  • HCatalogへの登録
  • HCatalogによって、Hadoopクラスタ内のデータの場所やメタデータを保持することができる。これによって、データの場所やメタデータを意識することなく、MadReduceやスクリプトを実行することができる。Hiveやpigをサポートしている。
  • ???わからない・・・。
  • create a new table from file
    • nameとfileを指定
  • 型をもってくれているこということか?

f:id:sleeping_micchi:20140117224838p:plain

Hive

  • Hiveとは

    MapReduceのロジックは開発言語の「Java」で記述する必要があります。Javaでの開発は一般に、工数がかかるというデメリットがあります。そこで、より簡単に分散処理を行えるようにしたオープンソースのツールが登場しました。それが本連載で紹介する「Pig」および「Hive」なのです。(http://itpro.nikkeibp.co.jp/article/COLUMN/20120418/391529/

    • DFS上に保存されたデータをテーブルとして扱い、SQLライクなDSL言語を使うことで、MapReduceを意識することなく、データを操作することができる
    • Facebookが作った

以下、サンプル

  • Select * from nyse_stocks
    • SQLと一緒。nyse_stocksの全件全列取得
  • describe nyse_stocks
    • テーブルの型の一覧を返してくれる
  • select count(*) from nyse_stocks
    • 行数をカウントする
    • すこし時間がかかる
  • select * from nyse_stocks where stock_symbol="IBM"
    • stock_symbolがIBMのものを全件取得
  • SQL likeなっていわれるけど、基本的な操作を行うだけなら、SQLと同じ記法っぽい

Pig

  • PigはMapReduceのラッパー(DSL
    • mapper と reducerを記述する必要がない
    • Yahoo!がつくった

以下、サンプル

    Data_all = LOAD 'default.nyse_stocks' USING org.apache.hcatalog.pig.HCatLoader();
    Data_IBM = filter Data_all  by stock_symbol == 'IBM';
    Group_IBM = group Data_IBM all;
    sv = foreach Group_IBM generate AVG(Data_IBM.stock_volume);
    DUMP sv;
  • やっていることは・・・
    1. データの読み込み
    2. stock_symbolがIBMのものを絞り込み
    3. グループ化
    4. AVGを算出
    5. 結果を出力
  • 初見では厳しいDSLだな・・・
  • hortonworksのVMだと、pih helper ボタンがあって、スクリプトを補完してくれる。すばらしい。

?

  • Hiveとpigは同じMapReduceのラッパーを提供してくれるという理解でよいのだろうか?
    • 使い分けとかどうすればいいのだろうか?