hadoop1

27
Hadoopおうちクラウド GCOM-W1/AMSR2 地球観測データ処理例 2013/12/05 大友 翔一(GeoJackass) @geojackass http://geojackass.org

Upload: shoichi-otomo

Post on 08-Jul-2015

5.608 views

Category:

Technology


1 download

DESCRIPTION

ビッグデータ、クラウド、ハイパースレッディング、敗北など考えられないそのシステムに、人はどこまでも夢を見た...今、奇跡に最も近いシステム、その名はHadoop

TRANSCRIPT

Page 1: Hadoop1

Hadoopおうちクラウド GCOM-W1/AMSR2 地球観測データ処理例

2013/12/05

大友 翔一(GeoJackass)

@geojackass

http://geojackass.org

Page 2: Hadoop1

自己紹介

大きな(データの)お友達こと、大友です。

本名です。

GeoJackassを名乗ったりしてます。 http://geojackass.org/blog/

Hadoop始めました。

友達と二人でHi-rezClimateというシステム構築してます。

名前の通り、気象観測や地球観測、政府公共機関、及び科学衛星データの、ビジュアライゼーションや解析を大いなる道楽でやっています。

http://geojackass.org

Page 3: Hadoop1

ADGENDA

1.はじめに

2.BigData(ex, GCOM-W1/AMSR2)事始

3.Hadoop簡易環境構築

4.PigQLのsample

5.HadoopPig実戦投入

6.終わりに

http://geojackass.org

Page 4: Hadoop1

1.はじめに 2.BigData(ex, GCOM-W1/AMSR2)事始

3.Hadoop簡易環境構築

4.PigQLのsample

5.HadoopPig実戦投入

6.終わりに

http://geojackass.org

Page 5: Hadoop1

ビッグデータ流行してますね

ビッグデータ、クラウド、データサイエンス…

何となく通じるけど、本当にそれ共通言語ですか。

で、これらとセットで語られる

分散処理,並列化,クラスター…

Hadoop ……

http://geojackass.org

Page 6: Hadoop1

で、Hadoopって、何ですか

まさか、魔法の小箱だとでも思ってるんですか?? ちがうよ。なかにようせいさんがいるんだよ、ようせいさんがなやみをかいけつしてくれるんだよ…

…僕もそう思ってました。

……そんな人達のために、おうちHadoop環境作って、実験してみました。

http://geojackass.org

賛成カワイイ!!的な http://www.youtube.com/watch?v=GHvijEJi8Pc

Page 7: Hadoop1

1.はじめに

2.BigData

(ex, GCOM-W1/AMSR2)事始 3.Hadoop簡易環境構築について

4.PigQLのsample

5.HadoopPig実戦投入

6.終わりに

http://geojackass.org

Page 8: Hadoop1

まずは、ビッグデータをもらってこよう

http://geojackass.org

• JAXAの歩き方…を参考に、 資料公開http://www.jaxa.jp/archives/db/tebiki_j.html

今回はしずく

(GCOM-W1/AMSR2)を

題材に学習します。

Page 9: Hadoop1

地球観測衛星データをもらってこよう

http://geojackass.org

GCOM-W1からデータをもらってきます。 sftpでの取得は、 fileZillaやwinSCPで可能です。詳細は公式ページを参考にしてください。

http://gcom-w1.jaxa.jp/index.html

Page 10: Hadoop1

地球観測データを使ってみよう

http://geojackass.org

UserToolsを使用して、HD5を読み込みます。さらにこれを利用して緯度経度座標付の.csvを作ります。これはサンプル用に2012/07の移動平均でキャリブレーシション済みのL3データになります。 詳しく知りたい方は、頑張ってデータ仕様を学習してください。

Page 11: Hadoop1

ビッグデータの一部を見てみよう

http://geojackass.org

先頭2行はヘッダー行で、以下C列にvalue(今回は海表面温度sst)が入っています。この時、-9999は欠損値になる点に注意してください。

Page 12: Hadoop1

1.はじめに

2.BigData(ex, GCOM-W1/AMSR2)事始

3.Hadoop簡易環境構築 4.PigQLのsample

5.HadoopPig実戦投入

6.終わりに

http://geojackass.org

Page 13: Hadoop1

おうちHadoop環境構築概論1

http://geojackass.org

今回は実戦投入が目的なので、nodeやレプリケーション、HDFSなどの仕様とシステム概論部分は割愛します。これらの部分及び運用に興味のある方は下記の勉強会資料を参照してください。

