Download - Hadoop1
Hadoopおうちクラウド GCOM-W1/AMSR2 地球観測データ処理例
2013/12/05
大友 翔一(GeoJackass)
@geojackass
http://geojackass.org
自己紹介
大きな(データの)お友達こと、大友です。
本名です。
GeoJackassを名乗ったりしてます。 http://geojackass.org/blog/
Hadoop始めました。
友達と二人でHi-rezClimateというシステム構築してます。
名前の通り、気象観測や地球観測、政府公共機関、及び科学衛星データの、ビジュアライゼーションや解析を大いなる道楽でやっています。
http://geojackass.org
ADGENDA
1.はじめに
2.BigData(ex, GCOM-W1/AMSR2)事始
3.Hadoop簡易環境構築
4.PigQLのsample
5.HadoopPig実戦投入
6.終わりに
http://geojackass.org
1.はじめに 2.BigData(ex, GCOM-W1/AMSR2)事始
3.Hadoop簡易環境構築
4.PigQLのsample
5.HadoopPig実戦投入
6.終わりに
http://geojackass.org
ビッグデータ流行してますね
ビッグデータ、クラウド、データサイエンス…
何となく通じるけど、本当にそれ共通言語ですか。
で、これらとセットで語られる
分散処理,並列化,クラスター…
Hadoop ……
http://geojackass.org
で、Hadoopって、何ですか
まさか、魔法の小箱だとでも思ってるんですか?? ちがうよ。なかにようせいさんがいるんだよ、ようせいさんがなやみをかいけつしてくれるんだよ…
…僕もそう思ってました。
……そんな人達のために、おうちHadoop環境作って、実験してみました。
http://geojackass.org
賛成カワイイ!!的な http://www.youtube.com/watch?v=GHvijEJi8Pc
1.はじめに
2.BigData
(ex, GCOM-W1/AMSR2)事始 3.Hadoop簡易環境構築について
4.PigQLのsample
5.HadoopPig実戦投入
6.終わりに
http://geojackass.org
まずは、ビッグデータをもらってこよう
http://geojackass.org
• JAXAの歩き方…を参考に、 資料公開http://www.jaxa.jp/archives/db/tebiki_j.html
今回はしずく
(GCOM-W1/AMSR2)を
題材に学習します。
地球観測衛星データをもらってこよう
http://geojackass.org
GCOM-W1からデータをもらってきます。 sftpでの取得は、 fileZillaやwinSCPで可能です。詳細は公式ページを参考にしてください。
http://gcom-w1.jaxa.jp/index.html
地球観測データを使ってみよう
http://geojackass.org
UserToolsを使用して、HD5を読み込みます。さらにこれを利用して緯度経度座標付の.csvを作ります。これはサンプル用に2012/07の移動平均でキャリブレーシション済みのL3データになります。 詳しく知りたい方は、頑張ってデータ仕様を学習してください。
ビッグデータの一部を見てみよう
http://geojackass.org
先頭2行はヘッダー行で、以下C列にvalue(今回は海表面温度sst)が入っています。この時、-9999は欠損値になる点に注意してください。
1.はじめに
2.BigData(ex, GCOM-W1/AMSR2)事始
3.Hadoop簡易環境構築 4.PigQLのsample
5.HadoopPig実戦投入
6.終わりに
http://geojackass.org
おうち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とバージョン間での齟齬が吸収しきれていないためです。
おうちHadoop環境構築概論2
http://geojackass.org
EclipseからCygwinを使用してunixコマンドを渡しますので、windows環境で構築される方はcygwinのbinまでPATHを設定してください。
http://www.cygwin.com/
おうちHadoop環境構築概論3
http://geojackass.org
Hadoopのパフォーマンスバリューは速度にあると思う方はJavaでMap/Reduceを記述してください。 処理の論理モデルに注力する方が賢明だと思う方や、解析のために全てをJavaで記述するのがつらい方はPigかHiveを使いましょう。 今回はPigで、PigはSQLlikeな文法で記述可能です。 ちなみにhadoopには信じられないことが沢山あります。 その一つが、この図は公式のものということです… それから簡易構築環境がeclipseでシングルノードの点に関しても、触れないでください
おうちHadoop環境構築概論4
http://geojackass.org
Pigのライブラリを使用可能にするために、
Main Classにorg.apache.pig.Mainと記述してください。
初期設定は以上で終了です。
Hadoopと聞くと、むやみやたらとスゴイもののように語る人がいますが、やってみると結構簡単でしょ??ただしこれは簡易環境下でシングルノードの場合です。エンジニアリング的に大変なのは、2桁以上台のhdfsクラスタ(DataNode)を使用するような本番環境への導入及び運用(これが出来れば超凄腕ですgeojackass調べによる)と、最近stableになったものの…なんか、数々のライブラリ(KVS,カラムDB含む)との相性と、スタティスティカルな使い方(意味深)です。
環境設定が終わって
http://geojackass.org
• 書籍を含めて資料がほとんど英語しかない。もしくは動物の本… • マニュアル,Wikiに関しては少々日本語がある… Hadoopクラスタの人には、ぜひ頑張って日本語化してもらいたい
• 自称データ○○、自称アナリスト系のフリンジが公開する劣化したコピペ情報が氾濫
• コードも資料もない出来る出来る系詐欺の記事が氾濫
• あの法案… …日本におけるHadoop(というかクラウドとかビッグデータ系)は名前の浸透度や先行イメージと反比例する形で、環境が劣悪なことに気づく。でも、転んでも泣かない…
1.はじめに
2.BigData(ex, GCOM-W1/AMSR2)事始
3.Hadoop簡易環境構築
4.PigQLのsample 5.HadoopPig実戦投入
6.終わりに
http://geojackass.org
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でゴリ押しするのが一番パワフルだと思います。
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
1.はじめに
2.BigData(ex, GCOM-W1/AMSR2)事始
3.Hadoop簡易環境構築
4.PigQLのsample
5.HadoopPig実戦投入 6.終わりに
http://geojackass.org
HadoopPigを起動する
http://geojackass.org
コンソールlogが大量のエラーを吐いているように見えていますが、これで正常です。 惑わされずに、Success!と表示されているのが確認できれば問題ありません。失敗する場合はFailedと表示されます。これは本番環境でターミナルからコマンド発行しても、PigQLを読ませても同様です。
HadoopPigを起動する movie
http://geojackass.org
どうも静止画だとHadoopの挙動がどういうものなのか分かりにくい方のためにキャプチャ動画撮りました。ディレクターズカット(という名の何も編集してない)映像で御覧ください。
http://www.youtube.com/watch?v=6zSkCaQ6vWI
処理完了後のデータ…
http://geojackass.org
1.はじめに
2.BigData(ex, GCOM-W1/AMSR2)事始
3.Hadoop簡易環境構築
4.PigQLのsample
5.HadoopPig実戦投入
6.終わりに
http://geojackass.org
で、Hadoopって??
http://geojackass.org
• Hadoopはエクセルの関数みたいなデータ演算・処理が得意です…多分
• HadoopはファイルI/Oが激遅いです。これは基本的にDataNodeの3重冗長仕様によるものです…おそらく
• ちょっとしたデータ処理ならpython等のスクリプト系言語に軍配…きっと
• 処理フロー、論理モデルを作成するのが大変…これだけはガチ
***良く言えば*** • 可能な操作が単純なことばかりなので、ロジックの追認が容易 • ビジュアライゼーションや解析の下準備として、データの整形など
を行うミドルウェアとして最適 • ビッグデータの処理時間比で、ファイルI/Oは十分に無視できる • ビッグデータを処理する場合でもQLの可読性が高い(Javaネイティ
ブを除く…私見です) • ライブラリが充実しているので、機能拡張自体は容易 • Hadoopを使った満足感…Priceless
参考データ、書籍、資料、引用元一覧
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