• Nie Znaleziono Wyników

W pracy zbadano wydajność i produktywność programistyczną wykorzystania chmur obliczeniowych oraz dwu środowisk programistycznych, a mianowicie SPARK i GA-SPI, do równoległej implementacji algorytmów eksplorujących duże zbiory danych na przykładzie algorytmu ID3 generowania drzew decyzyjnych. Wszystkie implementa-cje zostały uruchomione na platformie Google Compute Engine.

Po analizie uzyskanych czasów wykonania programu w środowisku Spark oraz danych dostarczonych przez serwis Spark Web UI stwierdzono, że możliwa jest op-tymalizacja tej implementacji. Polegała ona głównie na jawnym określeniu buforo-wania w pamięci wyników przekształceń niektórych magazynów danych. Dodatkowo optymalizowano także konfigurację uruchomieniową środowiska Spark. W trakcie op-tymalizacji bardzo przydatny okazał się diagram prezentujący sposób przekształcania RDD, stworzony z wykorzystaniem diagramu czynności języka UML oraz diagramu przepływu danych DFD, zaprezentowany na rysunku 5.

W środowisku GASPI stwierdzono, iż czasy komunikacji stanowią ważną skła-dową czasu realizacji programu. Wynikało to zastosowania podejścia znanego jako synchroniczna konstrukcja drzewa (ang. synchronous tree construction) opisanego w pracy [15]. Znanym problemem tego podejścia jest duży koszt komunikacji. W środowisku GASPI objawiał się on podczas realizacji procesu synchronizacji asynchronicznej realizacji funkcji gaspi_write. Był on także przyczyną braku popraw-nych wyników przy uruchomieniu kodu na węzłach wyposażopopraw-nych w 4 vCPU. Ob-serwacja ta oraz wnioski z pracy [15] sugerują, że skuteczniejszą metodą realizacji implementacji algorytmu ID3 jest podejście hybrydowe.

Oprócz wydajności przetwarzania, w pracy starano się uwzględnić kwestię pro-duktywności obu środowisk. Kod drivera dla środowiska Spark składał się mniejszej liczby linii kodu niż program dla środowiska GASPI. Widać więc, nawet nie uwzględniając stopnia złożoności obu środowisk, że większy nakład pracy konieczny był przy tworzeniu programu dla środowiska GASPI. Jednak to właśnie środowisko oferuje największą elastyczność pracy dającą możliwość dowolnej implementacji pro-gramu. Jest to jednak jednocześnie zaleta ale i wada. W przypadku bowiem koniecz-ności zmiany podejścia do implementacji należy zmienić dużą ilość kodu, co wiąże się z dużym nakładem pracy. Ocena ta jednak powinna zostać uszczegółowiona z wykorzystaniem różnorodnych metryk opisujących tworzony kod. Sądzimy

rów-nież, że pod uwagę należy wziąć metodyki zwinne tworzenia kodu, które uzupeł-nione będą o wymaganie tworzenia kodu wydajnego. Uważamy bowiem, że itera-cyjność tworzenia kodu wykorzystywana w tych metodykach, pozwoli w na wcze-snym etapie zidentyfikować problem małej wydajności tworzonego kodu, co będzie miało pozytywny wpływ na produktywność programistyczną, w szczególności dla środowiska GASPI.

Analizując uzyskane czasy pracy programu stworzonego z wykorzystaniem śro-dowiska GASPI stwierdzić można, iż platforma Google Compute Engine, będąca publiczną chmurą obliczeniową nie umożliwia pełnego wykorzystania możliwości tego środowiska. Wynika to z konieczności synchronizacji asynchronicznej realiza-cji komunikarealiza-cji jednostronnej, która to synchronizacja jest wrażliwa na wszelkie opóźnienia wynikające z realizacji zdań innych użytkowników w publicznej chmu-rze obliczeniowej.

