SlideShare a Scribd company logo
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
ビッグデータ講義
神戸大学
まつ本 真佑
佐伯 幸郎
柗本 真佑
まつしん
@shinsuke_mat
シュノーケリング
メタル・ロック
プログラミング
まつしん
柗本 真佑
@shinsuke_mat
シュノーケリング
メタル・ロック
プログラミング
2014 @Grand Canyon, US
100GBのデータあるけど
明日までに分析できるよね
AWS使って
やっときます
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 5
 ビッグデータの処理方法を修得する
 Hadoop/MapReduceプログラミング
 分散処理の基礎
• 集計等
• 機械学習
• 統計処理
• ・・・
 AWSを使ったHadoop環境立ち上げ
 MRの投入
講義の目標
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 6
 アルゴリズム系講義
 MR座学 → MRゲーム & 思考 → MRプログラミング
 プログラミングは本質ではない
 プログラムはアルゴリズムを表現する方法の一つ
 まずはMapReduceアルゴリズムを理解することが重要
 教え合い歓迎,教員へのヘルプも歓迎
 Tryチームビルディング
 TAをこき使ってください
 3コマでおもろい・おいしい部分だけを教えます
留意点
 ビッグデータ
ビッグデータの定義
事例紹介
 Hadoop/MapReduce
誕生の背景
Hadoop概要
MapReduce概要
MapReduceゲーム 演
POSデータマイニング 演
EMRトライアル 演
 重要なこと諸々
 ビッグデータ
ビッグデータの定義
事例紹介
 Hadoop/MapReduce
誕生の背景
Hadoop概要
MapReduce概要
MapReduceゲーム 演
POSデータマイニング 演
EMRトライアル 演
 重要なこと諸々
Big Data?
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 11
ビッグデータ = 3Vを満たすデータのこと
Volume (量) Variety (種類) Velocity (速度)
t
t
Big Data (3V)
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 12
 Amazon
 大量の購入履歴・閲覧履歴を使った宣伝 (推薦システム)
 国土交通省
 橋に大量のセンサーを設置
• ひずみ,振動,劣化状況…
 交通インフラの老朽化を迅速に察知
ビッグデータの活用事例 1/2
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 13
 貧乏&弱小球団 アスレチックス
 データに基づくチーム作成
• 選手の能力をデータ化,コスパの良い選手をスカウト
 経験や勘によるバイアスを完全に排除
• 才能がある,今後伸びる,フォームが悪い
 オバマ大統領
 データに基づく選挙キャンペーン
• 「オバマだけど質問ある?」 @Reddit
ビッグデータの活用事例 2/2
* http://www.reddit.com/comments/z1c9z
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 14
 3Vを満たすデータ
 データを計測して分析し,そこから価値を生む行為
 意味のない議論
 何GBあれば/何種類あればビッグデータなのか?
 基本はデータ計測とデータマイニング
 巨大になりがちなので工夫が必須
意味の変わりつつある 「ビッグデータ」
講義のポイント
対象
データを活用した取り組み
 ビッグデータ
ビッグデータの定義
事例紹介
 Hadoop/MapReduce
誕生の背景
Hadoop概要
MapReduce概要
MapReduceゲーム 演
POSデータマイニング 演
EMRトライアル 演
 重要なこと諸々
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 16
何でもデータ化できる時代
メール
GPS
温度
湿度
加速度
会員情報
アクセスログ
サービス利用状況
card
電子マネー履歴
POS履歴
つぶやき
写真
動画
交通状況
道路状況
橋の状態
DaaS起動時間
学習状況
受講アンケート
コミットログ
開発進捗状況
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 17
 ストレージの低価格化・大容量化
 NoSQLの登場
 RDBは高機能なクエリ言語(SQL)を持つが大量データに弱い
 SQLやDBとしての厳格さを捨てる代わりに高速化・大規模化
何でも蓄積できる時代
$0.01
$1.00
$100.00
$10,000.00
$1,000,000.00
1970 1980 1990 2000 2010 2020
1GB当たりのHDDの値段*
¥5¥1,000,000
* http://www.statisticbrain.com/average-cost-of-hard-drive-storage/
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 18
 蓄えたデータをどう処理するか?
どう処理するか?
generating storing mining
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 19
 検索エンジンは正にビッグデータ処理
Googleの場合
web pages indexweb
crawling
indexing/
page ranking
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 21
 検索エンジンは正にビッグデータ処理
Googleの場合
20,000,000,000,000,000 bytes / day !*
20PB.1台のHDD (SATA3接続) だと読み込みだけで400日弱
web pages indexweb
crawling
indexing/
page ranking
20PBを
どう処理するか?
* J. Dean and S. Ghemawat, MapReduce: simplified data processing on large clusters, Comm. ACM, vol.51, no.1, pp107-113, 2008
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 22
 100台で処理すれば100倍の速度!
 複数マシンで分散処理すればよい
分散しよう
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 23
 100台で処理すれば100倍の速度!
 複数マシンで分散処理すればよい
• 複数台並べて高速化
• マシンの性能を上げて高速化
分散しよう
世の中の潮流はこっち
スケールアウト
スケールアップ (補足)
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 24
 分散環境の管理
 障害をどう検知するか?
 ファイルをどう分散配置するか?
 タスクをどうスケジューリングするか?
 プログラムの開発
 データのどこからどこまでをどのワーカが担当するか?
 ワーカの同期をどうするか?
 処理中にワーカが故障したときにどうするか?
 開発者が処理の本質以外を気にかける必要あり
分散処理は難しい
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 25
 1~10000の総和を並列計算するプログラム
(参考) FortranとMPIによる分散処理
program sumn
use mpi
implicit none
integer :: n,i,istart,iend,isum,isum1
integer :: nprocs,myrank,ierr
call mpi_init(ierr)
call mpi_comm_size(MPI_COMM_WORLD,nprocs,ierr)
call mpi_comm_rank(MPI_COMM_WORLD,myrank,ierr)
if (myrank==0) n=10000
call mpi_bcast(n,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr)
istart=n*myrank/nprocs+1
iend=n*(myrank+1)/nprocs
isum=0
do i=istart, iend
isum=isum+i
end do
call mpi_reduce(isum,isum1,1,MPI_INTEGER,MPI_SUM,0,MPI_COMM_WORLD,ierr)
if (myrank==0) print *, 'sum =', isum1
call mpi_finalize(ierr)
end program sumn
本質
データのどこからどこまでを
だれが担当するかを決める
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 26
 大規模データの分散処理フレームワーク
 =MapReduceを実行するためのフレームワーク
 分散処理の難しさを軽減してくれる
 開発者を処理の本質に集中させる
 手軽でオープンな分散処理環境
 高い実績
 Yahoo!, Facebook, IBM, Last.fm, ・・・
 2つの主要コンポーネント
 HDFS & MapReduce
Hadoop
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 27
 HDFSでデータを分散配置
 MapReduceでデータを分散処理
Hadoop全体像
Map Reduce
Map Reduce
Map Reduce
Map Reduce
Map Reduce
Shuffle
データ
結果
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 28
 HDFSでデータを分散配置
 MapReduceでデータを分散処理
Hadoop全体像
Map Reduce
Map Reduce
Map Reduce
Map Reduce
Map Reduce
Shuffle
データ
結果
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 29
 HDFSでデータを分散配置
 MapReduceでデータを分散処理
Hadoop全体像
Map Reduce
Map Reduce
Map Reduce
Map Reduce
Map Reduce
Shuffle
データ
結果
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 30
 分散データを処理するプログラミングモデル
 開発者は Mapper と Reducer を定義するだけでよい
 全てのワーカで同じMapperとReducerが実行される
 MapperとReducer
• KeyとValueを受け取り,複数のKey’とValue’のペアを出力する関数
 単純で汎用的
 MとRだけで分散処理を実現
 複雑な処理をしたい場合は? → MRを複数組み合わせる
MapReduce
map(key, value) → [{key’, value’}]
reduce(key, value) → [{key’, value’}]
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 31
MapReduceの流れ (ワードカウントの場合)
 説明題材
 テキストデータのワードカウント (単語の数え上げ) をする
