Langsung ke konten utama

Apache Spark Series: Apache Spark Dependencies

Instalasi Java (JDK)

Sebelum dapat bekerja dengan Spark, kita diharuskan menginstall JDK terbaru, yang bisa didownload di Download Center Oracle Java, atau distro JDK yang lain seperti OpenJDK dsb. Pada tutorial ini saya menggunakan distro dari Oracle. Setelah selesai, copy file tar.gz ke directory /usr/local/ dan extract file tar.gz tersebut.

$ tar -xvzf jdk-8u151-linux-x64.tar.gz
Kemudian, daftarkan variabel JAVA_HOME ke dua file yaitu /home/<user>/.bashrc dan /etc/environment.
$ nano /home/irfan/.bashrc
...
> export JAVA_HOME=/usr/local/jdk1.8.0_151
$ nano /etc/environment
...
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
/usr/games:/usr/local/games:/usr/local/jdk1.8.0_151/bin"
Untuk mereload kedua file tersebut, jalankan perintah source:

$ source /home/irfan/.bashrc
$ source /etc/environment
Instalasi Python3 dan Jupyter Notebook

Oh ya, karena di sini kita menggunakan PySpark (Python) dan kita butuh editor yang powerful untuk coding, kita pastikan terlebih dahulu instalasi Python 3 di mesin yang baru kita install. Cukup dengan menjalankan command di bawah ini:
irfan@spark-master:~$ python3
Python 3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Untuk Jupyter, lakukan instalasi dengan menggunakan pip, package manager Python. 


$ pip3 install jupyter
Jika, pip belum terinstall, jalankan command berikut ini



$ sudo apt install python3-pip


Instalasi Spark(+Hadoop)

Download distribusi Apache Spark terbaru dari http://www-eu.apache.org/dist/spark/spark-2.2.0/ dan Apache Hadoop dari http://www-us.apache.org/dist/hadoop/common/hadoop-2.8.2/hadoop-2.8.2.tar.gz. Distribusi Hadoop ini sebenarnya tidak dibutuhkan ketika kita membangun Standalone Cluster, namun setiap kali kita memanggil interpreter Spark, akan selalu dilakukan pengecekan instalasi Hadoop dengan memeriksa variabel HADOOP_HOME di mesin kita. Jadi agar interpreter kita 'bersih', dan ketika di kemudian hari kita ingin membangun sebuah cluster Spark di atas HDFS Hadoop kita tidak perlu repot melakukan instalasi lagi ;)
$ wget http://www-eu.apache.org/dist/spark/spark-2.2.0/SparkR_2.2.0.tar.gz
$ wget http://www-us.apache.org/dist/hadoop/common/hadoop-2.8.2/hadoop-2.8.2.tar.gz
Extract di sebarang directory untuk dijadikan SPARK_HOME dan HADOOP_HOME, untuk kemudahan saya letakkan di /home/irfan. Setelah itu, daftarkan variabel SPARK_HOME dan HADOOP_HOME di /home/<user>/.bashrc sehingga file /etc/.bashrc kurang lebih menjadi seperti di bawah ini:
$ nano /home/irfan/.bashrc
...
export JAVA_HOME=/usr/local/jdk1.8.0_151 export SPARK_HOME=/home/irfan/spark-2.2.0-bin-hadoop2.7 export PYSPARK_DRIVER_PYTHON=jupyter export PYSPARK_DRIVER_PYTHON_OPTS='notebook --no-browser --port=8889' export PYSPARK_PYTHON=python3 export HADOOP_HOME=/home/irfan/hadoop-2.8.2 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native
Di mana,

PYSPARK_DRIVER_PYTHON adalah variabel yang akan menentukan interpreter apakah yang akan digunakan, di sini saya akan menggunakan Jupyter notebook. PYSPARK_DRIVER_PYTHON_OPTS adalah opsi yang akan menentukan bagaimana Jupyter akan dijalankan. Untuk opsi  --no-browser di atas, Jupyter akan dijalankan secara 'silent', di mana browser tidak akan otomatis dibuka ketika pyspark dijalankan. Untuk opsi --port akan menentukan pada port berapa jupyter akan dibuka.

Untuk bisa membuka jupyter secara remote (karena Ubuntu server secara default tidak mempunyai XDesktop), kita akan mengkonfigurasi Jupyter terlebih dahulu. Jalankan command berikut ini:


$ jupyter notebook --generate-config

$ jupyter notebook password Enter password: **** Verify password: **** [NotebookPasswordApp] Wrote hashed password to
/home/irfan/.jupyter/jupyter_notebook_config.json


Command di atas akan mengenerate konfigurasi untuk Jupyter dan password yang dibutuhkan untuk membuka jupyter secara remote. Berikutnya, copy password dari file jupyter_notebook_config.json ke file jupyter_notebook_config.py. Selain itu, agar dapat dibuka dari mesin lain, untuk parameter c.NotebookApp.ip kita set dengan wildcard '*', atau dengan IP tertentu. Opsi yang lain, yaitu open_browser kita set False agar jupyter tidak akan membuka browser baru.

