danardono.staff.ugm.ac.iddanardono.staff.ugm.ac.id/matakuliah/bigdata/kel08 RHa…  · Web...

21
MAKALAH BIG DATA “ PENGENALAN R-Hadoop” Disusun oleh : Alya Puspitasari (13/348069/PA/15438) Dian Rafi’ah (14/364232/PA/15959) Isna Shofia (13/350100/PA/15617) Luh Putu Arlin Sumartini (14/364188/PA/15940) Dosen Pengampu : Drs. Danardono, MPH., Ph.D. Vemmie N.L., S.Si., M.Sc. PROGRAM STUDI STATISTIKA DEPARTEMEN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS GADJAH MADA

Transcript of danardono.staff.ugm.ac.iddanardono.staff.ugm.ac.id/matakuliah/bigdata/kel08 RHa…  · Web...

MAKALAH BIG DATA

“ PENGENALAN R-Hadoop”

Disusun oleh :

Alya Puspitasari (13/348069/PA/15438)

Dian Rafi’ah (14/364232/PA/15959)

Isna Shofia (13/350100/PA/15617)

Luh Putu Arlin Sumartini (14/364188/PA/15940)

Dosen Pengampu :

Drs. Danardono, MPH., Ph.D.

Vemmie N.L., S.Si., M.Sc.

PROGRAM STUDI STATISTIKA DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

YOGYAKARTA

2017

BAB I

PENDAHULUAN

1.1. Latar belakang

Bekerja dan menganalisis big data akan menjadi sangat sulit jika

menggunakan cara klasik seperti system manajemen basis data relasional atau

paket software desktop untuk statistic dan visualisasi data. Seharusnya big data

membutuhkan cluster yang sangat besar dengan ratusan atau bahkan ribuan

kodding komputasi. Salah satu software tools yang sukses digunakan untuk

memproses big data adalah Hadoop. Untuk mengoptimasikan fungsi Hadoop

ini bagi permasalahan pada bidang statistic, maka munculah Rhadoop yang

merupakan perpaduan dari alat pengolahan statistika, yaitu R dengan Hadoop.

1.2. Pengertian Hadoop

Hadoop merupakan framework software berbasis java dan open source yang

berfungsi untuk mengolah data yang memiliki ukuran besar secara terdistribusi.

Hadoop dikembangkan dengan tujuan untuk mendistribusikan proses dari data

set yang besar menggunakan beberapa cluster dari komoditas hardware.

Hadoop juga merupakan sebuah platform middleware yang mengatur sebuah

cluster dari beberapa computer yang dikembangkan pada platform Java, dimana

java merupakan bahasa pemrograman utama untuk Hadoop, bahasa lain yang

dapat juga digunakan untuk Hadoop adalah R, Python atau Ruby.

1.3. Pengertian R

R adalah sebuah free software untuk statistic dan visualisasi data. R ini

tersedia untuk UNIX, Windows, dan Mac OS. R berisi fasilitas untuk

mengontrol data, menyajikan prosedur dengan kinerja yang tinggi untuk

komputasi matrix, sebuah kumpulan tools yang besar untuk analisis, fungsi

grafis untuk visualisasi data dan sebuah bahasa pemrograman langsung. R

berisi sekitar 25 package standard dan banyak lagi package lainnya yang

tersedia di CRAN. Disamping official statistic, R digunakan untuk banyak

sektor lainnya, seperti sektor keuangan, manufaktur, riset akademik, dll.

1.4. Pengertian R-Hadoop

Rhadoop adalah kumpulan dari 3 R package yang memungkin kan pengguna

mengelola dan menganalisa data dengan Hadoop. R-Hadoop juga merupakan

proyek open source yang dikembangkan oleh Revolution Analytics yang

menyediakan integrasi client-side R dan hadoop. Hal ini memungkinkan untuk

menjalankan MapReduce dalam R seperti Rhipe.

