sparklyr, R ile Apache Spark arasında bir arayüz sağlayarak R’daki büyük verileri işlemek için kullanılan açık kaynaklı küme hesaplama mantığında çalışan bir kütüphanedir.
Adı geçmişken biraz küme hesaplamadan bahsetmekte fayda var. 1967’de IBM’den Gene Amdahl tarafından yayınlanan bir makalede, paralel çalışma yapmanın bir yolu olarak küme hesaplamanın temelini adını taşıdığı Amdahl Yasası ile resmen ortaya koymuştur.
Küme hesaplama (cluster computing), hesaplama görevlerini birden çok bilgisayar arasında paylaşma işlemidir ve bu bilgisayarlar veya makineler kümeyi oluşturur. Kümeler, işlenen verilerin veya içeriğin kritikliği ve beklenen yüksek işleme hızı açısından yaygın olarak kullanılmaktadır. Kesinti süresi olmadan uzatılmış kullanılabilirlik ve ağır yük dengeleme yeteneği bekleyen siteler ve uygulamalar, bu kümeleri büyük ölçüde kullanmaktadır. Diğer bir ifadeyle, küme hesaplama, birçok bilgisayarın bir ağa bağlı olduğu ve tek bir varlık gibi çalıştığı anlamına gelir. Ağa bağlı her bilgisayara bir düğüm adı verilir. Küme hesaplama daha yüksek hesaplama hızı ve gelişmiş veri entegrasyonu sağlayarak karmaşık problemlere çözümler sunmaktadır. Küme hesaplama ağlar ile dağıtık sistem üzerinde çalışır. Bir küme hesaplama mimarisi gözümüzde canlanması adına aşağıdaki şekilde verilmiştir.
Kaynak: https://www.educba.com
İş uygulamalarına, performans optimizasyonuna ve yük dengeleme kümeleri, yüksek kullanılabilirlik (HA) kümeleri, yüksek performanslı (HP) kümeleri gibi mimari tercihlere bağlı olarak çeşitli küme hesaplama türleri kullanılır. Avantajlarından bazıları, işlem hızı, maliyet etkinliği, ölçeklenebilirlik ve kaynakların yüksek kullanılabilirliğidir. Küme hesaplamanın popüler uygulama alanları arasında Google arama motoru, Deprem Simülasyonu, Petrol Rezervuarı Simülasyonu ve Hava Tahmini sistemleri yer almaktadır.
Yapılan bir analizde Spark alt yapısının Hadoop’a göre Lojistik regresyon analizinde yaklaşık 110 kat daha hızlı olduğu bulunmuştur. Aşağıdaki grafikte Hadoop ve Spark Lojistik regresyon analizindeki hızları bakımından karşılaştırılmıştır. Diğer taraftan Spark’ın bağımsız küme modunu kullanarak EC2’de, Hadoop YARN’de, Mesos’ta veya Kubernetes’te çalıştırabilirsiniz. HDFS, Apache Cassandra, Apache HBase, Apache Hive ve diğer yüzlerce veri kaynağındaki verilere Spark ile ulaşabilirsiniz.
Kaynak: https://spark.apache.org/mllib/
Sparklyr kütüphanesi ile büyük veriyi bir Spark kümesi içerisinde analiz edebilirsiniz. Bu paket, hem bellekte hem de bellek dışında veri çerçevesi nesneleriyle çalışmak için popüler bir araç olan dplyr paketi için eksiksiz bir zemin oluşturmaktadır. R kodunu Spark SQL’e çevirmek için dplyr kullanabilirsiniz. Sparklyr ayrıca MLlib‘i destekler, böylece Spark’ta verileriniz üzerinde sınıflandırma, regresyon, küme, karar ağaçları ve daha birçok makine öğrenimi algoritmasını çalıştırabilirsiniz. MLlib, Apache Spark’ın ölçeklenebilir makine öğrenimi kütüphanesidir. Java, Scala, Python programlama dilllerinde de kullanılabilir. Sparklyr ile, geleneksel olarak R belleğini aşan büyük miktarda veriyi analiz edebilir, daha fazla görselleştirme ve dokümantasyon için Spark’tan R’a sonuçlar toplayabilirsiniz.
Sparklyr paketi hakkında kısa bir bilgi verdikten sonra şimdi R’da Sparklyr paketini yükleyerek adım adım örnek uygulama yapalım.
Aşağıdaki kod bloğu ile sparklyr paketini CRAN‘dan kurabilirsiniz.
install.packages("sparklyr")
sparklyr paketini kurduktan sonra sparklyr kütüphanesini çağırmak için aşağıdaki R kod bloğunu yazıyoruz. 2. satırdaki ve 3. satırdaki kodlar sparklyr paketinin güncel paketini yükleme amaçlı kullanılmaktadır. En güncel versiyonu yüklemek için RStudio IDE‘yi de kullanabilirsiniz.
library(sparklyr)
spark_install(version = "2.1.0")
#yada
devtools::install_github("rstudio/sparklyr")# en son versiyonu yüklemek için
sparklyr arayüz paketi ile Spark’a bağlanmak için aşağıdaki R kod bloğu yazılır. Hem yerel Spark kümesine hem de uzak Spark kümelerine bağlanabilirsiniz. Burada, spark_connect işlevi aracılığıyla yerel bir Spark kümesine bağlanacağız:
library(sparklyr)
#Yerel Spark ile bağlantı kurmak için
sc <- spark_connect(master = "local")
#Spark ile bağlantıyı kesmek istiyorsak: Bunu genelde yapılan işlem tamamlandıktan sonra yaparız.
spark_disconnect(sc)#başlangıçta çalıştırmayınız.
#eğer "databricks" metodu ile Spark ile bağlantı kurmak istersek
sc <- spark_connect(method = "databricks")
Artık mevcut tüm dplyr paketi özellikleri küme içindeki tablolarda kullanabiliriz. R’den Spark kümesine bazı veri kümelerini kopyalayarak başlayacağız. Basit ve bilinen bir mtcar veri seti ile başlayalım.
mtcars_tbl<-sdf_copy_to(sc, mtcars, "mymtcars", overwrite = TRUE)#birden çalıştırmak istediğim için overwrite = TRUE bileşenini kullandım.
mtcars_tbl %>% select(-carb) %>% head()#ilk 6 kaydı getirmek için. Burada carb değişkeni dışarıda bırakılmıştır sayfaya sığmadığı için
Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen ilk 6 kayıt aşağıda verilmiştir.
mtcars veri setinde cyl (silindir)‘ye göre basit bir filtreleme yapacak olursak;
mtcars_tbl %>% select(-carb) %>% filter(cyl == 6) %>% head() #silindiri 6'ya eşit olanların ilk 6 kaydı. Burada carb değişkeni dışarıda bırakılmıştır sayfaya sığmadığı için.
Yukarıdaki R kod bloğunun çalıştırılmasından sonra filtrelemeye göre elde edilen ilk 6 kayıt aşağıda verilmiştir.
Son olarak aynı veri setinden ggplot paketi kullanarak spark üzerinde grafik oluşturalım. mtcars veri seti setinde vites tipi olan “am” değişkeni iki kategoriden oluşmakta olup 0 otomatik vitesi, 1 ise manuel vitesi gösterecek şekilde recode edildikten sonra vites türüne göre hp (beygir gücü) ve mpg (galon yakıt başına gidilen mil) değişken değerleri grafik üzerinde verilmiştir.
library(ggplot2)
mtcars_tbl %>% select(mpg, cyl,hp, am) %>% mutate(am=if_else(am==0,"automatic", "manuel")) %>% ggplot(aes(hp, mpg, fill=am)) +
geom_point() +
geom_smooth() +
facet_wrap(~am)+
theme_light()
Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen grafik aşağıda verilmiştir.
İşlemimizi tamamladığımız varsayımıyla Spark ile bağlantıyı kesmek için spark_disconnect() fonksiyonunu kullanıyoruz.
#Spark ile bağlantıyı kesmek istiyorsak: Bunu genelde işlem tamamlandıktan sonra yaparız.
spark_disconnect(sc)#başlangıçta çalıştırmayınız:)
Özetle R ile Apache Spark arasında bir arayüz sağlayan ve büyük verinin analizinde kullanılan sparklyr R paketi ile hacimsel olarak küçük bir veri seti üzerinde örnek bir uygulama yapılarak söz konusu paketin kullanımı hakkında farkındalık oluşturulmaya çalışılmıştır.
Faydalı olması dileğiyle.
Bilimle ve teknolojiyle kalınız.
Saygılarımla.
Not: Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.
Note: It can not be cited or copied without referencing.
Yararlanılan Kaynaklar
UKEssays. (November 2018). Cluster Computing: History, Applications and Benefits. Retrieved from https://www.ukessays.com/essays/computer-science/cluster-computing-history-applications-9597.php?vref=1
https://databricks.com./
https://therinspark.com/intro.html
What is Cluster Computing?
https://spark.apache.org/docs/latest/cluster-overview.html
https://spark.rstudio.com/
https://spark.apache.org/mllib/
https://databricks-prod-cloudfront.cloud.databricks.com/public/4027ec902e239c93eaaa8714f173bcfc/2961012104553482/3725396058299890/1806228006848429/latest.html
https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/mtcars.html
https://www.r-project.org/