$ nano /home/irfan/jupyter_notebook_config.py

# The string should be of the form type:salt:hashed-password. c.NotebookApp.password = u'sha1:8c3777360745:c70188e50309527e01b5f73284dd412ed04b2204'

c.NotebookApp.ip = '*'

c.NotebookApp.open_browser = False

Jika sudah, pertama kita akan buka interpreter pyspark di mesin Master:

irfan@spark-master:~/spark-2.2.0-bin-hadoop2.7/bin$ ./pyspark
./pyspark: line 45: python: command not found [I 08:05:57.612 NotebookApp] Writing notebook server cookie secret to /run/user/1000/
jupyter/notebook_cookie_secret [W 08:06:01.741 NotebookApp] WARNING: The notebook server is listening on all
IP addresses and not using encryption. This is not recommended. [I 08:06:01.793 NotebookApp] Serving notebooks from local directory:
/home/irfan/spark-2.2.0-bin-hadoop2.7/bin [I 08:06:01.793 NotebookApp] 0 active kernels [I 08:06:01.794 NotebookApp] The Jupyter Notebook is running at: [I 08:06:01.794 NotebookApp] http://[all ip addresses on your system]:8889/ [I 08:06:01.794 NotebookApp] Use Control-C to stop this server and shut down
all kernels (twice to skip confirmation).


Nah, sekarang kita sudah bisa bermain-main dengan Apache Spark.

Komentar

Postingan populer dari blog ini

Berkenalan dengan Laravel

Cukup disayangkan, Codeigniter sudah sampai ke tahap "penguburan" - paling tidak ini klaim dari Ellis Lab- dan ini cukup mengusik kenyamanan saya untuk menggunakan CI. Padahal juga sesuai dengan pengakuan rekan-rekan web developer, CI menurut saya cukup mudah dan powerful untuk digunakan dalam membangun sebuah web apps, dan terbukti juga CI sempat jadi trendsetter untuk framework PHP. Saya jadi penasaran framework PHP apa yang jadi the next PHP Framework star setelah CI, setelah menggali informasi beberapa kali, saya temukan Laravel saat ini banyak jadi batu loncatan developer CI. Alasannya sederhana, Laravel banyak kemiripan dengan CI. Dari analisa Google Trends juga terlihat kepopuleran Laravel saat tulisan ini dibuat juga menanjak meskipun masih kalah populer dengan CI (cukup mengherankan CI masih memimpin untuk masalah kepopuleran). Jadi langsung saja saya mencoba mengeksplorasi barang baru ini. Berikut langkah-langkahnya: 0. Install curl 1. Install composer: ...

Perbandingan Algoritme Dynamic Programming, Greedy, dan Backtrack Programming.

Sebetulnya posting ini bisa dibilang sudah kadaluarsa.  But, Better be late than never at all, right mate ? Ok, sebetulnya(lagi) Saya ingin menulis ulang semua yang ada di tugas semester 1 mata kuliah Analisa Algoritme, namun setelah dipikir-pikir lagi rasa-rasanya akan mubadzir, jadi di sini akan Saya gambarkan ulang secara ringkas saja apa perbedaan Dynamic Programming, Greedy dan Backtrack. Sebelum menyentuh ke dalam algoritmenya, Kita lihat terlebih dahulu kasus permasalahannya. Tentu belajar akan lebih mudah apabila tidak hanya dengan mempelajari teorinya saja. Umumnya orang akan lebih semangat apabila ada kasus menarik yang dipelajari. Tentang Knapsack Knapsack sendiri merupakan permasalahan pencuri yang ingin mencuri barang dengan cara memasukkan sebanyak-banyaknya dan seberharga-berharganya barang yang ada ( of course, its a theft ), sejumlah wadah yang pencuri tersebut punya. Diharapkan dengan menerapkan beberapa algoritme ini pencuri dapat meraup keuntungan sebanyak...

Data Analysis Series: Perceptron - Basic Artificial Neural Network

Pendahuluan Pada posting berikut ini saya akan menyampaikan materi tentang (Artificial) Neural Network. Algoritme yang satu ini terinspirasi dari cara kerja sel otak dalam memproses informasi. Sedikit di bawah ini pertama-tama akan saya sampaikam penjelasan bagaimana sel otak bekerja, untuk mempermudah pemahaman bagaimana ANN dapat terinspirasi. Sel Otak (Sumber:  www.wealltest.com ) Seperti yang kita ketahui, otak terdiri atas milyaran sel. Tiap-tiap sel tersebut terbagi atas tiga bagian, yaitu Dendrites, atau receptor, bagian yang menerima sinyal/stimulasi dari sel-sel otak yang lain. Sinyal/stimulasi yang masuk ke dendrite tersebut awalnya berasal dari indra perangsang kita, seperti mata, kulit, telinga, dan lidah. Dari dendrite, sinyal kemudian diteruskan melalui Axon, semacam pipa penghubung, yang mentransmisikan sinyal dari dendrite, untuk ditransmisikan ulang ke sel lain melalui Synapse. Bisa dikatakan, Synapse ini berfungsi sebagai akumulator untuk dari info...