BAB II

PEMBAHASAN

2.1. Package RHadoop

RHadoop merupakan proyek open source yang dikembangkan oleh Revolution

Analytics (Http://www.revolutionanalytics.com/) yang menyediakan integrasi

client-side R dan Hadoop. Hal ini memungkinkan untuk menjalankan

MapReduce dalam R seperti Rhipe.

Terdapat 3 package dari RHadoop yaitu :

Package Deskripsi

Rmr Analisis Statistik menggunakan R, melalui MapReduce pada Cluster Hadoop

Rhdfs Konektivitas ke Hadoop Distributed File System (HDFS). Program R dapat melihat, membaca, menulis, dan memodifikasi file yang tersimpan dalam HDFS

Rhbase Konektivitas ke database terdistribusi HBase. Program R dapat melihat, membaca, menulis, dan memodifikasi tabel yang tersimpan dalam HBase

Berikut deskripsi dari 3 package dari RHadoop :

rmr

- rmr merupakan kumpulan fungsi yang menyediakan dan mengintegrasikan

R dan model penghitungan melalui MapReduce.

- rmr adalah R interface yang menyediakan Hadoop Fasilitas MapReduce di

dalam lingkungan R.

- Jadi, program R hanya perlu membagi logika aplikasi ke dalam peta dan

mengurangi fase serta submit menggunakan metode rmr.

- Setelah itu, rmr memanggil Hadoop streaming MapReduce API dengan

beberapa parameter sebagai direktori input, direktori output, mapper,

reducer, dan seterusnya, untuk melakukan R MapReduce Pekerjaan di atas

cluster Hadoop.

rhdfs

- Sebagai program Hadoop MapReduce gunakan HDFS untuk Mengambil

input dan menulis hasilnya, itu diperlukan untuk mengaksesnya dari R

console.

- Program R dapat dengan mudah melakukan pembacaan dan Menulis

operasi pada file data terdistribusi.

- Pada dasarnya, rhdfs package memanggil HDFS API di backend untuk

mengoperasikan sumber data yang tersimpan di HDFS.

rhbase

- R interface untuk mengoperasikan data Hadoop Hbase yang tersimpan

pada jaringan terdistribusi melalui thrift server. rhbase package dirancang

dengan beberapa metode untuk inisialisasi, baca/tulis dan Operasi

manipulasi tabel.

2.2. Implementasi Package Rhadoop

Berikut ini akan diberikan pseudo code mengenai penggunaan package

Rhadoop dan perbandingannya tanpa menggunakan package Rhadoop. Contoh

yang digunakan kali ini adalah perhitungan kata (Word Count), dan regresi

logistik pada data set yang terdapat di R yaitu data Iris.

a. Word Count with Rhadoop

library(rmr2)

library(rhdfs)

hdfs.init()

rmr.options(backend = "local")

# Download File

dir.create("data")

ebookLocal <- "data/ullyses.txt"

if(!file.exists(ebookLocal)) {

download.file(url = "http://www.gutenberg.org/ebooks/4300.txt.utf-

8",destfile = ebookLocal)

}

file.exists(ebookLocal)

readLines(ebookLocal, n = 50)

# Copy file to HDFS

ebookHadoop <- dirname(ebookLocal)

hdfs.dircreate(ebookHadoop)

hdfs.ls(ebookHadoop)

hdfs.put(src = ebookLocal, dest = ebookHadoop)

hdfs.ls(ebookHadoop)

============ word count algorithm ============

library(rmr2)

library(rhdfs)

hdfs.init()

rmr.options(backend = "local")

# Script to perform word count

ebookLocation <- "data/ullyses.txt"

dat <- readLines(ebookLocation, n = 100)

words <- unlist(strsplit(dat, split = "[[:space:][:punct:]]"))

words <- tolower(words)

words <- gsub("[0-9]", "", words)

words <- words[words != ""]

wordcount <- table(words)

keyval(

key = names(wordcount),

val = as.numeric(wordcount)

)

# Function to do word count

wordcount <- function(location, n = -1L){

dat <- readLines(location, n = n)

words <- unlist(strsplit(dat, split = "[[:space:][:punct:]]"))

words <- tolower(words)

words <- gsub("[0-9]", "", words)

words <- words[words != ""]

words <- words[!is.na(words)]

x <- table(words)

keyval(

key = names(x),

val = as.numeric(x)

)

}

x <- wordcount("data/ullyses.txt", n = -1)

lapply(x, head, 10)

lapply(x, tail, 10)

============ word count mapreduce ============

library(rmr2)

library(rhdfs)

hdfs.init()

rmr.options(backend = "local")

# Word count

ebookLocation <- "data/ullyses.txt"

m <- mapreduce(input = ebookLocation,

input.format = "text",

map = function(k, v){

words <- unlist(strsplit(v, split = "[[:space:][:punct:]]"))

words <- tolower(words)

words <- gsub("[0-9]", "", words)

words <- words[words != ""]

wordcount <- table(words)

keyval(

key = names(wordcount),

val = as.numeric(wordcount)

)

}

reduce = function(k, counts){

keyval(key = k,

val = sum(counts))

}

)

# Retrieve results and prepare to plot

x <- from.dfs(m)

dat <- data.frame(

word = keys(x),

count = values(x)

)

dat <- dat[order(dat$count, decreasing=TRUE), ]

head(dat, 50)

with(head(dat, 25), plot(count, names = word))

b. Logit regression data iris

# Create design matrix

iris2 <- transform(iris,

Virginica = Species == "virginica",

Species = NULL

)

dat <- cbind(Virginica = iris2$Virginica * 2 - 1,

model.matrix(Virginica ~ ., iris2)

)

str(dat)

head(dat)

# Send design matrix to dfs

hdp.iris2 <- to.dfs(dat)

hdp.iris2()

from.dfs(hdp.iris2)

model <- logistic.regression(hdp.iris2, dims = 5, iterations = 5, alpha = 0.1)

model

#Inspect confusion matrix

table(iris2$Virginica,

as.logical(round(

predict(model, iris2, type = "response")

, 2))

)

============ logit regression data Iris ============

iris2 <- transform(iris,

Setosa = Species == "virginica",

Species = NULL

)

model <- glm(Setosa ~ ., data = iris2, family = binomial)

table(iris2$Setosa,

as.logical(round(

predict(model, iris2, type = "response")

, 2))

)

gdescent <- function(input, iterations, dims, alpha){

plane = t(rep(0, dims))

M <- input

for (i in 1:iterations) {

# map

Y <- M[, 1]

X <- M[, -1]

map <- Y * X * plogis(-Y * as.numeric(X %*% t(plane)))

# reduce

gradient <- colSums(map)

plane <- plane + alpha * gradient

}

plane

}

library(ggplot2)

mean(diamonds$price)

quantile(diamonds$price)

glm(price > 5324 ~ ., data = diamonds, family = binomial)

iris2 <- transform(iris,

Virginica = Species == "versicolor",

Species = NULL

)

str(iris2)

dat <- cbind(Virginica = iris2$Virginica * 2 - 1,

model.matrix(Virginica ~ ., iris2)

)

gdescent(dat, dims = 5, iterations = 1000, alpha = 0.01)

coef(glm(Virginica ~ ., data = iris2, family = binomial))

============ logit regression mapreduce ============

library(ggplot2)

mean(diamonds$price)

quantile(diamonds$price)

glm(price > 5324 ~ ., data = diamonds, family = binomial)

iris2 <- transform(iris,

Virginica = Species == "versicolor",

Species = NULL

)

str(iris2)

dat <- cbind(Virginica = iris2$Virginica * 2 - 1,

model.matrix(Virginica ~ ., iris2)

)

gdescent(dat, dims = 5, iterations = 1000, alpha = 0.01)

coef(glm(Virginica ~ ., data = iris2, family = binomial))

library(rmr2)

rmr.options(backend = "local")

logistic.regression <- function(input, iterations, dims, alpha){

plane <- t(rep(0, dims))

g <- function(z) 1 / (1 + exp(-z))

lr.map <- function(., M) {

Y <- M[,1]

X <- M[,-1]

keyval(

1,

Y * X * g(-Y * as.numeric(X %*% t(plane)))

)

}

lr.reduce <- function(k, Z){

keyval(k, t(as.matrix(apply(Z, 2, sum))))

}

for (i in 1:iterations) {

x <- mapreduce(

input,

map = lr.map,

reduce = lr.reduce,

combine = TRUE

)

gradient <- values(from.dfs(x))

plane <- plane + alpha * gradient

}

plane

}

BAB III

PENUTUP

1. Rhadoop adalah kumpulan dari 3 R package yang memungkin kan pengguna

mengelola dan menganalisa data dengan Hadoop. R-Hadoop juga merupakan

proyek open source yang dikembangkan oleh Revolution Analytics yang

menyediakan integrasi client-side R dan hadoop. Hal ini memungkinkan

untuk menjalankan MapReduce dalam R seperti Rhipe.

2. Package Rhadoop ada 3 yaitu:

- rmr

- rhdfs

- rhbase

3. Kelebihan Rhadoop :

Untuk bisa memaksimalkan pengolahanbig data seperti yang ada saat ini, kita

dapat memanfaatkan aplikasi teknologi bernama R Hadoop. Walaupun R dan

Hadoop bukan teman alami namun dengan munculnya paket baru seperti

Rhadoop, RHIVE, dan RHIPE - dua teknologi yang tampaknya berbeda,

saling melengkapi untuk analisis data dan visualisasi yang besar. Hadoop

adalah teknologi big data untuk menyimpan data dengan jumlah besar dengan

biaya ekonomis dan bahasa pemrograman R adalah alat untuk analisis data

statistik dan visualisasi. R dan Hadoop digabungkan bersama-sama terbukti

menjadi alat yang penting dan tak ada bandingannya untuk beberapa analisis

big data bidang bisnis.

4. Kekurangan Rhadoop :

- Penggunaanya rumit karena harus terhubung dengan server.

- Bisa digunakan hanya dengan sistem operasi linux.

DAFTAR PUSTAKA

Virgillito Antonino 2016. Implementing MapReduce programs:RHadoop.

Avalaible at https://circabc.europa.eu/sd/a/6e9bc4ea-502b-4747-a82c-

9391fce49c4f/Day%203-01 RHadoop.pd f di akses tanggal 7 Mei 2017

Anonim 2013. Rhadoop Installation Guide for Red Hat Enterprise Linux. Avalaible at

https://s3.amazonaws.com/RHadoop/RHadoop2.0.2u2_Installation_Configura

tion_for_RedHat.pd f di akses tanggal 7 Mei 2017

Bogdan 2014. Intergrating R and Hadoop for Big Data Analysis. Avalaible at

http://www.revistadestatistica.ro/wp-content/uploads/2014/07/RRS_2_2014_a

08.pd f di akses tanggal 7 Mei 2017

Nemschoff Michele 2014. Installation Guide for Rhadoop on MAPR Now

Available. Avalaible at https://mapr.com/blog/installation-guide-rhadoop-

mapr-now-available/ di akses tanggal 7 Mei 2017

Anonim 2014. RHadoop – A Perfect Match for Big Data. Avalaible at

https://www.dezyre.com/article/r-hadoop-a-perfect-match-for-big-data/292 di

akses tanggal 7 Mei 2017

Anonim 2016. Index Of Docs. Avalaible at https://had oop.apache.org/docs/ di akses

tanggal 7 Mei 2017