山本幸生(2010)衛星データ処理勉強会分散処理システムHadoop

http://c-soda.isas.jaxa.jp/benkyou/Hadoop.pdf

おうちhadoop環境構築したい方は、hadoop公式サイトから使用したいバージョンをダウンロードし.tarを展開したら参照ライブラリに.jarファイルを追加してください。http://hadoop.apache.org/

すでにお分かりのように、Hadoopは本来Javaで記述しますので、eclipseはそれに対応したものを推奨します。

ただし、今回は記述の簡易性からPigを用いますのでPigも同様に.jarを追加してください。また、あえて最新版Hadoopを推奨しなかったのは、Pigとバージョン間での齟齬が吸収しきれていないためです。

Page 14: Hadoop1

おうちHadoop環境構築概論2

http://geojackass.org

EclipseからCygwinを使用してunixコマンドを渡しますので、windows環境で構築される方はcygwinのbinまでPATHを設定してください。

http://www.cygwin.com/

Page 15: Hadoop1

おうちHadoop環境構築概論3

http://geojackass.org

Hadoopのパフォーマンスバリューは速度にあると思う方はJavaでMap/Reduceを記述してください。 処理の論理モデルに注力する方が賢明だと思う方や、解析のために全てをJavaで記述するのがつらい方はPigかHiveを使いましょう。 今回はPigで、PigはSQLlikeな文法で記述可能です。 ちなみにhadoopには信じられないことが沢山あります。 その一つが、この図は公式のものということです… それから簡易構築環境がeclipseでシングルノードの点に関しても、触れないでください

Page 16: Hadoop1

おうちHadoop環境構築概論4

http://geojackass.org

Pigのライブラリを使用可能にするために、

Main Classにorg.apache.pig.Mainと記述してください。

初期設定は以上で終了です。

Hadoopと聞くと、むやみやたらとスゴイもののように語る人がいますが、やってみると結構簡単でしょ??ただしこれは簡易環境下でシングルノードの場合です。エンジニアリング的に大変なのは、2桁以上台のhdfsクラスタ(DataNode)を使用するような本番環境への導入及び運用(これが出来れば超凄腕ですgeojackass調べによる)と、最近stableになったものの…なんか、数々のライブラリ(KVS,カラムDB含む)との相性と、スタティスティカルな使い方(意味深)です。

Page 17: Hadoop1

環境設定が終わって

http://geojackass.org

• 書籍を含めて資料がほとんど英語しかない。もしくは動物の本… • マニュアル,Wikiに関しては少々日本語がある… Hadoopクラスタの人には、ぜひ頑張って日本語化してもらいたい

• 自称データ○○、自称アナリスト系のフリンジが公開する劣化したコピペ情報が氾濫

• コードも資料もない出来る出来る系詐欺の記事が氾濫

• あの法案… …日本におけるHadoop(というかクラウドとかビッグデータ系)は名前の浸透度や先行イメージと反比例する形で、環境が劣悪なことに気づく。でも、転んでも泣かない…

Page 18: Hadoop1

1.はじめに

2.BigData(ex, GCOM-W1/AMSR2)事始

3.Hadoop簡易環境構築

4.PigQLのsample 5.HadoopPig実戦投入

6.終わりに

http://geojackass.org

Page 19: Hadoop1

PigQLを書いてみよう1

http://geojackass.org

--0./DataのLOADを行う。今回は紐付けを行わなくていいように、フルpthを記述

amsr2_input = LOAD 'works/input/amsr2/csv';

/*

キャストは

([変換後の型]) SUBSTRING($0[カラムの番号], start[開始時点の文字列番号], end[終了時の文字列番号])

使える型

int 符号付32bit整数

long 符号付64bit整数

float 32bit浮動小数点

double 64bit浮動小数点

*/

--1./SUBSTRINGでの切り出しを行う

amsr2_extract = FOREACH amsr2_input GENERATE

(double) SUBSTRING($0, 0, 7) AS lat,

(double) SUBSTRING($0, 1+7, 13) AS lng,

(double) SUBSTRING($0, 1+14, 21) AS sst

;

*今回は練習用として半構造化データでも使えるようにSUBSTRINGで切ってますが、構造化データは正規表現で切り取る方が分かりやすいと思います。その辺は利用するマシンスペックやパフォーマンスなどのトレードオフを十分に考慮してください。個人的には処理の論理モデルとQLは追認性、可読性を重要視して実際の処理そのものはHadoopでゴリ押しするのが一番パワフルだと思います。