Dalsze badania powinny być więc realizowane zarówno w zamkniętych środo-wiskach gridowych, dających możliwość pełnej kontroli realizowanych zadań, jak i w różnorodnych środowiskach chmur obliczeniowych. W trakcie badań należy skorzystać zarówno, z opisanego w niniejszym artykule podejścia implementacyj-nego, jak i wykorzystać wskazane już podejście hybrydowe. Taki sposób realizacji badań umożliwi ocenę wpływu różnorodnych właściwości chmur na wydajność wy-konywanych programów. Tym sposobem możliwa będzie ocena przydatności chmur obliczeniowych i gridów do eksploracji dużych zbiorów danych.

Bibliografia

[1] Armbrust M. at el., A view of cloud computing, “Communications of the ACM”, Vol. 53, No. 4

[2] Compute Engine – IaaS | Google Cloud Platform, https://cloud.google.com/ compute/ [18.062016]

[3] Zaharia M.A., An Architecture for and Fast and General Data Processing on Large Clusters, Technical Report No. UCB/EECS-2014-12, Electrical Engi-neering and Computer Sciences University of California at Berkeley, 2014, http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-12.html [4] Almasi G., PGAS (Partitioned Global Address Space) Languages, w:

Encyc-lopedia of Parallel Computing, (ed.) Padua D., Springer, Ney York, 2011 [5] GASPI: Global Address Space Programming Interface, Specification of

a PGAS API for communication, https://raw.githubusercontent.com/GASPI-Forum/GASPI-Forum.github.io/master/standards/GASPI-16.1.pdf

[6] McAfee A., Brynjolfsson E., Davenport T.H., Patil D.J., Barton D., Big data. The management revolution, “Harvard Bus Reviev” 2012, Vol. 90, No. 10 [7] Han J., Kamber M., Pei J., Data mining: concepts and techniques, Elsevier,

Burlington, 2011

[8] Larose D.T., Discovering knowledge in data: an introduction to data mining. John Wiley & Sons, Hoboken, 2014

[9] Hand D.J., Mannila H., Smyth P., Principles of data mining, MIT Press, Cam-bridge, 2001

[10] Kufrin R., Decision trees on parallel processors, “Machine Intelligence and Pattern Recognition” 1997, Vol. 20

[11] Yıldız O.T., Dikmen O., Parallel univariate decision trees, “Pattern Recogni-tion Letters” 2007, Vol. 28, No. 7

[12] Müller W., Wysotzki F., The decision-tree algorithm CAL5 based on a stati-stical approach to its splitting algorithm, w: Machine learning and statistics. The interface, (eds.) Nakhaeizadeh G. Taylor C.C., Wiley, New York, 1997 [13] Quinlan J.R., Induction of decision trees, “Machine learning” 1986, Vol. 1,

No. 1

[14] Richards J.T., Brezin J., Swart C.B., Halverson C.A., Productivity in parallel programming: A decade of progress, “Queue” 2014, Vol. 12, No. 9

[15] Srivastava A., Han E.-H., Kumar V., Singh V., Parallel formulations of deci-sion-tree classification algorithms, w: High Performance Data Mining, Sprin-ger, Berlin–Heidelberg,1999

[16] Dean J., Ghemawat S., MapReduce: simplified data processing on large clu-sters, “Communications of the ACM” 2008, Vol. 51, No. 1

[17] Borthakur D., HDFS architecture guide, HADOOP APACHE PROJECT, 2008, http://hadoop. apache. org/common/docs/current/hdfs design. pdf, [18] Vavilapalli V. K. at el., Apache hadoop yarn: Yet another resource negotiator,

Proceedings of the 4th annual Symposium on Cloud Computing, 2013 [19] Landset S., Khoshgoftaar T.M., Richter A.N., Hasanin T., A survey of open

source tools for machine learning with big data in the Hadoop ecosystem, “Journal of Big Data” 2015, Vol. 2, No. 1

[20] Zaharia M. at el., Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing, Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation, 2012

[21] Zaharia M., Chowdhury M., Franklin M.J., Shenker S., Stoica I., Spark: Clu-ster Computing with Working Sets, “HotCloud” 2010, Vol. 10

[22] Karau H., Konwinski A., Wendell P., M. Zaharia, Learning Spark: Lightning-Fast Big Data Analysis, O’Reilly Media, Sebastopol, 2015