dog dog
dog cat
dog cat
pig fox
{dog, 4}
{cat, 2}
{pig, 1}
{fox, 1}
Hadoop
(MapReduce)
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 32
MapReduceの流れ (ワードカウントの場合)
dog dog
dog cat
{dog, 1}
dog cat
fox pig
{dog, 1}
{dog, 1}
{cat, 1}
{dog,
[1,1,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 33
MapReduceの流れ (ワードカウントの場合)
dog dog
dog cat
{dog, 1}
dog cat
fox pig
{dog, 1}
{dog, 1}
{cat, 1}
{dog,
[1,1,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
HDFSがデータを分散配置
(ワーカー2台)
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 34
MapReduceの流れ (ワードカウントの場合)
dog dog
dog cat
{dog, 1}
dog cat
fox pig
{dog, 1}
{dog, 1}
{cat, 1}
{dog,
[1,1,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
key value
入力={バイト数, テキスト1行} 出力={単語, 1}
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 35
MapReduceの流れ (ワードカウントの場合)
dog dog
dog cat
{dog, 1}
dog cat
fox pig
{dog, 1}
{dog, 1}
{cat, 1}
{dog,
[1,1,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
key value
入力={バイト数, テキスト1行}
Map(String key, String value)
for each word w in value
emit(w, 1);
出力={単語, 1}
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 36
MapReduceの流れ (ワードカウントの場合)
dog dog
dog cat
{dog, 1}
dog cat
fox pig
{dog, 1}
{dog, 1}
{cat, 1}
{dog,
[1,1,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
同じKeyのデータが
まとめられる
(Shuffle)
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 37
MapReduceの流れ (ワードカウントの場合)
dog dog
dog cat
{dog, 1}
dog cat
fox pig
{dog, 1}
{dog, 1}
{cat, 1}
{dog,
[1,1,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
同じKeyのデータが
まとめられる
Shuffle(String key, String value)
定義いらず
(Shuffle)
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 38
MapReduceの流れ (ワードカウントの場合)
dog dog
dog cat
{dog, 1}
dog cat
fox pig
{dog, 1}
{dog, 1}
{cat, 1}
{dog,
[1,1,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
出力={単語, 出現回数}
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 39
MapReduceの流れ (ワードカウントの場合)
dog dog
dog cat
{dog, 1}
dog cat
fox pig
{dog, 1}
{dog, 1}
{cat, 1}
{dog,
[1,1,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
出力={単語, 出現回数}
Reduce(String key, Iterator values)
sum = 0;
for each v in values
sum += v; //sum += 1 でも同じ
emit(key, sum)
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 40
別解を考える
dog dog
dog cat
{dog, 1}
dog cat
fox pig
{dog, 1}
{dog, 1}
{cat, 1}
{dog,
[1,1,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 41
別解を考える
dog dog
dog cat
{dog, 2}
dog cat
fox pig
{dog, 1}
{cat, 1}
{dog,
[2,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 42
別解を考える
dog dog
dog cat
{dog, 2}
dog cat
fox pig
{dog, 1}
{cat, 1}
{dog,
[2,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
Map(String key, String value)
for each word w in value
hash[w]++;
for each key w in hash
emit(w, hash[w]);
Map(String key, String value)
for each word w in value
emit(w, 1);
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 43
別解を考える
dog dog
dog cat
{dog, 2}
dog cat
fox pig
{dog, 1}
{cat, 1}
{dog,
[2,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
Map(String key, String value)
for each word w in value
hash[w]++;
for each key w in hash
emit(w, hash[w]);
Map(String key, String value)
for each word w in value
emit(w, 1);
・ コード複雑さ: M ↑ R -
・ 処理速度: M ↓ R ↑
・ 通信量: 削減
・ MでOutOfMemoryErrorの恐れあり
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 44
さらに別解を考える
dog dog
dog cat
{dog, 1}
dog cat
fox pig
{dog, 1}
{dog, 1}
{cat, 1}
{dog,
[1,1,1,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 45
さらに別解を考える
dog dog
dog cat
dog cat
fox pig
{dog, 3}
{cat, 1}
{dog,
[3,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 46
さらに別解を考える
dog dog
dog cat
dog cat
fox pig
{dog, 3}
{cat, 1}
{dog,
[3,1]}
{dog, 1}
{cat, 1}
{pig, 1}
{fox, 1}
{cat, [1,1]}
{dog, 4}
S
{0, dog dog}
{16, dog cat}
{8, dog cat}
{24, pig fox}
{pig, [1]}
{fox, [1]}
{cat, 2}
{pig, 1}
{fox, 1}
M R
dog dog
dog cat
dog cat
pig fox
複数の{key, value}を
またがった処理はひとまず禁止
(実際は可能,後述)
 ビッグデータ
ビッグデータの定義
事例紹介
 Hadoop/MapReduce
誕生の背景
Hadoop概要
MapReduce概要
MapReduceゲーム 演
POSデータマイニング 演
EMRトライアル 演
 重要なこと諸々
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 48
 トランプの記号ごとの出現回数を数えよう
 意味づけ
演習1: MapReduceゲームクソゲー
♥ 30
♦ 42
♣ 38
♠ 20
♥♠♥♠◎♠♠♥☂◎♥♠☆♥☆♥
◎☂♣♣☆♣♥♪♣♥♣☆♣♪♣♣♥♥♥
♪☂☂♣☂◎☂◎◎♦♪♣♪☂♪♪◎♣
・・・
処理対象のデータ 結果
♥4 {♥, 4}
演
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 49
 Hadoop環境のセットアップ
 HDFSのリーダー (NameNode) を決める
 全ワーカーにIDを降る (1~6)
ステップ0. 準備
1 2 3 4 5 6
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 50
 Hadoopへのデータ投入
 Hadoop利用者がNameNodeへデータを投入する
 NameNodeはデータを分割して振り分ける
• 4行ずつ分割.上から順にワーカ1から6に振り分ける
• 余りもワーカ1から順に渡す
ステップ0. 準備
♥♠♥♠◎♠♠♥☂◎♥♠☆♥☆♥
◎☂♣♣☆♣♥♪♣♥♣☆♣♪♣♣♥♥♥
♪☂☂♣☂◎☂◎◎♦♪♣♪☂♪♪◎♣
♣◎♣♦♦♦♦♣♪♣♣♦♣☆♪☆☆☆♣◎♣♣
☆◎☂◎☂☆☆☆☂◎☆☆♪◎☂☂♪☂☆
♦♦◎♦◎♦☂♦◎☆☆◎◎♪♦♦
♪♪☂♣♣◎☆☂♪♪♣☆☂♣☂◎♪♣☂☆♣
☂◎♥☆☂◎♥◎☆☂☂♪☂☂♥☂☂
♦♦♦♦☂◎♪♪◎☆♦☆☂☂♪♦
1
2
3
♥♠♥♠◎♠♠♥☂◎♥♠☆♥☆♥
◎☂♣♣☆♣♥♪♣♥♣☆♣♪♣♣♥♥♥
♪☂☂♣☂◎☂◎◎♦♪♣♪☂♪♪◎♣
♣◎♣♦♦♦♦♣♪♣♣♦♣☆♪☆☆☆♣◎♣♣
☆◎☂◎☂☆☆☆☂◎☆☆♪◎☂☂♪☂☆
♦♦◎♦◎♦☂♦◎☆☆◎◎♪♦♦
♪♪☂♣♣◎☆☂♪♪♣☆☂♣☂◎♪♣☂☆♣
☂◎♥☆☂◎♥◎☆☂☂♪☂☂♥☂☂
♦♦♦♦☂◎♪♪◎☆♦☆☂☂♪♦
♪☂♣♥☂♣♥♥♥♥♣☆♣♣♥♥♥♥
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 51
 全ワーカはMapperを実行する
 上から順に一行ずつMap処理すること
 処理結果はトランプのカード で表すこと
 処理結果は手元に
ステップ1. Mapフェーズ
♥♠♥♠◎♠♠♥☂◎♥♠☆♥☆♥
◎☂♣♣☆♣♥♪♣♥♣☆♣♪♣♣♥♥♥
♪☂☂♣☂◎☂◎◎♦♪♣♪☂♪♪◎♣
♥6 ♠5
♥5 ♣8
♦1 ♣3
♦4♦4♦4
Map(String key, String value)
for each suit w in value
if(!isSuit(w)) continue;
hash[w]++;
for each key w in hash
emit(w, hash[w]);
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 52
 同一Keyをまとめる
 データを交換する
 交換ルール: ♥ワーカ2 ♦ワーカ5 ♠ワーカ3 ♣ワーカ4
ステップ2. Shuffleフェーズ
♥4 ♠5
♦1 ♣3
♥J ♠3
♦9 ♣3
2
♥4
♥4♥4♥4♥4♥4♥4♥4♠5♥4♥4
♥6 ♥3 ♠1
♥4 ♥J
♥6 ♥3
♥1
♥8 ♥J
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 53
 手持ちのデータの総和を計算する
ステップ3. Reduceフェーズ
2
♥4♥4♥4♥4♥4♥4♥4♥4
♥=30
Reduce(String key, Iterator values)
sum = 0;
for each v in values
sum += v;
emit(key, sum)
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 54
MapReduceゲームの流れ (再確認)
{♥, 30}
{0, ♥♠♥♠◎}
{16, ♣◎♣♥♥}
{8, ◎☂♣♣☆}
{24, ☆◎☂◎☂}
M R
♥♠♥♠◎
◎☂♣♣☆
♪☂☂♣☂
♥♠♥♠◎
◎☂♣♣☆
♪☂☂♣☂
♣◎♣♥♥
☆◎☂◎☂
♦♦◎♦◎
♪♪☂♣♣
☂◎♥☆☂
♦♦♦♦☂
♪☂♣♥☂
♣◎♣♥♥
☆◎☂◎☂
♦♦◎♦◎
♥2
♠2
♣2
♥2♥2♥2♥2
♣2♣2♣2♣2 {♣, 30}
♥2
♣2
S
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 55
 以下のMRアルゴリズムを考えよう
 トランプの記号ごとの出現回数をカウントする (MRゲームと同じ)
 ただし,偶数行と奇数行ごとにカウントすること
• データには行番号が記述されているものとする
演習2: MRアルゴリズムを考えよう
1 ♥♠♥♠◎♠♠♥☂◎♥♠☆♥☆♥
2 ◎☂♣♣☆♣♥♪♣♥♣☆♣♪♣♣♥♥♥
3 ♪☂☂♣☂◎☂◎◎♦♪♣♪☂♪♪◎♣
4 ・・・
偶数行 奇数行
♥ 9 8
♦ 13 9
♣ 5 16
♠ 2 15
演
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 56
 以下処理フローの を埋めてみよう
考え方
M
R
S
{ , }
{ , }
{ , }
{ , }
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 57
 MRゲームの場合
例
M
R
S
{ , }
♥ [2,3,5,1]
記号 [出現回数]
{ , }
♥ 2
♠ 2
記号 出現回数
{ , }
♥ 11
記号 総数
{ , }
0 ♥♠♥♠◎☆
バイト数 テキスト
記号4種類をそれぞれ数える
記号ごとに回数をemitする
総和を取って記号と共に
emitする
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 58
演習2: 回答a
{ , }
♥奇 [2,3,5,1]
記号+偶奇 [出現回数]
{ , }
♥奇 2
♠奇 2
記号+偶奇 出現回数
{ , }
♥奇 11
記号+偶奇 総数
{ , }
0 ♥♠♥♠◎☆
バイト数 テキスト
Map(String key, String value)
if (value[0] % 2 == 0)
label = “偶”;
else
label = “奇”;
for each suit w in value
hash[w]++;
for each key w in hash
emit(w + label, hash[w]);
{♥偶, 2} (Mapperの出力より)
パターン名 答
M
R
S
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 59
演習2: 回答b
{ , }
♥奇 [1,1,1,1,1,1]
記号+偶奇 [出現回数]
{ , }
♥奇 1
♥奇 1
♠奇 1
記号+偶奇 出現回数
{ , }
♥奇 11
記号+偶奇 総数
{ , }
0 ♥♠♥♠◎☆
バイト数 テキスト
Map(String key, String value)
if (value[0] % 2 == 0)
label = “偶”;
else
label = “奇”;
for each key w in value
emit(w + label, 1);
{♥偶, 1}
パターン名 答
M
R
S
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 60
演習2: 回答c
M
R
S
{ , }
♥ [奇,奇,奇,偶]
記号 [偶奇]
{ , }
♥ 奇
♠ 奇
記号 偶奇
{ , }
♥奇 11
♥偶 4
記号+偶奇 総数
{ , }
0 ♥♠♥♠◎☆
バイト数 テキスト
Map(String key, String value)
if (value[0] % 2 == 0)
label = “偶”;
else
label = “奇”;
for each suit w in value
emit(label, w);
答
{♥, 奇}
パターン名
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 61
演習2: 回答c
M
R
S
{ , }
奇 [♥,♠,♥,...]
偶数 [出現回数]
{ , }
奇 ♥
奇 ♠
偶奇 記号
{ , }
♥奇 11
♠奇 2
記号+偶奇 総数
{ , }
0 ♥♠♥♠◎☆
バイト数 テキスト
Map(String key, String value)
if (value[0] % 2 == 0)
label = “偶”;
else
label = “奇”;
for each suit w in value
emit(w, label);
答
{奇, ♥}
パターン名
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 62
 回答a, b, c, dの違いを考えよう
 回答a
 回答b
 回答c
 回答d
 考えるポイント (一例)
 MapとReduceそれぞれについて
• プログラミングの難しさは?
• 処理の分散効率は?
 Shuffleで発生する通信量は?
 ・・・
演習3: さらに考えてみよう
{♥偶, 2}
{♥, 偶}
{偶, ♥}
演
{♥偶, 1}
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 63
 mapper実装難度 b = c = d < a
 mapper速度 b = c = d > a
 shuffle通信量 a < b = c = d
 reducer実装難度 a = b = c = d
 reducer並列化効率 a = b > c > d
理由: reducerに渡るKeyの種類
 a = 8 (スーツ4 x 偶奇2)
 b = 8 (スーツ4 x 偶奇2)
 c = 4 (スーツ4)
 d = 2 (偶奇2)
演習3: 回答
{♥偶, 2}
{♥, 偶}
{偶, ♥}
{♥偶, 1}
回答a
回答b
回答c
回答d
答
badgood
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 64
 日別のおにぎりの売上額を求めるMRを考えよう
演習4: POSデータ処理を考えよう
レシートID yyyy mm dd 商品名 分類名 個数 値段
123456 2014 9 1梅おにぎり おにぎり 2 105
123456 2014 9 1六甲の水 飲料水 4 130
123456 2014 9 1歯ブラシ 日用品 1 298
222222 2014 9 1メロンパン 菓子パン 1 105
222222 2014 9 1無糖ブラック 飲料水 1 90
990777 2014 9 2明太子おにぎり おにぎり 3 105
990777 2014 9 2コーラ 飲料水 1 130
693200 2014 9 3大阪の水 飲料水 1 105
693200 2014 9 3サンドイッチ 菓子パン 1 390
レシート
演
20140901 2
20140902 3
入力データ
結果
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 65
演習4: 回答
M
R
S
{ , }
20140901 [380,420,・・・]
日付 [売上げ数]
{ , }
20140901 380
日付 売上げ額
{ , }
20140901 51000
記号+偶奇 総数
{ , }
0 123,2014,9,1・・・
バイト数 テキスト
・ 分類名 != おにぎりなら終了
・ yyyymmddの文字列を作る
・ emit(yyyymmdd, 個数*値段)
答
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 66
 説明題材
 全おにぎりの販売個数カウント
 example.OnigiriCountクラス
 実装するメソッドは3つ
JavaでMapReduceを実装する
OnigiriCount.java
main()
map()
reduce()
M
R
S
{ , }
onigiri [2,3,1,1,・・・]
onigiri [販売個数]
{ , }
onigiri 2
onigiri 販売個数
{ , }
onigiri 300
onigiri 総数
{ , }
0 123,2014,9,1・・・
バイト数 テキスト
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 67
public static void main(String[] args) throws ... {
// MapperクラスとReducerクラスを指定
Job job = new Job(new Configuration());
job.setJarByClass(OnigiriCount.class); // ★このファイルのメインクラスの名前
job.setMapperClass(MyMapper.class);
job.setReducerClass(MyReducer.class);
job.setJobName("2014901"); // ★自分の学籍番号
// 入出力フォーマットをテキストに指定
job.setInputFormatClass(TextInputFormat.class);
...
// 入出力ファイルを指定
String inputpath = "posdata";
String outputpath = "out/onigiriCount"; // ★MRの出力先
...
}
main関数
OnigiriCount.java
main()
map()
reduce()
MR実行のための準備を行うmain関数
★の部分3行だけ変更すればよい
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 68
map関数
public static class MyMapper extends Mapper<LongWritable, Text, CSKV, CSKV> {
protected void map(LongWritable key, Text value, Context context) ... {
// csvファイルをカンマで分割して,配列に格納する
String csv[] = value.toString().split(",");
// おにぎりでないレシートは無視
if (csv[PosUtils.ITEM_CATEGORY_NAME].equals("おにぎり・おむすび") == false) {
return;
}
// valueとなる販売個数を取得
String count = csv[PosUtils.ITEM_COUNT];
// emitする (emitデータはCSKVオブジェクトに変換すること)
context.write(new CSKV("onigiri"), new CSKV(count));
}
}
▲ csvデータの列番号はPosUtilsにセット済み
例:年度の列を取り出す場合は csv[PosUtils.YEAR]
▲ emitする
データはCSKVオブジェクトに変換すること
おにぎりの総売上計算なのでKeyは常に同じもの
OnigiriCount.java
main()
map()
reduce()
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 69
reduce関数
public static class MyReducer extends Reducer<CSKV, CSKV, CSKV, CSKV> {
protected void reduce(CSKV key, Iterable<CSKV> values, ...) {
// 売り上げを合計
int count = 0;
for (CSKV value : values) {
count += value.toInt();
}
// emit
context.write(key, new CSKV(count));
}
}
▲ valuesの総和を取る
OnigiriCount.java
main()
map()
reduce()
▲ mapperと同様CSKVオブジェクトでemit
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 70
 emitのKeyとValueを表す汎用オブジェクト
 開発を容易にするためのCloudSpiral特化のオブジェクト
 CloudSpiral-KeyValueの略
• 一般的ではないことに注意
CSKVオブジェクト
M
S
{ , }
onigiri 2
onigiri 販売個数
{ , }
0 123,2014,9,1・・・
バイト数 テキスト
CSKV CSKV
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 71
 CSKVへの変換
 int → CSKV: cskv = new CSKV(i);
 long → CSKV: cskv = new CSKV(l);
 double → CSKV: cskv = new CSKV(d);
 String → CSKV: cskv = new CSKV(s);
 CSKVからの変換
 CSKV → int: i = cskv.toInt();
 CSKV → long: l = cskv.toLong();
 CSKV → double: d = cskv.toDouble();
 CSKV → String: s = cskv.toString();
型変換 (参考資料)
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 72
 Stringへの変換
 int → String: str = String.valueOf(i);
 long → String: str = String.valueOf(l);
 double → String: str = String.valueOf(d);
 Stringからの変換
 String → int: i = Integer.parseInt(str);
 String → long: l = Long.parseLong(str);
 String → double: d = Double.parseDouble(str);
型変換 (参考資料)
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 73
 演習4 (日別おにぎり売り上げ) をJavaで実装しよう
 Eclipseを起動
C:¥pbl¥eclipse.lnk
 ひな形プロジェクトをSVNからチェックアウト
http://192.168.100.10/svn/20140xx/bigdata
 OnigiriSalesByDate.java を開発する
• posmining.enshu パッケージを使うこと
• posmining.example.OnigiriCount.java をベースにして良い
演習5: Javaで実装しよう
演
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 74
 種類別のおにぎりの売り上げ数を数えよう
 Q. 梅と昆布どっちが売れているか?
 Q. イロモノおにぎりの売れ行きは?
• うにめし,うなぎおむすび,・・・
 ヒント: 梅っぽい商品名の判定方法
演習6: POSデータの処理+
演
// itemNameのどこかに "梅" か "うめ" が入っていれば
if (itemName.matches(".*(梅|(うめ)).*")) {
...
}
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 75
 男女別の平均購入金額の計算方法を考えよう
 男性:xxx円 女性:yyy円
 仮説も立てよう
 どっちが多いか?
 それぞれいくらくらいか?
 ただし今までのMRでは計算できない
 なぜできないのか?
 どうすればできるようになるか?
 本当に不可能か?
演習7: POSデータの処理++
演
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 76
 なぜ計算できないのか?
 Shuffleフェーズでのデータ交換=
 M→S→R では1つのKeyしか集約できない
 どうすればできるか?(=どこでもう1回集約するか)
 案1: MRを2回やる (多段MR)
 案2: Reducerで一度集約する (今までのやり方でも実装可能)
 案3: Mapperで一度集約する (in-mapper combining)
P.43 「行をまたいだ処理は禁止」と説明した部分
 案4: MR+Excelで処理する
演習7: 回答
集約すべきKeyが2種類あるから (レシートID & 性別)
集約
答
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 77
案1: 多段MR 1段目
M
R
S
{ , }
123 [“男,380”, “男,105”]
333 [“女,98”, “女,280”]
555 [“男,900”]
レシートID [性別,金額]
{ , }
123 男,380
レシートID 性別,金額
{ , }
男 485
女 378
男 900
性別 合計金額
{ , }
0 123,2014,9,1・・・
バイト数 テキスト
・ 値段*個数を売り上げとする
・ 性別と売り上げをカンマで繋
いだ文字列を作り,Valueとし
てemit
・ valueをカンマで分割し性別と
売り上げを取り出す
・ 売り上げの総和を取る
・ 性別をKey,総和をValueとして
emit
答
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 78
案1: 多段MR 2段目
M
R
S
{ , }
男 [485, 900, ・・・]
女 [378, 280, ・・・]
性別 [合計金額]
{ , }
男 485
女 378
性別 合計金額
{ , }
男 510
女 500
性別 平均
{ , }
0 男 485
11 女 378
39 男 900
バイト数 テキスト
・ {性別, 金額} をemit
・ 平均を計算してemit
答
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 79
 男女別の平均購入金額を多段MRで処理しよう
 2つのjavaを実装する
 1段目 AveragePaymentBySex_1st.java
 2段目 AveragePaymentBySex_2nd.java
 各フォルダの指定
 1段目
• 入力フォルダ: “posdata” 出力フォルダ: “paymentBySex”
 2段目
• 入力フォルダ: “paymentBySex” 出力フォルダ: “avgPaymentBySex”
演習8: 多段MR
演
同一にすること
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 80
 案2を実装しよう
 かなり難しいが今までの知識で実装可能
 計算効率はどうか?
 OutOfMemoryExceptionは発生しないか?
 ヒント: Mapperの出力
演習9: Reducerでの集約パターン
演
{ , }
男 123,380
男 123,105
女 333,98
女 333,105
男 555,900
性別 レシートID,値段
"男"をKeyとしたmap結果が
一台のワーカに集約される
Big Dataの
価値?
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 82
 EMR: Elastic MapReduce
 Amazonの提供するIaaS型のHadoop環境
 = Hadoopインストール済みのAMIを使ったEC2
 グループワーク
 ステップ0: 代表者を決める & USBディスプレイをつなげる
 ステップ1: EMRを立ち上げる
 ステップ2: build.xmlを編集する
 ステップ3: MRを投入する
 ステップ4: 結果を確認する
演習10: AWSでMRを実行しよう
演
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 83
 演習環境 (=開発環境)
環境がどう変わるか?
ローカル
MRコード
POSデータ
実行
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 84
 演習環境 (=開発環境)
 EMR環境 (=ステージング環境)
環境がどう変わるか?
ローカル
MRコード
POSデータ
EMR S3ローカル
実行
転送&実行
MRコード
POSデータ
POSデータ
10年分,4GB
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 85
 AWSログイン
 https://cspiral.signin.aws.amazon.com/console
ステップ1: EMRの立ち上げ
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 86
 Cluster Configuration
 Cluster name → グループ番号 (C0~C9) 入力
 Logging → Enabledを外す
 Software Configuration
 Hadoop distribution → AMI version を 2.4.7 に
 Applications to be installed → Hive, Pig 両方 × を押して消す
 Hardware Configuration
 Network → vpc-9150b9f4
 EC2 Subnet → subnet-b99e9eff
 Master → c1.medium Core → c1.medium
ステップ1: EMRの立ち上げ
間違えないこと
間違えないこと
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 87
 Security And Access
 EC2 key pair → CloudSpiral_Key を選択
 Create Clusterを押す
ステップ1: EMRの立ち上げ
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 88
 立ち上がるのを待つ
ステップ1: EMRの立ち上げ
EMRのDNS名 (どこかにメモしておくこと)
WaitingになればOK
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 89
 build.xmlでやっていること
 ソースをコンパイルする
 jarに固めてEMRに転送(scp)する
 SSHでEMRにログインし,HadoopコマンドでMRを実行する
ステップ2: build.xmlの編集
EMR S3ローカル
転送&実行
MRコード
POSデータ
POSデータ
10年分,4GB
この部分
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 90
 build-common.xml
 Hadoop接続先のサーバ名を変更する
 build.xml
 タスクを追加する
ステップ2: build.xmlの編集
<property name="ssh.server" value="ec2-...compute.amazonaws.com" />
<property name="ssh.user" value="hadoop" />
<property name="ssh.pass" value="" />
<!-- おにぎり総数 -->
<target name="run.OnigiriCount" depends="prepare">
<sshexec host="${ssh.server}" username="${ssh.user}" keyfile=...
command="hadoop jar main.jar posmining.example.OnigiriCount s3://..."
/>
</target>
▲
立ち上げたEMRの
DNS名に変更
実行するMRクラス ▲
▼ タスク名.“run.実行MRクラス名” が分かりやすい
MRの入力データを指定▲
s3://cspiral-posdata/
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 91
ステップ3: MRを投入する
run.xxx を
指定して実行
実行中にステップ3-4を試す →
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 92
 PacketiXよりVPN設定 (次のステップ5~7に必須)
ステップ4: VPN設定 & 接続
ホスト名: 54.64.84.176
仮想HUB名: VPN
ユーザ名: student
パスワード:
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 93
 ブラウザから http://DNS名:9100 にアクセス
 MapReduce関係の情報を確認できる
ステップ5: MRの実行過程を見る
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 94
ステップ6: 入力データを確認する
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 95
 ブラウザから http://DNS名:9101 にアクセス
 HDFS関係の情報を確認できる (MRの出力結果もここから)
ステップ7: 結果を取得する
"Browse the filesystem"
のリンクから
→ /user/hadoop/out/
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 96
 自由に触ってみよう
 別の自作MRを投入する
• ちゃんと動くか?
• 実行時間は?処理結果は?
 HadoopのWebコンソールを読み解く
• http://DNS名:9100
• http://DNS名:9101
 立ち上げたEMR環境がEC2側からどう見えるか?
• 3台構成のEMR = 3台のEC2インスタンス
 EMRワーカ数の変更は禁止
 次の講義でやります
自由時間
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 97
 男女平均の結果がマイナスになる
 → int でビッグデータの集計できますか?
 INT_MAX=21億
 本当にそこで平均計算必要ですか?
 出力はこっちの方が役立ちませんか?
• {key=性別, value="合計金額,合計レシート枚数"}
 中間処理としてのHadoop/MapReduceの使い方
 案2でOutOfMemoryError
 → 連想配列巨大すぎませんか?
 案2はビッグデータの処理方法として適切ですか?
演習後のいろいろ
 ビッグデータ
ビッグデータの定義
事例紹介
 Hadoop/MapReduce
誕生の背景
Hadoop概要
MapReduce概要
MapReduceゲーム 演
POSデータマイニング 演
EMRトライアル 演
 重要なこと諸々
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 99
 集計
 合計,平均,分散,集約,・・・
 機械学習
 クラスタリング分析,ニューラルネット・・・
 自然言語処理
 構文解析,形態素解析,係り受け解析,・・・
 画像処理
 ・・・
Hadoopでできる処理
今日の講義
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 100
できること
(得意なこと)
できないこと
(苦手なこと)
バッチ処理 リアルタイム処理
大規模データの処理 小規模データの処理
(オーバーヘッドが大きい)
データが多い処理
(ログ解析など)
計算が多い処理
(科学計算など)
分割できる処理 分割できない処理
(グラフ構造のデータなど)
データ処理基盤としての利用 データベースとしての利用
(単一故障点がある)
構造/非構造データの処理
(表形式,画像・動画問わず)
-
Hadoopは万能ではない
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 101
 Hadoopは巨大データ処理方法の一つ
 Hadoopのシェアは大きいが・・・
 巨大なデータを処理できればなんでもよい
 別のアイデアも生まれつつある
• リアルタイムMapReduce (Presto)
• MapReduceを生成するSQLライクな言語 (Pig)
• Hadoop/MapReduceとは全く別の分散処理技術 (Spark)
 「ビッグデータ」 はバズワード臭い
 言葉はなくなるかもしれない
 概念は残る
• 何でもかんでもデータを計測 → ビッグデータ → 発掘
• データに基づく意志決定,ビジネス戦略
重要なこと
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 102
 共通する点
 流行ってる
 名前がふわっとしてる
• 解釈ばらばら,非エンジニア的なネーミングセンス
 たくさんの技術の集合で成り立つ概念
• クラウド: 仮想化,分散システム,SOA,HTTP,REST,…
• ビッグデータ: NoSQL,Hadoop,MapReduce,…
 相性最高
 クラウドで貯めた巨大なデータをHadoopで分析する
 クラウド(IaaS)でHadoop環境を手軽に立ち上げられる
クラウドとビッグデータ
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 103
 でかいことにも価値がある
 データが大きければ単純な集計だけでも有益な結果が得られる
ビッグデータの価値
Volume (量) Variety (種類) Velocity (速度)
t
t
アイデア次第!
つづきはPBLで!
分野・地域を越えた実践的情報教育協働ネットワーク
Cloud Specialist Program Initiative for Reality-based
Advanced Learning
参考資料
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 105
 同時に飲料水を購入した全レシートデータ
 飲料水 ∈ {コーヒー飲料,緑茶飲料,炭酸飲料,清涼飲料,水}
 含まれないレシート
• 「ガムだけを買った」,「雑誌とパンを買った」・・・
 店舗数: 4店舗
 オフィス街1,駅前1,ロードサイド1,住宅街1
 期間: 2003年1月1日~2012年12月31日
 丸9年,月ごとに集計
 計120ファイル,4.22GB
POSデータの概要
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 106
 店舗立地 (オフィス街1,駅前1,ロードサイド1,住宅街1)
 レシート番号(全データに一意なID)
 曜日フラグ (1=月,2=火,3=水,4=木,5=金,6=土,7=日)
 休日フラグ (1=祝日/日曜日)
 購入者性別フラグ (1=男性,2=女性)
 購入者年齢フラグ (1=子供,2=若者,3=大人,4=実年)
 購入商品名
 JANコード http://www.dsri.jp/jan/
 単価
 個数
 値段 (単価 * 個数)
 メーカー名
 分類コード・分類名 (日経商品ディクショナリー)
http://t21help.nikkei.co.jp/reference/docs/POSCodeBook18.pdf
POSデータの属性の意味
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 107
 TeraTerm起動
 C:¥pbl¥ttermpro.lnk
SSHでHadoopを操作
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 108
 認証情報
SSHでHadoopを操作
C:¥pbl¥ssh_key¥
CloudSpiral_Key.pem
passphraseは空
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 109
 SSH接続成功
SSHでHadoopを操作
Cloud Specialist Program Initiative for Reality-based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
© Cloud Spiral partners 2014/5/9 110
 MRの出力結果 (=HDFS) の確認コマンド
 hadoop dfs
 HDFSのファイルリストを取得する
 hadoop dfs -ls /user/hadoop/out/
 hadoop dfs -lsr /user/hadoop/out/
 MRの処理結果を取得する
 hadoop dfs –cat /user/hadoop/out/xxx/
SSHでHadoopを操作
xxxにはMRで指定した
出力フォルダ名を打ち込む

More Related Content

What's hot

JJUG CCC リクルートの Java に対する取り組み
JJUG CCC リクルートの Java に対する取り組みJJUG CCC リクルートの Java に対する取り組み
JJUG CCC リクルートの Java に対する取り組み
Recruit Technologies
 
Building a Flutter Development Environment with VSCode and Useful Extensions
Building a Flutter Development Environment with VSCode and Useful ExtensionsBuilding a Flutter Development Environment with VSCode and Useful Extensions
Building a Flutter Development Environment with VSCode and Useful Extensions
Shotaro Suzuki
 
CloudFront、RedshiftなどAWSが支える動画広告の舞台裏~インフラのイノベーションがもたらす動画広告のイノベーション~
CloudFront、RedshiftなどAWSが支える動画広告の舞台裏~インフラのイノベーションがもたらす動画広告のイノベーション~CloudFront、RedshiftなどAWSが支える動画広告の舞台裏~インフラのイノベーションがもたらす動画広告のイノベーション~
CloudFront、RedshiftなどAWSが支える動画広告の舞台裏~インフラのイノベーションがもたらす動画広告のイノベーション~
Takeshi Yako
 
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Osaka University
 
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例
Recruit Technologies
 
Node.jsStreamについて
Node.jsStreamについてNode.jsStreamについて
Node.jsStreamについて
Recruit Technologies
 
[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発
[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発
[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発
Yuki Ando
 
AWSでのセキュリティ運用 ~ IAM,VPCその他
AWSでのセキュリティ運用 ~IAM,VPCその他AWSでのセキュリティ運用 ~IAM,VPCその他
AWSでのセキュリティ運用 ~ IAM,VPCその他
Recruit Technologies
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
Yuki Ando
 
Struggle against cross-domain data complexity in Recruit group
Struggle against cross-domain data complexity in Recruit groupStruggle against cross-domain data complexity in Recruit group
Struggle against cross-domain data complexity in Recruit group
Recruit Technologies
 
rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法
rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法
rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法
Hiroshi Igaki
 
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」
AINOW
 
『MobageのAnalytics活用したサービス開発』 - データマイニングCROSS2014 #CROSS2014
『MobageのAnalytics活用したサービス開発』 - データマイニングCROSS2014 #CROSS2014『MobageのAnalytics活用したサービス開発』 - データマイニングCROSS2014 #CROSS2014
『MobageのAnalytics活用したサービス開発』 - データマイニングCROSS2014 #CROSS2014
Koichi Hamada
 

What's hot (13)

JJUG CCC リクルートの Java に対する取り組み
JJUG CCC リクルートの Java に対する取り組みJJUG CCC リクルートの Java に対する取り組み
JJUG CCC リクルートの Java に対する取り組み
 
Building a Flutter Development Environment with VSCode and Useful Extensions
Building a Flutter Development Environment with VSCode and Useful ExtensionsBuilding a Flutter Development Environment with VSCode and Useful Extensions
Building a Flutter Development Environment with VSCode and Useful Extensions
 
CloudFront、RedshiftなどAWSが支える動画広告の舞台裏~インフラのイノベーションがもたらす動画広告のイノベーション~
CloudFront、RedshiftなどAWSが支える動画広告の舞台裏~インフラのイノベーションがもたらす動画広告のイノベーション~CloudFront、RedshiftなどAWSが支える動画広告の舞台裏~インフラのイノベーションがもたらす動画広告のイノベーション~
CloudFront、RedshiftなどAWSが支える動画広告の舞台裏~インフラのイノベーションがもたらす動画広告のイノベーション~
 
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
 
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例
 
Node.jsStreamについて
Node.jsStreamについてNode.jsStreamについて
Node.jsStreamについて
 
[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発
[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発
[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発
 
AWSでのセキュリティ運用 ~ IAM,VPCその他
AWSでのセキュリティ運用 ~IAM,VPCその他AWSでのセキュリティ運用 ~IAM,VPCその他
AWSでのセキュリティ運用 ~ IAM,VPCその他
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
Struggle against cross-domain data complexity in Recruit group
Struggle against cross-domain data complexity in Recruit groupStruggle against cross-domain data complexity in Recruit group
Struggle against cross-domain data complexity in Recruit group
 
rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法
rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法
rePiT2015_アジャイルソフトウェア開発教育のためのチケットシステムを用いたプロジェクト定量評価手法
 
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」
 
『MobageのAnalytics活用したサービス開発』 - データマイニングCROSS2014 #CROSS2014
『MobageのAnalytics活用したサービス開発』 - データマイニングCROSS2014 #CROSS2014『MobageのAnalytics活用したサービス開発』 - データマイニングCROSS2014 #CROSS2014
『MobageのAnalytics活用したサービス開発』 - データマイニングCROSS2014 #CROSS2014
 

Similar to CloudSpiral 2014年度 ビッグデータ講義

PBLのためのScrumとチケット駆動開発の融合 ~Scrum+PBL+TiDD~
PBLのためのScrumとチケット駆動開発の融合 ~Scrum+PBL+TiDD~PBLのためのScrumとチケット駆動開発の融合 ~Scrum+PBL+TiDD~
PBLのためのScrumとチケット駆動開発の融合 ~Scrum+PBL+TiDD~
Hiroshi Igaki
 
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送
Google Cloud Platform - Japan
 
Spark MLlibではじめるスケーラブルな機械学習
Spark MLlibではじめるスケーラブルな機械学習Spark MLlibではじめるスケーラブルな機械学習
Spark MLlibではじめるスケーラブルな機械学習
NTT DATA OSS Professional Services
 
Case Study: OLAP usability on Spark and Hadoop
Case Study: OLAP usability on Spark and HadoopCase Study: OLAP usability on Spark and Hadoop
Case Study: OLAP usability on Spark and Hadoop
DataWorks Summit/Hadoop Summit
 
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Insight Technology, Inc.
 
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
Issei Hiraoka
 
CloudSpiral 2014年度 Webアプリ講義(2日目)
CloudSpiral 2014年度 Webアプリ講義(2日目)CloudSpiral 2014年度 Webアプリ講義(2日目)
CloudSpiral 2014年度 Webアプリ講義(2日目)
Shin Matsumoto
 
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張
CData Software Japan
 
Cloud Native and Agile Approach
Cloud Native and Agile ApproachCloud Native and Agile Approach
Cloud Native and Agile Approach
Shinya Yanagihara
 
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
NTT DATA Technology & Innovation
 
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
CData Software Japan
 
[Cloud OnAir] ハイブリッドクラウドと Google Cloud 〜戦略的なクラウド活用を考える〜 2019年2月7日 放送
[Cloud OnAir] ハイブリッドクラウドと Google Cloud 〜戦略的なクラウド活用を考える〜 2019年2月7日 放送[Cloud OnAir] ハイブリッドクラウドと Google Cloud 〜戦略的なクラウド活用を考える〜 2019年2月7日 放送
[Cloud OnAir] ハイブリッドクラウドと Google Cloud 〜戦略的なクラウド活用を考える〜 2019年2月7日 放送
Google Cloud Platform - Japan
 
Cloudera Seminar 2013/04/23
Cloudera Seminar 2013/04/23Cloudera Seminar 2013/04/23
Cloudera Seminar 2013/04/23
Cloudera Japan
 
Intelligent Enterprise 実現に向けた拡張開発の必要性 ~ SAP Cloud Platform Extension Factory ~
Intelligent Enterprise 実現に向けた拡張開発の必要性  ~ SAP Cloud Platform Extension Factory ~Intelligent Enterprise 実現に向けた拡張開発の必要性  ~ SAP Cloud Platform Extension Factory ~
Intelligent Enterprise 実現に向けた拡張開発の必要性 ~ SAP Cloud Platform Extension Factory ~
Kento Yoshimura
 
ビジネスへの本格活用が始まったHadoopの今 ~MapRが選ばれる理由~ - ビッグデータEXPO東京 2014/02/26
ビジネスへの本格活用が始まったHadoopの今 ~MapRが選ばれる理由~ - ビッグデータEXPO東京 2014/02/26ビジネスへの本格活用が始まったHadoopの今 ~MapRが選ばれる理由~ - ビッグデータEXPO東京 2014/02/26
ビジネスへの本格活用が始まったHadoopの今 ~MapRが選ばれる理由~ - ビッグデータEXPO東京 2014/02/26
MapR Technologies Japan
 
Wagby で100+ のクラウドデータに連携するアプリを開発(CData JDBC Drivers)
Wagby で100+ のクラウドデータに連携するアプリを開発(CData JDBC Drivers)Wagby で100+ のクラウドデータに連携するアプリを開発(CData JDBC Drivers)
Wagby で100+ のクラウドデータに連携するアプリを開発(CData JDBC Drivers)
CData Software Japan
 
気象予報データ(数値予報GPV)を用いた データビジュアライゼーション
気象予報データ(数値予報GPV)を用いたデータビジュアライゼーション気象予報データ(数値予報GPV)を用いたデータビジュアライゼーション
気象予報データ(数値予報GPV)を用いた データビジュアライゼーション
Kazuhide Okamura
 
CData General Proposal
CData General ProposalCData General Proposal
CData General Proposal
CData Software Japan
 
第10回okfj オープンデータトークシリーズ 20140830 公開用
第10回okfj オープンデータトークシリーズ 20140830 公開用第10回okfj オープンデータトークシリーズ 20140830 公開用
第10回okfj オープンデータトークシリーズ 20140830 公開用George Suzuki
 
DeNAの大規模データマイニング活用したサービス開発
DeNAの大規模データマイニング活用したサービス開発DeNAの大規模データマイニング活用したサービス開発
DeNAの大規模データマイニング活用したサービス開発
Koichi Hamada
 

Similar to CloudSpiral 2014年度 ビッグデータ講義 (20)

PBLのためのScrumとチケット駆動開発の融合 ~Scrum+PBL+TiDD~
PBLのためのScrumとチケット駆動開発の融合 ~Scrum+PBL+TiDD~PBLのためのScrumとチケット駆動開発の融合 ~Scrum+PBL+TiDD~
PBLのためのScrumとチケット駆動開発の融合 ~Scrum+PBL+TiDD~
 
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送
[Cloud OnAir] お客様事例紹介 -リクルートライフスタイルにおける デジタルトランスフォーメーションとクラウド活用- 2018年7月12日 放送
 
Spark MLlibではじめるスケーラブルな機械学習
Spark MLlibではじめるスケーラブルな機械学習Spark MLlibではじめるスケーラブルな機械学習
Spark MLlibではじめるスケーラブルな機械学習
 
Case Study: OLAP usability on Spark and Hadoop
Case Study: OLAP usability on Spark and HadoopCase Study: OLAP usability on Spark and Hadoop
Case Study: OLAP usability on Spark and Hadoop
 
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
Attunity社のソリューションの日本国内外適用事例及びロードマップ紹介[ATTUNITY & インサイトテクノロジー IoT / Big Data フ...
 
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
2021/02/19 Alterbooth 多忙なアーキテクトのためのクラウド導入フレームワーク (CAF) ダイジェスト
 
CloudSpiral 2014年度 Webアプリ講義(2日目)
CloudSpiral 2014年度 Webアプリ講義(2日目)CloudSpiral 2014年度 Webアプリ講義(2日目)
CloudSpiral 2014年度 Webアプリ講義(2日目)
 
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張
FileMaker プラットフォームにSalesforceやkintoneなどクラウドデータ連携機能を拡張
 
Cloud Native and Agile Approach
Cloud Native and Agile ApproachCloud Native and Agile Approach
Cloud Native and Agile Approach
 
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
 
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現CData Sync × Google BigQuery  3ステップで各データソースとのデータ連携を実現
CData Sync × Google BigQuery 3ステップで各データソースとのデータ連携を実現
 
[Cloud OnAir] ハイブリッドクラウドと Google Cloud 〜戦略的なクラウド活用を考える〜 2019年2月7日 放送
[Cloud OnAir] ハイブリッドクラウドと Google Cloud 〜戦略的なクラウド活用を考える〜 2019年2月7日 放送[Cloud OnAir] ハイブリッドクラウドと Google Cloud 〜戦略的なクラウド活用を考える〜 2019年2月7日 放送
[Cloud OnAir] ハイブリッドクラウドと Google Cloud 〜戦略的なクラウド活用を考える〜 2019年2月7日 放送
 
Cloudera Seminar 2013/04/23
Cloudera Seminar 2013/04/23Cloudera Seminar 2013/04/23
Cloudera Seminar 2013/04/23
 
Intelligent Enterprise 実現に向けた拡張開発の必要性 ~ SAP Cloud Platform Extension Factory ~
Intelligent Enterprise 実現に向けた拡張開発の必要性  ~ SAP Cloud Platform Extension Factory ~Intelligent Enterprise 実現に向けた拡張開発の必要性  ~ SAP Cloud Platform Extension Factory ~
Intelligent Enterprise 実現に向けた拡張開発の必要性 ~ SAP Cloud Platform Extension Factory ~
 
ビジネスへの本格活用が始まったHadoopの今 ~MapRが選ばれる理由~ - ビッグデータEXPO東京 2014/02/26
ビジネスへの本格活用が始まったHadoopの今 ~MapRが選ばれる理由~ - ビッグデータEXPO東京 2014/02/26ビジネスへの本格活用が始まったHadoopの今 ~MapRが選ばれる理由~ - ビッグデータEXPO東京 2014/02/26
ビジネスへの本格活用が始まったHadoopの今 ~MapRが選ばれる理由~ - ビッグデータEXPO東京 2014/02/26
 
Wagby で100+ のクラウドデータに連携するアプリを開発(CData JDBC Drivers)
Wagby で100+ のクラウドデータに連携するアプリを開発(CData JDBC Drivers)Wagby で100+ のクラウドデータに連携するアプリを開発(CData JDBC Drivers)
Wagby で100+ のクラウドデータに連携するアプリを開発(CData JDBC Drivers)
 
気象予報データ(数値予報GPV)を用いた データビジュアライゼーション
気象予報データ(数値予報GPV)を用いたデータビジュアライゼーション気象予報データ(数値予報GPV)を用いたデータビジュアライゼーション
気象予報データ(数値予報GPV)を用いた データビジュアライゼーション
 
CData General Proposal
CData General ProposalCData General Proposal
CData General Proposal
 
第10回okfj オープンデータトークシリーズ 20140830 公開用
第10回okfj オープンデータトークシリーズ 20140830 公開用第10回okfj オープンデータトークシリーズ 20140830 公開用
第10回okfj オープンデータトークシリーズ 20140830 公開用
 
DeNAの大規模データマイニング活用したサービス開発
DeNAの大規模データマイニング活用したサービス開発DeNAの大規模データマイニング活用したサービス開発
DeNAの大規模データマイニング活用したサービス開発
 

CloudSpiral 2014年度 ビッグデータ講義

  • 1. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク ビッグデータ講義 神戸大学 まつ本 真佑 佐伯 幸郎
  • 4. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 5  ビッグデータの処理方法を修得する  Hadoop/MapReduceプログラミング  分散処理の基礎 • 集計等 • 機械学習 • 統計処理 • ・・・  AWSを使ったHadoop環境立ち上げ  MRの投入 講義の目標
  • 5. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 6  アルゴリズム系講義  MR座学 → MRゲーム & 思考 → MRプログラミング  プログラミングは本質ではない  プログラムはアルゴリズムを表現する方法の一つ  まずはMapReduceアルゴリズムを理解することが重要  教え合い歓迎,教員へのヘルプも歓迎  Tryチームビルディング  TAをこき使ってください  3コマでおもろい・おいしい部分だけを教えます 留意点
  • 9. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 11 ビッグデータ = 3Vを満たすデータのこと Volume (量) Variety (種類) Velocity (速度) t t Big Data (3V)
  • 10. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 12  Amazon  大量の購入履歴・閲覧履歴を使った宣伝 (推薦システム)  国土交通省  橋に大量のセンサーを設置 • ひずみ,振動,劣化状況…  交通インフラの老朽化を迅速に察知 ビッグデータの活用事例 1/2
  • 11. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 13  貧乏&弱小球団 アスレチックス  データに基づくチーム作成 • 選手の能力をデータ化,コスパの良い選手をスカウト  経験や勘によるバイアスを完全に排除 • 才能がある,今後伸びる,フォームが悪い  オバマ大統領  データに基づく選挙キャンペーン • 「オバマだけど質問ある?」 @Reddit ビッグデータの活用事例 2/2 * http://www.reddit.com/comments/z1c9z
  • 12. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 14  3Vを満たすデータ  データを計測して分析し,そこから価値を生む行為  意味のない議論  何GBあれば/何種類あればビッグデータなのか?  基本はデータ計測とデータマイニング  巨大になりがちなので工夫が必須 意味の変わりつつある 「ビッグデータ」 講義のポイント 対象 データを活用した取り組み
  • 14. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 16 何でもデータ化できる時代 メール GPS 温度 湿度 加速度 会員情報 アクセスログ サービス利用状況 card 電子マネー履歴 POS履歴 つぶやき 写真 動画 交通状況 道路状況 橋の状態 DaaS起動時間 学習状況 受講アンケート コミットログ 開発進捗状況
  • 15. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 17  ストレージの低価格化・大容量化  NoSQLの登場  RDBは高機能なクエリ言語(SQL)を持つが大量データに弱い  SQLやDBとしての厳格さを捨てる代わりに高速化・大規模化 何でも蓄積できる時代 $0.01 $1.00 $100.00 $10,000.00 $1,000,000.00 1970 1980 1990 2000 2010 2020 1GB当たりのHDDの値段* ¥5¥1,000,000 * http://www.statisticbrain.com/average-cost-of-hard-drive-storage/
  • 16. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 18  蓄えたデータをどう処理するか? どう処理するか? generating storing mining
  • 17. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 19  検索エンジンは正にビッグデータ処理 Googleの場合 web pages indexweb crawling indexing/ page ranking
  • 18. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 21  検索エンジンは正にビッグデータ処理 Googleの場合 20,000,000,000,000,000 bytes / day !* 20PB.1台のHDD (SATA3接続) だと読み込みだけで400日弱 web pages indexweb crawling indexing/ page ranking 20PBを どう処理するか? * J. Dean and S. Ghemawat, MapReduce: simplified data processing on large clusters, Comm. ACM, vol.51, no.1, pp107-113, 2008
  • 19. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 22  100台で処理すれば100倍の速度!  複数マシンで分散処理すればよい 分散しよう
  • 20. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 23  100台で処理すれば100倍の速度!  複数マシンで分散処理すればよい • 複数台並べて高速化 • マシンの性能を上げて高速化 分散しよう 世の中の潮流はこっち スケールアウト スケールアップ (補足)
  • 21. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 24  分散環境の管理  障害をどう検知するか?  ファイルをどう分散配置するか?  タスクをどうスケジューリングするか?  プログラムの開発  データのどこからどこまでをどのワーカが担当するか?  ワーカの同期をどうするか?  処理中にワーカが故障したときにどうするか?  開発者が処理の本質以外を気にかける必要あり 分散処理は難しい
  • 22. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 25  1~10000の総和を並列計算するプログラム (参考) FortranとMPIによる分散処理 program sumn use mpi implicit none integer :: n,i,istart,iend,isum,isum1 integer :: nprocs,myrank,ierr call mpi_init(ierr) call mpi_comm_size(MPI_COMM_WORLD,nprocs,ierr) call mpi_comm_rank(MPI_COMM_WORLD,myrank,ierr) if (myrank==0) n=10000 call mpi_bcast(n,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr) istart=n*myrank/nprocs+1 iend=n*(myrank+1)/nprocs isum=0 do i=istart, iend isum=isum+i end do call mpi_reduce(isum,isum1,1,MPI_INTEGER,MPI_SUM,0,MPI_COMM_WORLD,ierr) if (myrank==0) print *, 'sum =', isum1 call mpi_finalize(ierr) end program sumn 本質 データのどこからどこまでを だれが担当するかを決める
  • 23. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 26  大規模データの分散処理フレームワーク  =MapReduceを実行するためのフレームワーク  分散処理の難しさを軽減してくれる  開発者を処理の本質に集中させる  手軽でオープンな分散処理環境  高い実績  Yahoo!, Facebook, IBM, Last.fm, ・・・  2つの主要コンポーネント  HDFS & MapReduce Hadoop
  • 24. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 27  HDFSでデータを分散配置  MapReduceでデータを分散処理 Hadoop全体像 Map Reduce Map Reduce Map Reduce Map Reduce Map Reduce Shuffle データ 結果
  • 25. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 28  HDFSでデータを分散配置  MapReduceでデータを分散処理 Hadoop全体像 Map Reduce Map Reduce Map Reduce Map Reduce Map Reduce Shuffle データ 結果
  • 26. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 29  HDFSでデータを分散配置  MapReduceでデータを分散処理 Hadoop全体像 Map Reduce Map Reduce Map Reduce Map Reduce Map Reduce Shuffle データ 結果
  • 27. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 30  分散データを処理するプログラミングモデル  開発者は Mapper と Reducer を定義するだけでよい  全てのワーカで同じMapperとReducerが実行される  MapperとReducer • KeyとValueを受け取り,複数のKey’とValue’のペアを出力する関数  単純で汎用的  MとRだけで分散処理を実現  複雑な処理をしたい場合は? → MRを複数組み合わせる MapReduce map(key, value) → [{key’, value’}] reduce(key, value) → [{key’, value’}]
  • 28. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 31 MapReduceの流れ (ワードカウントの場合)  説明題材  テキストデータのワードカウント (単語の数え上げ) をする dog dog dog cat dog cat pig fox {dog, 4} {cat, 2} {pig, 1} {fox, 1} Hadoop (MapReduce)
  • 29. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 32 MapReduceの流れ (ワードカウントの場合) dog dog dog cat {dog, 1} dog cat fox pig {dog, 1} {dog, 1} {cat, 1} {dog, [1,1,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox
  • 30. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 33 MapReduceの流れ (ワードカウントの場合) dog dog dog cat {dog, 1} dog cat fox pig {dog, 1} {dog, 1} {cat, 1} {dog, [1,1,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox HDFSがデータを分散配置 (ワーカー2台)
  • 31. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 34 MapReduceの流れ (ワードカウントの場合) dog dog dog cat {dog, 1} dog cat fox pig {dog, 1} {dog, 1} {cat, 1} {dog, [1,1,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox key value 入力={バイト数, テキスト1行} 出力={単語, 1}
  • 32. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 35 MapReduceの流れ (ワードカウントの場合) dog dog dog cat {dog, 1} dog cat fox pig {dog, 1} {dog, 1} {cat, 1} {dog, [1,1,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox key value 入力={バイト数, テキスト1行} Map(String key, String value) for each word w in value emit(w, 1); 出力={単語, 1}
  • 33. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 36 MapReduceの流れ (ワードカウントの場合) dog dog dog cat {dog, 1} dog cat fox pig {dog, 1} {dog, 1} {cat, 1} {dog, [1,1,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox 同じKeyのデータが まとめられる (Shuffle)
  • 34. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 37 MapReduceの流れ (ワードカウントの場合) dog dog dog cat {dog, 1} dog cat fox pig {dog, 1} {dog, 1} {cat, 1} {dog, [1,1,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox 同じKeyのデータが まとめられる Shuffle(String key, String value) 定義いらず (Shuffle)
  • 35. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 38 MapReduceの流れ (ワードカウントの場合) dog dog dog cat {dog, 1} dog cat fox pig {dog, 1} {dog, 1} {cat, 1} {dog, [1,1,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox 出力={単語, 出現回数}
  • 36. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 39 MapReduceの流れ (ワードカウントの場合) dog dog dog cat {dog, 1} dog cat fox pig {dog, 1} {dog, 1} {cat, 1} {dog, [1,1,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox 出力={単語, 出現回数} Reduce(String key, Iterator values) sum = 0; for each v in values sum += v; //sum += 1 でも同じ emit(key, sum)
  • 37. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 40 別解を考える dog dog dog cat {dog, 1} dog cat fox pig {dog, 1} {dog, 1} {cat, 1} {dog, [1,1,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox
  • 38. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 41 別解を考える dog dog dog cat {dog, 2} dog cat fox pig {dog, 1} {cat, 1} {dog, [2,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox
  • 39. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 42 別解を考える dog dog dog cat {dog, 2} dog cat fox pig {dog, 1} {cat, 1} {dog, [2,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox Map(String key, String value) for each word w in value hash[w]++; for each key w in hash emit(w, hash[w]); Map(String key, String value) for each word w in value emit(w, 1);
  • 40. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 43 別解を考える dog dog dog cat {dog, 2} dog cat fox pig {dog, 1} {cat, 1} {dog, [2,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox Map(String key, String value) for each word w in value hash[w]++; for each key w in hash emit(w, hash[w]); Map(String key, String value) for each word w in value emit(w, 1); ・ コード複雑さ: M ↑ R - ・ 処理速度: M ↓ R ↑ ・ 通信量: 削減 ・ MでOutOfMemoryErrorの恐れあり
  • 41. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 44 さらに別解を考える dog dog dog cat {dog, 1} dog cat fox pig {dog, 1} {dog, 1} {cat, 1} {dog, [1,1,1,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox
  • 42. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 45 さらに別解を考える dog dog dog cat dog cat fox pig {dog, 3} {cat, 1} {dog, [3,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox
  • 43. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 46 さらに別解を考える dog dog dog cat dog cat fox pig {dog, 3} {cat, 1} {dog, [3,1]} {dog, 1} {cat, 1} {pig, 1} {fox, 1} {cat, [1,1]} {dog, 4} S {0, dog dog} {16, dog cat} {8, dog cat} {24, pig fox} {pig, [1]} {fox, [1]} {cat, 2} {pig, 1} {fox, 1} M R dog dog dog cat dog cat pig fox 複数の{key, value}を またがった処理はひとまず禁止 (実際は可能,後述)
  • 45. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 48  トランプの記号ごとの出現回数を数えよう  意味づけ 演習1: MapReduceゲームクソゲー ♥ 30 ♦ 42 ♣ 38 ♠ 20 ♥♠♥♠◎♠♠♥☂◎♥♠☆♥☆♥ ◎☂♣♣☆♣♥♪♣♥♣☆♣♪♣♣♥♥♥ ♪☂☂♣☂◎☂◎◎♦♪♣♪☂♪♪◎♣ ・・・ 処理対象のデータ 結果 ♥4 {♥, 4} 演
  • 46. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 49  Hadoop環境のセットアップ  HDFSのリーダー (NameNode) を決める  全ワーカーにIDを降る (1~6) ステップ0. 準備 1 2 3 4 5 6
  • 47. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 50  Hadoopへのデータ投入  Hadoop利用者がNameNodeへデータを投入する  NameNodeはデータを分割して振り分ける • 4行ずつ分割.上から順にワーカ1から6に振り分ける • 余りもワーカ1から順に渡す ステップ0. 準備 ♥♠♥♠◎♠♠♥☂◎♥♠☆♥☆♥ ◎☂♣♣☆♣♥♪♣♥♣☆♣♪♣♣♥♥♥ ♪☂☂♣☂◎☂◎◎♦♪♣♪☂♪♪◎♣ ♣◎♣♦♦♦♦♣♪♣♣♦♣☆♪☆☆☆♣◎♣♣ ☆◎☂◎☂☆☆☆☂◎☆☆♪◎☂☂♪☂☆ ♦♦◎♦◎♦☂♦◎☆☆◎◎♪♦♦ ♪♪☂♣♣◎☆☂♪♪♣☆☂♣☂◎♪♣☂☆♣ ☂◎♥☆☂◎♥◎☆☂☂♪☂☂♥☂☂ ♦♦♦♦☂◎♪♪◎☆♦☆☂☂♪♦ 1 2 3 ♥♠♥♠◎♠♠♥☂◎♥♠☆♥☆♥ ◎☂♣♣☆♣♥♪♣♥♣☆♣♪♣♣♥♥♥ ♪☂☂♣☂◎☂◎◎♦♪♣♪☂♪♪◎♣ ♣◎♣♦♦♦♦♣♪♣♣♦♣☆♪☆☆☆♣◎♣♣ ☆◎☂◎☂☆☆☆☂◎☆☆♪◎☂☂♪☂☆ ♦♦◎♦◎♦☂♦◎☆☆◎◎♪♦♦ ♪♪☂♣♣◎☆☂♪♪♣☆☂♣☂◎♪♣☂☆♣ ☂◎♥☆☂◎♥◎☆☂☂♪☂☂♥☂☂ ♦♦♦♦☂◎♪♪◎☆♦☆☂☂♪♦ ♪☂♣♥☂♣♥♥♥♥♣☆♣♣♥♥♥♥
  • 48. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 51  全ワーカはMapperを実行する  上から順に一行ずつMap処理すること  処理結果はトランプのカード で表すこと  処理結果は手元に ステップ1. Mapフェーズ ♥♠♥♠◎♠♠♥☂◎♥♠☆♥☆♥ ◎☂♣♣☆♣♥♪♣♥♣☆♣♪♣♣♥♥♥ ♪☂☂♣☂◎☂◎◎♦♪♣♪☂♪♪◎♣ ♥6 ♠5 ♥5 ♣8 ♦1 ♣3 ♦4♦4♦4 Map(String key, String value) for each suit w in value if(!isSuit(w)) continue; hash[w]++; for each key w in hash emit(w, hash[w]);
  • 49. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 52  同一Keyをまとめる  データを交換する  交換ルール: ♥ワーカ2 ♦ワーカ5 ♠ワーカ3 ♣ワーカ4 ステップ2. Shuffleフェーズ ♥4 ♠5 ♦1 ♣3 ♥J ♠3 ♦9 ♣3 2 ♥4 ♥4♥4♥4♥4♥4♥4♥4♠5♥4♥4 ♥6 ♥3 ♠1 ♥4 ♥J ♥6 ♥3 ♥1 ♥8 ♥J
  • 50. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 53  手持ちのデータの総和を計算する ステップ3. Reduceフェーズ 2 ♥4♥4♥4♥4♥4♥4♥4♥4 ♥=30 Reduce(String key, Iterator values) sum = 0; for each v in values sum += v; emit(key, sum)
  • 51. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 54 MapReduceゲームの流れ (再確認) {♥, 30} {0, ♥♠♥♠◎} {16, ♣◎♣♥♥} {8, ◎☂♣♣☆} {24, ☆◎☂◎☂} M R ♥♠♥♠◎ ◎☂♣♣☆ ♪☂☂♣☂ ♥♠♥♠◎ ◎☂♣♣☆ ♪☂☂♣☂ ♣◎♣♥♥ ☆◎☂◎☂ ♦♦◎♦◎ ♪♪☂♣♣ ☂◎♥☆☂ ♦♦♦♦☂ ♪☂♣♥☂ ♣◎♣♥♥ ☆◎☂◎☂ ♦♦◎♦◎ ♥2 ♠2 ♣2 ♥2♥2♥2♥2 ♣2♣2♣2♣2 {♣, 30} ♥2 ♣2 S
  • 52. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 55  以下のMRアルゴリズムを考えよう  トランプの記号ごとの出現回数をカウントする (MRゲームと同じ)  ただし,偶数行と奇数行ごとにカウントすること • データには行番号が記述されているものとする 演習2: MRアルゴリズムを考えよう 1 ♥♠♥♠◎♠♠♥☂◎♥♠☆♥☆♥ 2 ◎☂♣♣☆♣♥♪♣♥♣☆♣♪♣♣♥♥♥ 3 ♪☂☂♣☂◎☂◎◎♦♪♣♪☂♪♪◎♣ 4 ・・・ 偶数行 奇数行 ♥ 9 8 ♦ 13 9 ♣ 5 16 ♠ 2 15 演
  • 53. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 56  以下処理フローの を埋めてみよう 考え方 M R S { , } { , } { , } { , }
  • 54. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 57  MRゲームの場合 例 M R S { , } ♥ [2,3,5,1] 記号 [出現回数] { , } ♥ 2 ♠ 2 記号 出現回数 { , } ♥ 11 記号 総数 { , } 0 ♥♠♥♠◎☆ バイト数 テキスト 記号4種類をそれぞれ数える 記号ごとに回数をemitする 総和を取って記号と共に emitする
  • 55. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 58 演習2: 回答a { , } ♥奇 [2,3,5,1] 記号+偶奇 [出現回数] { , } ♥奇 2 ♠奇 2 記号+偶奇 出現回数 { , } ♥奇 11 記号+偶奇 総数 { , } 0 ♥♠♥♠◎☆ バイト数 テキスト Map(String key, String value) if (value[0] % 2 == 0) label = “偶”; else label = “奇”; for each suit w in value hash[w]++; for each key w in hash emit(w + label, hash[w]); {♥偶, 2} (Mapperの出力より) パターン名 答 M R S
  • 56. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 59 演習2: 回答b { , } ♥奇 [1,1,1,1,1,1] 記号+偶奇 [出現回数] { , } ♥奇 1 ♥奇 1 ♠奇 1 記号+偶奇 出現回数 { , } ♥奇 11 記号+偶奇 総数 { , } 0 ♥♠♥♠◎☆ バイト数 テキスト Map(String key, String value) if (value[0] % 2 == 0) label = “偶”; else label = “奇”; for each key w in value emit(w + label, 1); {♥偶, 1} パターン名 答 M R S
  • 57. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 60 演習2: 回答c M R S { , } ♥ [奇,奇,奇,偶] 記号 [偶奇] { , } ♥ 奇 ♠ 奇 記号 偶奇 { , } ♥奇 11 ♥偶 4 記号+偶奇 総数 { , } 0 ♥♠♥♠◎☆ バイト数 テキスト Map(String key, String value) if (value[0] % 2 == 0) label = “偶”; else label = “奇”; for each suit w in value emit(label, w); 答 {♥, 奇} パターン名
  • 58. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 61 演習2: 回答c M R S { , } 奇 [♥,♠,♥,...] 偶数 [出現回数] { , } 奇 ♥ 奇 ♠ 偶奇 記号 { , } ♥奇 11 ♠奇 2 記号+偶奇 総数 { , } 0 ♥♠♥♠◎☆ バイト数 テキスト Map(String key, String value) if (value[0] % 2 == 0) label = “偶”; else label = “奇”; for each suit w in value emit(w, label); 答 {奇, ♥} パターン名
  • 59. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 62  回答a, b, c, dの違いを考えよう  回答a  回答b  回答c  回答d  考えるポイント (一例)  MapとReduceそれぞれについて • プログラミングの難しさは? • 処理の分散効率は?  Shuffleで発生する通信量は?  ・・・ 演習3: さらに考えてみよう {♥偶, 2} {♥, 偶} {偶, ♥} 演 {♥偶, 1}
  • 60. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 63  mapper実装難度 b = c = d < a  mapper速度 b = c = d > a  shuffle通信量 a < b = c = d  reducer実装難度 a = b = c = d  reducer並列化効率 a = b > c > d 理由: reducerに渡るKeyの種類  a = 8 (スーツ4 x 偶奇2)  b = 8 (スーツ4 x 偶奇2)  c = 4 (スーツ4)  d = 2 (偶奇2) 演習3: 回答 {♥偶, 2} {♥, 偶} {偶, ♥} {♥偶, 1} 回答a 回答b 回答c 回答d 答 badgood
  • 61. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 64  日別のおにぎりの売上額を求めるMRを考えよう 演習4: POSデータ処理を考えよう レシートID yyyy mm dd 商品名 分類名 個数 値段 123456 2014 9 1梅おにぎり おにぎり 2 105 123456 2014 9 1六甲の水 飲料水 4 130 123456 2014 9 1歯ブラシ 日用品 1 298 222222 2014 9 1メロンパン 菓子パン 1 105 222222 2014 9 1無糖ブラック 飲料水 1 90 990777 2014 9 2明太子おにぎり おにぎり 3 105 990777 2014 9 2コーラ 飲料水 1 130 693200 2014 9 3大阪の水 飲料水 1 105 693200 2014 9 3サンドイッチ 菓子パン 1 390 レシート 演 20140901 2 20140902 3 入力データ 結果
  • 62. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 65 演習4: 回答 M R S { , } 20140901 [380,420,・・・] 日付 [売上げ数] { , } 20140901 380 日付 売上げ額 { , } 20140901 51000 記号+偶奇 総数 { , } 0 123,2014,9,1・・・ バイト数 テキスト ・ 分類名 != おにぎりなら終了 ・ yyyymmddの文字列を作る ・ emit(yyyymmdd, 個数*値段) 答
  • 63. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 66  説明題材  全おにぎりの販売個数カウント  example.OnigiriCountクラス  実装するメソッドは3つ JavaでMapReduceを実装する OnigiriCount.java main() map() reduce() M R S { , } onigiri [2,3,1,1,・・・] onigiri [販売個数] { , } onigiri 2 onigiri 販売個数 { , } onigiri 300 onigiri 総数 { , } 0 123,2014,9,1・・・ バイト数 テキスト
  • 64. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 67 public static void main(String[] args) throws ... { // MapperクラスとReducerクラスを指定 Job job = new Job(new Configuration()); job.setJarByClass(OnigiriCount.class); // ★このファイルのメインクラスの名前 job.setMapperClass(MyMapper.class); job.setReducerClass(MyReducer.class); job.setJobName("2014901"); // ★自分の学籍番号 // 入出力フォーマットをテキストに指定 job.setInputFormatClass(TextInputFormat.class); ... // 入出力ファイルを指定 String inputpath = "posdata"; String outputpath = "out/onigiriCount"; // ★MRの出力先 ... } main関数 OnigiriCount.java main() map() reduce() MR実行のための準備を行うmain関数 ★の部分3行だけ変更すればよい
  • 65. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 68 map関数 public static class MyMapper extends Mapper<LongWritable, Text, CSKV, CSKV> { protected void map(LongWritable key, Text value, Context context) ... { // csvファイルをカンマで分割して,配列に格納する String csv[] = value.toString().split(","); // おにぎりでないレシートは無視 if (csv[PosUtils.ITEM_CATEGORY_NAME].equals("おにぎり・おむすび") == false) { return; } // valueとなる販売個数を取得 String count = csv[PosUtils.ITEM_COUNT]; // emitする (emitデータはCSKVオブジェクトに変換すること) context.write(new CSKV("onigiri"), new CSKV(count)); } } ▲ csvデータの列番号はPosUtilsにセット済み 例:年度の列を取り出す場合は csv[PosUtils.YEAR] ▲ emitする データはCSKVオブジェクトに変換すること おにぎりの総売上計算なのでKeyは常に同じもの OnigiriCount.java main() map() reduce()
  • 66. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 69 reduce関数 public static class MyReducer extends Reducer<CSKV, CSKV, CSKV, CSKV> { protected void reduce(CSKV key, Iterable<CSKV> values, ...) { // 売り上げを合計 int count = 0; for (CSKV value : values) { count += value.toInt(); } // emit context.write(key, new CSKV(count)); } } ▲ valuesの総和を取る OnigiriCount.java main() map() reduce() ▲ mapperと同様CSKVオブジェクトでemit
  • 67. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 70  emitのKeyとValueを表す汎用オブジェクト  開発を容易にするためのCloudSpiral特化のオブジェクト  CloudSpiral-KeyValueの略 • 一般的ではないことに注意 CSKVオブジェクト M S { , } onigiri 2 onigiri 販売個数 { , } 0 123,2014,9,1・・・ バイト数 テキスト CSKV CSKV
  • 68. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 71  CSKVへの変換  int → CSKV: cskv = new CSKV(i);  long → CSKV: cskv = new CSKV(l);  double → CSKV: cskv = new CSKV(d);  String → CSKV: cskv = new CSKV(s);  CSKVからの変換  CSKV → int: i = cskv.toInt();  CSKV → long: l = cskv.toLong();  CSKV → double: d = cskv.toDouble();  CSKV → String: s = cskv.toString(); 型変換 (参考資料)
  • 69. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 72  Stringへの変換  int → String: str = String.valueOf(i);  long → String: str = String.valueOf(l);  double → String: str = String.valueOf(d);  Stringからの変換  String → int: i = Integer.parseInt(str);  String → long: l = Long.parseLong(str);  String → double: d = Double.parseDouble(str); 型変換 (参考資料)
  • 70. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 73  演習4 (日別おにぎり売り上げ) をJavaで実装しよう  Eclipseを起動 C:¥pbl¥eclipse.lnk  ひな形プロジェクトをSVNからチェックアウト http://192.168.100.10/svn/20140xx/bigdata  OnigiriSalesByDate.java を開発する • posmining.enshu パッケージを使うこと • posmining.example.OnigiriCount.java をベースにして良い 演習5: Javaで実装しよう 演
  • 71. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 74  種類別のおにぎりの売り上げ数を数えよう  Q. 梅と昆布どっちが売れているか?  Q. イロモノおにぎりの売れ行きは? • うにめし,うなぎおむすび,・・・  ヒント: 梅っぽい商品名の判定方法 演習6: POSデータの処理+ 演 // itemNameのどこかに "梅" か "うめ" が入っていれば if (itemName.matches(".*(梅|(うめ)).*")) { ... }
  • 72. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 75  男女別の平均購入金額の計算方法を考えよう  男性:xxx円 女性:yyy円  仮説も立てよう  どっちが多いか?  それぞれいくらくらいか?  ただし今までのMRでは計算できない  なぜできないのか?  どうすればできるようになるか?  本当に不可能か? 演習7: POSデータの処理++ 演
  • 73. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 76  なぜ計算できないのか?  Shuffleフェーズでのデータ交換=  M→S→R では1つのKeyしか集約できない  どうすればできるか?(=どこでもう1回集約するか)  案1: MRを2回やる (多段MR)  案2: Reducerで一度集約する (今までのやり方でも実装可能)  案3: Mapperで一度集約する (in-mapper combining) P.43 「行をまたいだ処理は禁止」と説明した部分  案4: MR+Excelで処理する 演習7: 回答 集約すべきKeyが2種類あるから (レシートID & 性別) 集約 答
  • 74. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 77 案1: 多段MR 1段目 M R S { , } 123 [“男,380”, “男,105”] 333 [“女,98”, “女,280”] 555 [“男,900”] レシートID [性別,金額] { , } 123 男,380 レシートID 性別,金額 { , } 男 485 女 378 男 900 性別 合計金額 { , } 0 123,2014,9,1・・・ バイト数 テキスト ・ 値段*個数を売り上げとする ・ 性別と売り上げをカンマで繋 いだ文字列を作り,Valueとし てemit ・ valueをカンマで分割し性別と 売り上げを取り出す ・ 売り上げの総和を取る ・ 性別をKey,総和をValueとして emit 答
  • 75. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 78 案1: 多段MR 2段目 M R S { , } 男 [485, 900, ・・・] 女 [378, 280, ・・・] 性別 [合計金額] { , } 男 485 女 378 性別 合計金額 { , } 男 510 女 500 性別 平均 { , } 0 男 485 11 女 378 39 男 900 バイト数 テキスト ・ {性別, 金額} をemit ・ 平均を計算してemit 答
  • 76. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 79  男女別の平均購入金額を多段MRで処理しよう  2つのjavaを実装する  1段目 AveragePaymentBySex_1st.java  2段目 AveragePaymentBySex_2nd.java  各フォルダの指定  1段目 • 入力フォルダ: “posdata” 出力フォルダ: “paymentBySex”  2段目 • 入力フォルダ: “paymentBySex” 出力フォルダ: “avgPaymentBySex” 演習8: 多段MR 演 同一にすること
  • 77. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 80  案2を実装しよう  かなり難しいが今までの知識で実装可能  計算効率はどうか?  OutOfMemoryExceptionは発生しないか?  ヒント: Mapperの出力 演習9: Reducerでの集約パターン 演 { , } 男 123,380 男 123,105 女 333,98 女 333,105 男 555,900 性別 レシートID,値段 "男"をKeyとしたmap結果が 一台のワーカに集約される
  • 79. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 82  EMR: Elastic MapReduce  Amazonの提供するIaaS型のHadoop環境  = Hadoopインストール済みのAMIを使ったEC2  グループワーク  ステップ0: 代表者を決める & USBディスプレイをつなげる  ステップ1: EMRを立ち上げる  ステップ2: build.xmlを編集する  ステップ3: MRを投入する  ステップ4: 結果を確認する 演習10: AWSでMRを実行しよう 演
  • 80. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 83  演習環境 (=開発環境) 環境がどう変わるか? ローカル MRコード POSデータ 実行
  • 81. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 84  演習環境 (=開発環境)  EMR環境 (=ステージング環境) 環境がどう変わるか? ローカル MRコード POSデータ EMR S3ローカル 実行 転送&実行 MRコード POSデータ POSデータ 10年分,4GB
  • 82. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 85  AWSログイン  https://cspiral.signin.aws.amazon.com/console ステップ1: EMRの立ち上げ
  • 83. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 86  Cluster Configuration  Cluster name → グループ番号 (C0~C9) 入力  Logging → Enabledを外す  Software Configuration  Hadoop distribution → AMI version を 2.4.7 に  Applications to be installed → Hive, Pig 両方 × を押して消す  Hardware Configuration  Network → vpc-9150b9f4  EC2 Subnet → subnet-b99e9eff  Master → c1.medium Core → c1.medium ステップ1: EMRの立ち上げ 間違えないこと 間違えないこと
  • 84. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 87  Security And Access  EC2 key pair → CloudSpiral_Key を選択  Create Clusterを押す ステップ1: EMRの立ち上げ
  • 85. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 88  立ち上がるのを待つ ステップ1: EMRの立ち上げ EMRのDNS名 (どこかにメモしておくこと) WaitingになればOK
  • 86. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 89  build.xmlでやっていること  ソースをコンパイルする  jarに固めてEMRに転送(scp)する  SSHでEMRにログインし,HadoopコマンドでMRを実行する ステップ2: build.xmlの編集 EMR S3ローカル 転送&実行 MRコード POSデータ POSデータ 10年分,4GB この部分
  • 87. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 90  build-common.xml  Hadoop接続先のサーバ名を変更する  build.xml  タスクを追加する ステップ2: build.xmlの編集 <property name="ssh.server" value="ec2-...compute.amazonaws.com" /> <property name="ssh.user" value="hadoop" /> <property name="ssh.pass" value="" /> <!-- おにぎり総数 --> <target name="run.OnigiriCount" depends="prepare"> <sshexec host="${ssh.server}" username="${ssh.user}" keyfile=... command="hadoop jar main.jar posmining.example.OnigiriCount s3://..." /> </target> ▲ 立ち上げたEMRの DNS名に変更 実行するMRクラス ▲ ▼ タスク名.“run.実行MRクラス名” が分かりやすい MRの入力データを指定▲ s3://cspiral-posdata/
  • 88. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 91 ステップ3: MRを投入する run.xxx を 指定して実行 実行中にステップ3-4を試す →
  • 89. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 92  PacketiXよりVPN設定 (次のステップ5~7に必須) ステップ4: VPN設定 & 接続 ホスト名: 54.64.84.176 仮想HUB名: VPN ユーザ名: student パスワード:
  • 90. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 93  ブラウザから http://DNS名:9100 にアクセス  MapReduce関係の情報を確認できる ステップ5: MRの実行過程を見る
  • 91. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 94 ステップ6: 入力データを確認する
  • 92. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 95  ブラウザから http://DNS名:9101 にアクセス  HDFS関係の情報を確認できる (MRの出力結果もここから) ステップ7: 結果を取得する "Browse the filesystem" のリンクから → /user/hadoop/out/
  • 93. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 96  自由に触ってみよう  別の自作MRを投入する • ちゃんと動くか? • 実行時間は?処理結果は?  HadoopのWebコンソールを読み解く • http://DNS名:9100 • http://DNS名:9101  立ち上げたEMR環境がEC2側からどう見えるか? • 3台構成のEMR = 3台のEC2インスタンス  EMRワーカ数の変更は禁止  次の講義でやります 自由時間
  • 94. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 97  男女平均の結果がマイナスになる  → int でビッグデータの集計できますか?  INT_MAX=21億  本当にそこで平均計算必要ですか?  出力はこっちの方が役立ちませんか? • {key=性別, value="合計金額,合計レシート枚数"}  中間処理としてのHadoop/MapReduceの使い方  案2でOutOfMemoryError  → 連想配列巨大すぎませんか?  案2はビッグデータの処理方法として適切ですか? 演習後のいろいろ
  • 96. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 99  集計  合計,平均,分散,集約,・・・  機械学習  クラスタリング分析,ニューラルネット・・・  自然言語処理  構文解析,形態素解析,係り受け解析,・・・  画像処理  ・・・ Hadoopでできる処理 今日の講義
  • 97. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 100 できること (得意なこと) できないこと (苦手なこと) バッチ処理 リアルタイム処理 大規模データの処理 小規模データの処理 (オーバーヘッドが大きい) データが多い処理 (ログ解析など) 計算が多い処理 (科学計算など) 分割できる処理 分割できない処理 (グラフ構造のデータなど) データ処理基盤としての利用 データベースとしての利用 (単一故障点がある) 構造/非構造データの処理 (表形式,画像・動画問わず) - Hadoopは万能ではない
  • 98. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 101  Hadoopは巨大データ処理方法の一つ  Hadoopのシェアは大きいが・・・  巨大なデータを処理できればなんでもよい  別のアイデアも生まれつつある • リアルタイムMapReduce (Presto) • MapReduceを生成するSQLライクな言語 (Pig) • Hadoop/MapReduceとは全く別の分散処理技術 (Spark)  「ビッグデータ」 はバズワード臭い  言葉はなくなるかもしれない  概念は残る • 何でもかんでもデータを計測 → ビッグデータ → 発掘 • データに基づく意志決定,ビジネス戦略 重要なこと
  • 99. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 102  共通する点  流行ってる  名前がふわっとしてる • 解釈ばらばら,非エンジニア的なネーミングセンス  たくさんの技術の集合で成り立つ概念 • クラウド: 仮想化,分散システム,SOA,HTTP,REST,… • ビッグデータ: NoSQL,Hadoop,MapReduce,…  相性最高  クラウドで貯めた巨大なデータをHadoopで分析する  クラウド(IaaS)でHadoop環境を手軽に立ち上げられる クラウドとビッグデータ
  • 100. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 103  でかいことにも価値がある  データが大きければ単純な集計だけでも有益な結果が得られる ビッグデータの価値 Volume (量) Variety (種類) Velocity (速度) t t アイデア次第! つづきはPBLで!
  • 102. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 105  同時に飲料水を購入した全レシートデータ  飲料水 ∈ {コーヒー飲料,緑茶飲料,炭酸飲料,清涼飲料,水}  含まれないレシート • 「ガムだけを買った」,「雑誌とパンを買った」・・・  店舗数: 4店舗  オフィス街1,駅前1,ロードサイド1,住宅街1  期間: 2003年1月1日~2012年12月31日  丸9年,月ごとに集計  計120ファイル,4.22GB POSデータの概要
  • 103. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 106  店舗立地 (オフィス街1,駅前1,ロードサイド1,住宅街1)  レシート番号(全データに一意なID)  曜日フラグ (1=月,2=火,3=水,4=木,5=金,6=土,7=日)  休日フラグ (1=祝日/日曜日)  購入者性別フラグ (1=男性,2=女性)  購入者年齢フラグ (1=子供,2=若者,3=大人,4=実年)  購入商品名  JANコード http://www.dsri.jp/jan/  単価  個数  値段 (単価 * 個数)  メーカー名  分類コード・分類名 (日経商品ディクショナリー) http://t21help.nikkei.co.jp/reference/docs/POSCodeBook18.pdf POSデータの属性の意味
  • 104. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 107  TeraTerm起動  C:¥pbl¥ttermpro.lnk SSHでHadoopを操作
  • 105. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 108  認証情報 SSHでHadoopを操作 C:¥pbl¥ssh_key¥ CloudSpiral_Key.pem passphraseは空
  • 106. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 109  SSH接続成功 SSHでHadoopを操作
  • 107. Cloud Specialist Program Initiative for Reality-based Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク © Cloud Spiral partners 2014/5/9 110  MRの出力結果 (=HDFS) の確認コマンド  hadoop dfs  HDFSのファイルリストを取得する  hadoop dfs -ls /user/hadoop/out/  hadoop dfs -lsr /user/hadoop/out/  MRの処理結果を取得する  hadoop dfs –cat /user/hadoop/out/xxx/ SSHでHadoopを操作 xxxにはMRで指定した 出力フォルダ名を打ち込む