Page 20: Hadoop1

PigQLを書いてみよう2

http://geojackass.org

--2./SPLITによるエラー処理を行う sst == -9999.0は正常データから除去する。

SPLIT amsr2_extract INTO

amsr2_error IF sst == -9999.0,

amsr2_target IF sst > 0

;

--3./FILTERによる抽出

ref::https://github.com/chomy/hi-rezclimate/blob/master/trmm/trmmkml.py

--asia_areaを抽出するasia = (x1y0,x1y1)

amsr2_asia = FILTER amsr2_target BY 90.0 < lat and lat < 180.0 and 0.0 < lng and lng < 60.0;

--4./STORE

STORE amsr2_asia INTO 'works/output/amsr2/20120701asc';

--黒子の6番./

DUMP amsr2_asia;

pigQL自体はGitHubにアップしてあるので、読みにくい方はそちらを参照してください。 https://github.com/geojackassShoichi/HadoopPig/blob/master/amsr2_extract.pig

Page 21: Hadoop1

1.はじめに

2.BigData(ex, GCOM-W1/AMSR2)事始

3.Hadoop簡易環境構築

4.PigQLのsample

5.HadoopPig実戦投入 6.終わりに

http://geojackass.org

Page 22: Hadoop1

HadoopPigを起動する

http://geojackass.org

コンソールlogが大量のエラーを吐いているように見えていますが、これで正常です。 惑わされずに、Success!と表示されているのが確認できれば問題ありません。失敗する場合はFailedと表示されます。これは本番環境でターミナルからコマンド発行しても、PigQLを読ませても同様です。

Page 23: Hadoop1

HadoopPigを起動する movie

http://geojackass.org

どうも静止画だとHadoopの挙動がどういうものなのか分かりにくい方のためにキャプチャ動画撮りました。ディレクターズカット(という名の何も編集してない)映像で御覧ください。

http://www.youtube.com/watch?v=6zSkCaQ6vWI

Page 24: Hadoop1

処理完了後のデータ…

http://geojackass.org

Page 25: Hadoop1

1.はじめに

2.BigData(ex, GCOM-W1/AMSR2)事始

3.Hadoop簡易環境構築

4.PigQLのsample

5.HadoopPig実戦投入

6.終わりに

http://geojackass.org

Page 26: Hadoop1

で、Hadoopって??

http://geojackass.org

• Hadoopはエクセルの関数みたいなデータ演算・処理が得意です…多分

• HadoopはファイルI/Oが激遅いです。これは基本的にDataNodeの3重冗長仕様によるものです…おそらく

• ちょっとしたデータ処理ならpython等のスクリプト系言語に軍配…きっと

• 処理フロー、論理モデルを作成するのが大変…これだけはガチ

***良く言えば*** • 可能な操作が単純なことばかりなので、ロジックの追認が容易 • ビジュアライゼーションや解析の下準備として、データの整形など

を行うミドルウェアとして最適 • ビッグデータの処理時間比で、ファイルI/Oは十分に無視できる • ビッグデータを処理する場合でもQLの可読性が高い(Javaネイティ

ブを除く…私見です) • ライブラリが充実しているので、機能拡張自体は容易 • Hadoopを使った満足感…Priceless

Page 27: Hadoop1

参考データ、書籍、資料、引用元一覧

http://geojackass.org

• GCOM-W1/AMSR(しずく)データ引用元 • http://gcom-w1.jaxa.jp/index.html • JAXAの歩き方 • http://www.jaxa.jp/archives/db/tebiki_j.html *今回使用したデータは学術目的で使用しています。それ以外の利用方法に関しては、JAXAのポリシーに従って下さい。この資料等を参考にされた場合に発生したいかなる不測の事態でも、当方では一切の責任を負いかねます。 • 衛星データ処理勉強会 山本幸生(2010)分散処理システムHadoop • http://c-soda.isas.jaxa.jp/benkyou/Hadoop.pdf • パターンでわかるHadoop MapReduce ビッグデータの処理入門 著者 三木大知 発行所 株式会社 翔泳社 • SKE48 13th.Single 「賛成カワイイ!」Music Video 像使いが出てただけ http://www.youtube.com/watch?v=GHvijEJi8Pc