# Lab 01 - Setup Lab Environment
## Ubuntu, Virtualbox, Spark, Jupyter Notebook, Python.
## Pendahuluan
Dalam bab ini, kita akan mempelajari berbagai cara untuk menyiapkan lingkungan kerja yang mendukung Spark. Kita akan menggunakan VirtualBox untuk menyiapkan sistem berbasis Linux secara lokal, atau kita akan terhubung secara online ke sistem berbasis Linux. Alasan kita berfokus pada Linux di sini adalah karena secara realistis, Spark biasanya tidak akan berjalan di satu mesin saja. Pada dasarnya, itulah inti dari Spark, karena data akan sangat besar sehingga tidak akan muat di satu mesin saja, dan kita akan memerlukan cluster atau layanan seperti AWS atau Google Cloud untuk menjalankannya. Layanan cluster ini hampir selalu berbasis sistem Linux.
## Tujuan Praktikum
1. Instalasi VirtualBox dan Ubuntu.
2. Instalasi Python, Jupyter Notebook, dan Spark pada Ubuntu.
## Instalasi VirtualBox dan Ubuntu
Untuk menginstal VirtualBox dan Ubuntu, silakan ikuti langkah-langkah pada halaman web berikut: [https://www.nesabamedia.com/cara-install-ubuntu-di-virtualbox/](https://www.nesabamedia.com/cara-install-ubuntu-di-virtualbox/)
## Instalasi Python, Jupyter Notebook, dan Spark
### Instalasi Python
Ubuntu sudah memiliki Python bawaan. Untuk memeriksa apakah Python sudah terinstal, gunakan perintah berikut:
```bash
python3 --version
```
Jika Python sudah terinstal, versi Python akan ditampilkan di terminal.
### Instalasi Jupyter Notebook
Selanjutnya, mari kita instal Jupyter Notebook dengan mengikuti langkah-langkah berikut:
1. Instal aplikasi `pip` untuk Python 3:
```bash
sudo apt install python3-pip
```
2. Instal Jupyter Notebook:
```bash
pip3 install jupyter
```
3. Tambahkan Jupyter ke path:
```bash
export PATH=$PATH:~/.local/bin
```
4. Jalankan Jupyter Notebook untuk memastikan instalasi berhasil:
```bash
jupyter notebook
```
Sejauh ini, instalasi Jupyter Notebook dan Python kita sudah berjalan dengan baik. Langkah selanjutnya yang perlu kita lakukan adalah mengunduh Spark dan menghubungkannya dengan Python. Langkah-langkah berikut ini dapat dilakukan untuk menghubungkan Spark dengan Python.
### Instalasi Java dan Scala
1. Pertama, kita perlu menginstal Java di mesin kita. Untuk itu, kita bisa memberikan perintah berikut di terminal:
Instal Java:
```bash
sudo apt-get update
sudo apt-get install default-jre
```
2. Verifikasi instalasi Java:
```bash
java -version
```
3. Setelah Java berhasil diinstal, kita lanjutkan dengan menginstal Scala. Kita dapat melakukan ini dengan perintah berikut:
```bash
sudo apt-get install scala
```
4. Verifikasi instalasi Scala:
```bash
scala -version
```
### Instalasi Py4J
Selanjutnya, kita perlu menginstal library bernama py4j yang menghubungkan Java dan Scala dengan Python. Kita bisa memberikan perintah berikut untuk menginstal py4j:
```bash
pip3 install py4j
```
### Instalasi Spark
Akhirnya, kita siap untuk menginstal Spark dan Hadoop.
1. Unduh Spark dari situs resmi: [https://spark.apache.org/downloads.html](https://spark.apache.org/downloads.html)
2. Pilih versi stabil dengan jenis paket *Pre-built for Apache Hadoop 2.7*.
3. Ekstrak file yang diunduh:
```bash
sudo tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz
```
4. Tambahkan path Spark ke environment variables:
```bash
export SPARK_HOME='/home/ubuntu/spark-2.4.5-bin-hadoop2.7'
export PATH=$SPARK_HOME:$PATH
export PYTHONPATH=$SPARK_HOME/python:$PYTHONPATH
```
5. Hubungkan Jupyter Notebook dengan Spark:
```bash
export PYSPARK_DRIVER_PYTHON='jupyter'
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'
export PYSPARK_PYTHON=python3
```
### Menangani Masalah Hak Akses
Catatan: Umumnya, folder Spark akan terkunci dan kita mungkin menghadapi beberapa masalah izin. Untuk memperbaiki masalah izin yang mungkin terjadi saat menggunakan Jupyter Notebook untuk Spark, kita perlu mengubah hak akses untuk folder-folder ini. Kita dapat melakukannya dengan memberikan perintah berikut:
```bash
sudo chmod -R 777 /path/to/spark/folder
```
Perintah ini akan memberikan hak akses penuh ke folder Spark. Pastikan Anda mengganti /path/to/spark/folder dengan path folder Spark yang sesuai di mesin Anda.
Sintaksis – sudo chmod 777 nama_file_yang_ingin_diubahIzin. Pastikan nama file sesuai dengan versi Spark yang telah kita instal.
```
cd spark-2.4.5-bin-hadoop2.7/
sudo chmod 777 python
cd python/
sudo chmod 777 pyspark s
```
### Verifikasi Instalasi
Sekarang mari kita lakukan pemeriksaan akhir untuk memastikan instalasi kita berhasil dengan menavigasi ke direktori Python di bawah folder instalasi Spark kita, membuka Jupyter Notebook, dan mengimpor PySpark di sana.
1. Navigasi ke direktori Python di folder instalasi Spark:
```bash
cd $SPARK_HOME/python
```
2. Jalankan Jupyter Notebook:
```bash
jupyter notebook
```
3. Buat notebook baru dan uji impor PySpark:
```python
from pyspark import SparkContext
sc = SparkContext("local", "test")
```
Jika tidak ada kesalahan, berarti instalasi PySpark telah berhasil dan siap digunakan.
Saat ini, kita dapat mengimpor PySpark dengan menavigasi ke
folder Python di bawah folder instalasi Spark, lalu meluncurkan terminal dari lokasi tersebut dan membuka Jupyter Notebook dari sana. Namun, cara ini cukup merepotkan. Oleh karena itu, mari kita permudah prosesnya sehingga kita dapat mengimpor PySpark dari direktori mana pun tanpa harus berpindah folder terlebih dahulu. Untuk melakukannya, kita perlu melakukan beberapa langkah berikut:
Tambahkan variabel lingkungan untuk Spark agar dapat diakses dari direktori mana pun. Buka file ~/.bashrc atau ~/.zshrc (tergantung shell yang digunakan) menggunakan editor teks favorit Anda, misalnya:
```
nano ~/.bashrc
```
Tambahkan baris berikut ke file tersebut untuk menetapkan path Spark secara global:
```
export SPARK_HOME='/home/ubuntu/spark-2.4.5-bin-hadoop2.7'
export PATH=$SPARK_HOME/bin:$PATH
export PYTHONPATH=$SPARK_HOME/python:$PYTHONPATH
```
Simpan perubahan, lalu muat ulang file .bashrc atau .zshrc dengan perintah berikut:
```
source ~/.bashrc
```
Setelah ini, kita bisa menjalankan PySpark dan Jupyter Notebook dari direktori mana saja tanpa harus menavigasi ke folder instalasi Spark.