[23] Karau H., Fast Data Processing With Spark, Packt Publishing, Birmingham, 2013

[24] Davidson A., A Deeper Understanding of Spark’s Internals, https://spark- summit.org/wp-content/uploads/2014/07/A-Deeper-Understanding-of-Spark-Internals-Aaron-Davidson.pdf [09.03.2016]

[25] Beena T.L.A, Amalarethinam D.G., Analysis of Task Scheduling Algorithm in Fine-Grained and Course-Grained Dags in Cloud Environment, “Intern. J. Fuzzy Mathematical Archive” 2015, Vol. 6, No. 2

[26] Yelick K. at el., Productivity and performance using partitioned global ad-dress space languages, Proceedings of the 2007 international workshop on Parallel symbolic computation, 2007

[27] Forum of the PGAS-API GASPI, http://www.gaspi.de/gaspi/ [29.032016] [28] Documentation of GPI-2. Implement the GASPI specification, http://www.

gpi-site.com/gpi2/docs/ [02.04.2016]

[29] MPI: A Message-Passing Interface Standard, Version 2.2, Message Passing Interface Forum, September 4, 2009, http://mpi-forum.org/docs/mpi-2.2/ mpi22-report.pdf

[30] UML 2.5, http://www.omg.org/spec/UML/2.5/PDF/ [17.02.2016]

[31] Yourdon E., Modern structured analysis, Vol. 191, Yourdon Press Englewood Cliffs, New York, 1989

[32] Snir M., MPI--the Complete Reference: The MPI core, Vol. 1. MIT Press, Cambridge, 1998

[33] Tutorial GPI-2, http://www.gpi-site.com/gpi2/tutorial/ [30.04.2016]

[34] Machine Types | Compute Engine | Google Cloud Platform, https://cloud. google.com/compute/docs/machine-types [1806.2016]

[35] Storage Classes | Cloud Storage | Google Cloud Platform, https://cloud.goo-gle.com/storage/docs/storage-classes [18.06.2016]

[36] Downloads|Apache Spark, http://spark.apache.org/downloads.html [18.06.2016] [37] GPI-2 | GPI-2 main website, http://www.gpi-site.com/gpi2/ [18.06.2016] [38] RFC 3530 – Network File System (NFS) version 4 Protocol, https://tools.

ietf.org/html/rfc3530 [18-cze-2016]

[39] Maven – Welcome to Apache Maven, https://maven.apache.org/ [18.06.2016] [40] Optimize Options – Using the GNU Compiler Collection (GCC), https://gcc.

gnu.org/onlinedocs/gcc/Optimize-Options.html [18.06.2016]

[41] ISO/IEC JTC1/SC22/WG21 – The C++ Standards Committee – ISOCPP, http://www.open-std.org/JTC1/SC22/WG21/ [18.06.2016]

[42] Kwiatkowski J., Parallel applications performance evaluation using the con-cept of granularity, International Conference on Parallel Processing and Ap-plied Mathematics, Warsaw, 2013

[43] Chiba T., Onodera T., Workload Characterization and Optimization of TPC-H Queries on Apache Spark, IBM Research Report RT0968, Tokyo, 2015 [44] Configuration – Spark 1.4.0 Documentation, http://spark.apache.org/docs/

1.4.0/configuration.html#runtime-environment [27.06.2016]

[45] Spark Programming Guide – Spark 1.6.1 Documentation, http://spark.apa-che.org/docs/latest/programming-guide.html#rdd-persistence [27.06.2016]

Performance and productivity comparison of algorithm of decision tree gener-ation implemented in SPARK and GASPI environments

Abstract

In this paper, the performance and programming productivity of cloud compu-ting is explored for two different programming environments (SPARK and GASPI) applied to parallel implementation of big data problems. The ID3 al-gorithm of decision tree generation is selected as a test case. All the experi-ments are performed on the Google Compute Engine platform.

Keywords – Cloud computing, big data, decision tree generation, ID3 algorithm, SPARK and GASPI environments, comparison, Google Compute Engine

Powiązane dokumenty