Download presentation
Presentation is loading. Please wait.
1
Raspberry Pi を用いた 並列分散処理
田中 基之
2
目次 概要 Raspberry Pi について 分散処理フレームワーク について 評価方法について 測定結果 考察
3
概要 複数台の小型コンピュータ 「Raspberry Pi」 を接続して,並列処理による計算速度の 変化などを測定,研究する.
分散処理フレームワーク 「Hadoop」,「Spark」 を用いてテストを行う. 今回は Master 1台 と Slave 8 台 とした.
4
Raspberry Pi とは 英国の「ラズベリー・パイ財団」が提供. 手のひらサイズのコンピュータで,OSが起動する.
今回使用する OS は 専用に用意された Linux である raspbian である. もともとは教育向けの低価格コンピュータとして開発. 簡単な電子工作やプログラミングを行うことができる. Python, Java, C言語, Scratch, PHP などがすぐに使える. 今回は Raspberry Pi 2 Model B を 9 台接続した.
5
Raspberry Pi とは スペック 価格は 35 米ドル / 4,725 円 ARM Cortex-A7 (900MHz)
CPU グラフィック メモリー ネットワーク ARM Cortex-A7 (900MHz) クアッドコア Broadcom BCM2836 1 G byte 10/100 Mbps Ethernet 電源出力端子 電源電圧 電力定格 サイズ 重さ 3.3V, 5V 5V 10W 85.6 mm × 56.5 mm 45 g
6
分散処理フレームワーク 大規模なデータの分析などを分散処理(並列処理)によって実現するソフトウェア. Hadoop Spark
メモリに入りきらない大規模なデータは安定して処理できる. 処理が複雑化すると処理時間が悪化. 繰り返し計算処理(機械学習やグラフなど)には適していない. 基本は Java で制御. Spark メモリに入りきる量のデータに対しては高速に処理できる. Scala で制御するが,Scala は Java, Python, R 言語 などで制御可能.
7
分散処理フレームワーク Map Reduce Map処理 Reduce処理
Slave 数 を変えても分散処理ができるようにするプログラミングモデル. Map処理 それぞれの Slave に対して,互いに独立になるように処理を分散させ,計算させる. Reduce処理 それぞれの Slave に分散させた処理を何らかの形で集約し,結果を返す.
8
Monte Carlo 法 [0,1]×[0,1] の領域に対してランダムに 𝑁 個の点 (𝑥,𝑦) を与えるとき,その点が
𝑦≤ 1− 𝑥 2 を満たす割合を調べることで, 円周率を推定する方法. 右図のように半径 1 の円の の領域に点が含まれるかどうかを判定して いるため, 求めた割合を 4 倍すると円周率 𝜋 の近似値が得られる. 右図の例では 𝑁=11, そのうち円の内部の点が 8 個であるから, 𝜋≃4× 8 11 = ⋯ である.
9
Monte Carlo 法 実装例 1セット(100,000個)×slice 数(32 ~ 512) の 要素を持つ配列 L をつくる.
<MAP> 各要素に対してランダムに点を生成し,四分円内にあれば1,なければ0を返す. L = [0,1,2,3, … , ] → [0, 1, 1, 0, … , 1] <REDUCE> 配列 L の要素を1つ1つ足し合わせたものを count とする. count を 配列 L の大きさで割ったものを4倍して 円周率 𝜋 を得る.
10
測定結果(1) Hadoop における処理時間
slice 数 10 での測定,5回の計測の中央値を使用. 縦軸は時間[s],横軸は Slave 数. Slave 数の増加にともない処理時間は減少している.
11
測定結果(2) Hadoop と Spark の比較
slice 数 32 での測定,5回の計測の中央値を使用. Slave 数 は 8 台. 約15倍の処理時間となった.
12
測定結果(3) Spark における処理時間(P)
slice 数 32 での測定,5回の計測の中央値を使用.制御は Python. 縦軸は時間[s],横軸は Slave 数. Slave 数の増加にともない処理時間は減少している.
13
測定結果(4) Spark における処理時間(J)
slice 数 32 での測定,5回の計測の中央値を使用.制御は Java. 縦軸は時間[s],横軸は Slave 数. Slave 数 4 までは処理時間が減少しているが, Slave 数 8 台では処理時間が増加した.
14
測定結果(5) Spark における処理時間 slice 数 32 での測定,5回の計測の中央値を使用.(2)と(3)の比較.
縦軸は時間[s],横軸は Slave 数. Python による制御より Java による制御のほうが処理がはやい.
15
測定結果(6) Spark における処理時間(J)
slice 数 512 での測定,5回の計測の中央値を使用.制御は Java. 縦軸は時間[s],横軸は Slave 数. Slice 数 32 のときと異なり,Slave 数 8 でも処理時間は減少した.
16
測定結果(7) Spark における処理時間(J)
slice 数 32 ~ 512 での測定,5回の計測の中央値を使用.制御は Java. 縦軸は時間[s],横軸は Slave 数. Slice 数 64 以上では分散の効果がみられる.
17
考察 Hadoop ,Spark の双方において,Slave 数に応じて処理時間が短くなる結果を得た.
今回のテストプログラムにおいては,Spark は Hadoop の 倍の処理速度となった. Spark では インタプリタ型 である Python による制御より,コンパイル型である Java 制御の方が処理速 度がよかった. Java 制御では slice 数 32 程度の計算量において,処理時間短縮の限界があった. 4 つの Slave に 8 Slice ずつ 処理させるより,8 つの Slave に 4 ずつ 処理させる方が時間がかかる. 8 Slice 相当の計算のための時間より,8 Slave に計算を分散させるための時間が上回った. Slice 数 の増加にともなって,分散による効果が顕著になった.
18
課題 すべての Slice が同じ処理になるようなプログラムによるテストを用いた.
1回の処理が早く終わってしまう Slave がいなかった(待ち時間がなかった). Slave によって処理時間に差があるテストプログラムによる測定と考察ができなかった. Spark より Hadoop の方がよい結果を出すようなテストが出来なかった. メモリに入りきらないような大規模なデータなどを扱った測定,考察ができなかった. プログラミングの技術の問題 上の課題を解決するために Mandelbrot Set のようなテストプログラムを作成したが,並列処理の結果 が得られなかった.おそらくコードに問題があると思われる.
19
Mandelbrot 集合 Mandelbrot 集合とは,複素数平面上において,次の漸化式 𝑧 𝑛+1 = 𝑧 𝑛 2 +𝑐 𝑧 0 =0
𝑧 𝑛+1 = 𝑧 𝑛 2 +𝑐 𝑧 0 =0 によって定まる数列 {𝑧 𝑛 } が,𝑛→∞ のときに発散しないような複素数 𝑐 全体がつくる集合である. 今回は漸化式にしたがって 𝑧 255 までを求めるなかで,絶対値が 2 を 超えた時点で発散,1度も超えなければ収束と判定した. 発散の速さ(今回は発散したときの 𝑛 の値)に応じて 256 階調の色を つけて描写した. 範囲は −1.5≤Re 𝑧 ≤0.5, −1.0≤Im 𝑧 ≤1.0 とした.
20
Mandelbrot 集合 実装例 Size(128) × Size(128) の 要素を持つ配列 L をつくる.
<MAP> 各要素の番号を Size で割った商を x ,余りを y とする.これを複素数の実部,虚部と考えて漸 化式に代入し,はじめて絶対値が 2 を超えるときの添字 n を求める.超えなければ n = 255 とする.こ の n に対し,255 – n を返す. L = [0, 1,2,3, … , ] → x = [0, 0, 0, 0, … , 127], y = [0, 1, 2, 3, … , 127] → [255, 250, 238, 241, … , 0] <REDUCE> 配列の各要素を 128 × 128 の正方形に対応させ,0 ~ 255 で色を決める. 正方形を描画する.
21
Mandelbrot 集合
22
参考文献 「ラズベリー・パイ 超入門 改訂第3版」 ソーテック社 「Hadoop 第3版」 オライリー・ジャパン
「ラズベリー・パイ 超入門 改訂第3版」 ソーテック社 著 福田和宏 「Hadoop 第3版」 オライリー・ジャパン 著 Tom White, 訳 玉川竜司,兼田聖士 「はじめてのSpark」 オライリー・ジャパン 著 Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia, 訳 玉川竜司 Hadoop 及び Spark サポートページ , Raspberry Pi 上でHadoopクラスタを構成する / Raspberry Pi 2でApache Spark環境構築 , INTRODUCTION TO PROGRAMMING IN JAVA : Mandelbrot.java from §3.2
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.