Tampilkan postingan dengan label Hadoop Cluster. Tampilkan semua postingan
Tampilkan postingan dengan label Hadoop Cluster. Tampilkan semua postingan

Jumat, 31 Maret 2023

Multi Threaded Ping with Bash

Ok, setelah posting'an sebelumnya ta bahas tentang bash mengenai tutorial execute single command langsung ke beberapa server, kalian bisa lihat dsini

https://blog.ridwan.tech/2023/01/simply-linux-command-for-manage-server.html

Sekarang, saya ingin bikin lagi tutorial untuk ping ke semua server/host/node hanya dengan menggunakan satu command. hal ini berguna banget untuk kita sebagai SysAdmin agar bisa melakukan pengecekan status server apakah online/down dengan cepat.

Yes, I know ini cara manual & tradiosional banget, Walaupun teknologi sekarang sudah banyak caranya seperti SNMP, Remote Log, API Push Notif, dan lain-lainnya. Tapi, cara manual ini tetap keren & terpakai sampai sekarang kok.. seperti kata pepatah "Old School Never Dies"


Ok, Cukup basa-basinya.. kita akan membuat 2 buah file, dengan nama bebas sesukanya kalian. 

Berikut, contoh Bash Script nya :  

jadi script ini akan membaca file node.txt tersebut, lalu melakukan ping bedasarkan isi dari file node.txt tersebut. Jika ping berhasil status output nya "UP", Begitupun sebaliknya jika down. Kurang lebih seperti itu penjelasannya.

Jika script tersebut dijalankan hasilnya sepert ini

terdapat output dari command date, yang dapat mencetak tanggal aktual, jadi klo untuk dijadikan report juga ok.

Dan kalu ternyata isi dari node.txt kalian berisi sampai ratusan host/server. kalian bisa menambahkan command grep agar melihat hasil spesifik dari yg ingin kita cek.

Cukup sekian, catatan kali ini. Semoga bermanfaat.

See you next !!


Share:

Rabu, 11 Januari 2023

Multi Thread SSH Command for Manage Cluster Server


Ok, kali ini aku ingin sharing terkait pekerjaan ku sebagai “System Administrator”, sudah pasti kerjaan nya bermain dengan server, dan tidak hanya satu server.

**Ilustrasi ruang server, 

Sometimes, aku melakukan configure suatu services/daemon di beberapa server sekaligus, walapun command nya copy-paste,  Tapi tetep memerlukan waktu sebab harus login SSH ke satu-persatu server, melahkan bukan kan ?  Belum lagi saat kita lupa, Sudah sampai di server ke-berapa yang sudah kita config.

Bedasarkan kasus tersebut, aku coba belajar lagi lebih dalam terntang bash, dan menghasilkan hal berikut yang dapat mempersingkat waktu & pekerjaan untuk memanage banyak server, satu command dapat efek semua server :

**check services di semua server

**Check version Java, di semua server

**Check Services SELinux

**Check IP Address semua server

Dan bisa juga untuk copy file menggunakan scp (Secure Copy)  ke semua server sekaligus, dengan satu command saja.

**Copy testfile ke semua server

Satu command, bisa remote semua server sekaligus, Ajaib..kan!

Ok, Bagaimana caranya ?

Kuncinya ada di ssh authorized_keys & file server.txt

ssh authorized_keys di pakai agar login ke server tujuan tampa perlu input password lagi, tutorial nya banyak di google “How to Set Up SSH Passwordless” .

lalu file server.txt, ini berisi alamat server yang digunakan untuk scripting bash symbol i menjadi {i} untuk input alamat server pada command ssh.

** ini contoh isi dari dalam file tersebut.

Ok, kita bahas dikit command nya.

# for i in `cat server.txt`; do ssh root@${i} "Try Linux command"; done

Jad command ini akan membaca isi dari file “server.txt” lalu membaca setiap isi dari alamat IP server pada file tersebut, kemudian melakukan ssh ke user root dengan alamat {i} yang diambil dari dalam file tersebut. Kurang lebih begitu penjelasan nya.

Contoh beberapa command yang sering dipakai oleh banyak orang :

Check status SELinux
# for i in `cat server.txt`; do ssh root@${i} "hostname  && sestatus"; done

Check IP Address
# for i in `cat server.txt`; do ssh root@${i} "hostname  && ip a | grep inet"; done

Installasi Package
# for i in `cat server.txt`; do ssh root@${i} "yum -y install java-1.8.0-openjdk*"; done

Lalu kita juga bisa melakukan scp / copy file ke semua server

# for i in `cat server.txt`; do scp TestFile root@${i}:TestFile; done
# for i in `cat server.txt`; do scp /Folder/TestFile root@${i}:/Folder/TestFile; done


Selebihnya mungkin kalian bisa kembangkan sendiri.. sesuai dengan kebutuhan kalian,

Ok, sekian catatan kali ini. Terima Kasih.

 

Share:

Selasa, 13 Desember 2022

Install Spark Cluster on HADOOP YARN CentOS 7


Apache Spark adalah data processing framework yang dapat melakukan tugas pemrosesan pada kumpulan data besar dengan cepat , mencakup berbagai macam beban kerja seperti batch aplication, iterative algorithms, interactive queres dan streaming. Biasanya Spark menjadi bagian dari infrastruktur Big Data dan Machine learning. Apache Spark dapat mendistribusikan tugas pemrosesan ke beberapa worker (cluster), Hal ini membuatnya pemrosesan data menjadi lebih cepat.

Sejarah Spark

Apache Spark dimulai sebagai proyek penelitian dari AMP-Lab UC Berkley kolaborasi antara mahasiswa, peneliti, fakultas yang berfokus pada data di tahun 2009, tujuannya untuk membuat system baru yang dapat dioptimalkan untuk pemrosesan berulang yang cepat dan jumlah data besar.

Matei Zaharia merupakan programer awal pembuat aplikasi Spark Framework ini pada tanggal 26 Mei 2014 dia menulis Spark dengan Scala.

Spark berstatus open-source di bawah licensi BSD (Berkeley Software Distribution) setelah makalah paper/Jurnal pertama release berjudul “Spark: Cluster Computing with Working Sets,” pada Juni 2010, lalu pada Juni 2013 Spark diterima dalam program inkubasi Apache Software Fondation (ASF), dan pada bulan Februari 2014 masuk delam list Apache Top-Level Project. Untuk detailnya mungkin bisa dibaca disini https://cds.iisc.ac.in/wp-content/uploads/DS256.2017.L15.Spark_.RDD_.pdf


Dalam dokumentasi kali ini kita akan mengginstall Apache Spark Cluster di Centos 7 dengan environment virtual Machine. 

  • Instalasi Server

Cluster Multi Worker berisi dua atau lebih Worker. Artinya kita membutuhkan lebih dari satu server untuk menjadikan nya cluster sebagai master/worker untuk Cluster ini. 

Oiya metode instalasi clusternya hampir sama seperti instalasi Hadoop Cluster pada postingan sebelumnya jadi ada beberapa yang akan kita skip. Dan pastikan ketiga server tersebut dapat saling terhubung satu dengan lainnya, dan server master sudah authorization untuk akses semua worker nya.

  • Instalasi Java

Spark dibuat menggunakan bahasa programan "java", jadi kita perlu instalasi Java. Gunakan syntax berikut :. 

# yum install java-1.8.0-openjdk*

Jika sudah ter'install dengan benar kita dapat melakukan pengecekan instalasi Java tersebut

$ java -version
$ javac -version              

  • Instalasi Scala

Untuk menginstal Scala, disarankan untuk menggunakan cs setup, sesuai rekomendasi dari official website nya dengan command berikut :

$ curl -fL https://github.com/coursier/launchers/raw/master/cs-x86_64-pc-linux.gz | gzip -d > cs && chmod +x cs && ./cs setup

Official Website nya > Install | The Scala Programming Language (scala-lang.org)

Jika sudah terinstall dengan benar, kita dapat melakukan pengecekan instalasi tersebut :

$ scala -version



  • Instalasi Spark

Download spark di website resmi nya, dan lakukan instalasi

https://spark.apache.org/downloads.html

$  wget [file-url]
Extract file Spark yang sudah di download dengan command berikut
$tar xzf [file-tar.gz]
Rename folder extract tersebut menjadi “spark”
$ mv [folder-extract] spark

*Disarankan untuk menjalankan menggunakan standart user (non root),    

Tambahkan baris berikut ke file ~/.bashrc untuk menambahkan informasi lokasi di mana file spark berada.

export SPARK_HOME=/home/hadoop2/spark
export SPARK_BIN=$SPARK_HOME/bin
export SPARK_SBIN=$SPARK_HOME/sbin
export SPARK_CONF=$SPARK_HOME/conf
export PATH=$SPARK_HOME/bin:$PATH

Kemudian terapkan perubahan pada console yang berjalan saat ini/refresh.

$ source ~/.bashrc

  • Spark Master Configuration

Lakukan langkah berikut :

Edit file spark-env.sh, Masuk ke dalam folder configurasi pada spark

$ cd spark/conf

Lalu edit file spark-env, 
$ cp spark-env.sh.template spark-env.sh
$ nano spark-env.sh

Tambhkan baris kode berikut ke dalam file spark-env.sh :

export SPARK_MASTER_HOST='<MASTER-IP>'
export JAVA_HOME=<Path_of_JAVA_installation>

Contohnya seperti gambar berikut 

Edit file Workers (Hanya di server-master)
$ nano workers
Tambahkan alamat server/domain dari worker ke dalam file workers

Kita hanya tinggal lakukan instalasi Aplikasi Spark ke masing-masing workers, lalu jalankan spark cukup dari server master saja, dengan menjalankan script "start-all.sh" di dalam folder spark/sbin 

**pastikan services port sudah dibuka / services firewalld disable

Spark Manger

Gunakan web-browser untuk melihat active workers dari Web Spark Manager dengan mengakses http://[IP-Server-Master] : Port 8080 (http) atau Port 8480 (https)

Spark-Shell

Secara detail bisa dibaca website resmi nya  Quick Start - Spark 3.3.1 Documentation (apache.org)

untuk menjalankan nya cukup execute file "spark-shell" yang berada di "spark/bin" 

Untuk more detail tentang penggunaan Spark-Shell, dapat dilihat di link berikut Spark Shell Command Usage with Examples - Spark by {Examples} (sparkbyexamples.com)

a

Share:

Selasa, 29 November 2022

Hadoop Wordcount MapReduce Solusi Untuk Menghitung Jumlah Kata

MapReduce adalah bagian dari Hadoop Framework, tool ini berupa aplikasi pemprogaman yang didesain untuk dapat melakukan pemrosesan data dengan jumlah yang sangat besar dengan cara membagi pemrosesan tersebut ke dalam cluster menggunakan paralelisasi dan distribusi otomatis dalam ekosistem Hadoop.

MapReduce terbagi dibagi 2 kata “Mapping” dan “Reduce”, gambaran cara kerjanya kurang lebih macam ini :

Berdasarkan definisi diatas, MapReduce dapat dibagi menjadi beberapa tahap:

1.     Pemecahan data (Splitting). Pada proses ini data masukan yang diberikan oleh pengguna MapReduce (klien) akan dipecah menjadi bagian-bagian yang lebih kecil. Pada kasus Hadoop MapReduce, dalam kondisi ideal, data akan dipecah menjadi beberapa bongkahan berukuran maksimal 128MB.

2.     Mapping. Mapping adalah salah satu tahap terpenting dari MapReduce. Pada fase Mapping, bongkahan data yang telah dipecah akan di proses untuk menghasilkan intermediary key-value pairs. Pada contoh wordcount (Gambar 1) diatas, data yang mengandung “Dear Bear River” akan diproses sehingga menghasilkan pasangan key-value Dear:1, Bear:1, dan River:1. Dalam fase Mapping, bisa jadi ada satu atau lebih mesin pekerja (worker) yang melakukan proses terhadap beberapa bongkahan data yang berbeda. Semakin banyak jumlah mesin atau tingkatan parallelisme yang digunakan, maka durasi pemrosesan seluruh data dapat berjalan jauh lebih cepat.

3.     Pengacakan atau (Shuffling) Fase mapping bisa berjalan di satu atau banyak mesin. Akibatnya, pasangan key-value yang dihasilkan oleh sebuah mapper bisa tersebar di berbagai mesin. Namun, jika pengolahan yang ingin dilakukan adalah perhitungan dengan menggunakan key yang sama, maka data dengan key yang sama harus berada pada mesin yang sama pada fase reduce. Oleh karena itu, sebelum fase reduce, fase shuffling bertugas untuk mengumpulkan satu atau lebih key yang berbeda disebuah mesin tertentu agar aggregasi dapat dilakukan dengan mudah. Pada contoh diatas, seluruh kata Bear yang dihasilkan fase mapping akan berada dalam sebuah mesin yang sama. Begitu juga dengan kata-kata lain.

4.     Reducing. Fase reducing bertugas untuk melakukan aggregasi terhadap seluruh pasangan intermediary key-value dengan key yang sama. Pada gambar diatas, pasangan key-value Bear:1 dan Bear:1 akan diaggregasi oleh reducer sehingga pada akhirnya reducer akan menghasilkan keluaran Bear:2 seperti pada contoh kasus wordcount.

Formats read supported by Hadoop :

  •      Basic file formats: Text format/CSV/JSON, Key-Value Format, Sequence format
  •     Format lain : Avro, Parquet, RC or Row-Columnar format, ORC or Optimized Row Columnar 

      Ok, next setelah kita paham dikit teori tentang MapReduce ini.. kita akan praktek implementasinya, Jalankan Cluster Hadoop yang sudah kita install kemarin hari !

        1. Membuat contoh file text di server master








        atau bisa menggunakan text lain yang berisi banyak kata, seperti berikut : https://www.gutenberg.org/files/5000/5000-8.txt

      2.  Masukan file text tersebut ke dalam HDFS

  • $ hadoop fs -mkdir /testkata
  • $ hadoop fs -put [file] /[folder-hdfs]



3. Jika file sudah berada dalam file-system HDFS kita dapat menjalankan program mapreduce ini, Secara default MapReduce sudah tersedia di dalam Hadoop. Filenya berada di :

“/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar”

Untuk mengunakan aplikasi tersebut dapat menggunakan perintah berikut

$ hadoop jar [alamat-aplikasi] wordcount /[alamat-file-input] [alamat-output]

Jika Proses selsei, lihat pada folder "hasil" akan terdapat dua file seperti gambar dibawah :

Hasil dari wordcount nya dapat dilihat pada file yang nama depannya part, pada kasus ini part-r-00000.

Kita dapat melakukan pengecekan pada isi file tersebut dengan perintah berikut :

$ hadoop fs -cat /[alamat-file-hasil]

Pada kasus WordCount, Fungsi Map memisahkan setiap kata yang terdapat dalam contents untuk menghasilkan pasangan key-value dengan key berupa kata tertentu dengan value 1.

Fungsi Reduce akan menjumlahkan seluruh value yang dimiliki oleh sebuah key. Sehingga pada akhirnya klien bisa mendapatkan jumlah kemunculan setiap kata yang terdapat pada variabel contents .

Oiya, MapReduce tidak hanya bisa Wordcount.. tapi juga bisa melakukan hal berikut :


Mungkin kedepan nya kita bisa menggunakan MapReduce lebih bermanfaat lagi penggunaan nya untuk menganalisa Big Data...

Ok. Sekian tulisan kali ini.

Share:

Senin, 28 November 2022

Install Hadoop Clustering Dengan Mudah

 Ok, Melanjutkan pembahasan dari postingan sebelumnya mengenai BigData. Kali ini saya akan share info mengenai salah satu infrastruktur yang dipakai untuk big data. sepertinya aplikasi ini mulai populer di banyak orang IT. 

Aplikasi ini digunakan untuk menyimpan dan memproses kumpulan data besar secara efisien mulai dari ukuran gigabyte hingga petabyte data.  Aplikasi ini memungkinkan pengelompokan banyak komputer (Clustering Computer) untuk menganalisis kumpulan data besar secara paralel dengan lebih cepat.

Ada yg tau, Aplikasi apa-kah itu ?


Yaps..

Aplikasi nya adalah "Hadoop" 

dan.. is an open source framework from apache.


Ada beberapa Modules dari Hadoop iniy yang paling sering digunakan :

  1. HDFS ( Hadoop Distributed File System ) adalah sistem file terdistribusi pada cluster, HDFS memberikan throughput data yang lebih baik daripada sistem file tradisional, selain "high fault tolerance" dan dukungan asli untuk kumpulan data besar.
  2. YARN ( Yet Another Resource Negotiator ) dapat Mengelola dan memantau node cluster dan penggunaan sumber daya, serta menjadwalkan pekerjaan dan tugas untuk dieksekusi secara terdistribusi.
  3. MapReduce sebuah model programming/Algoritma untuk pengelolaan data untuk menentukan bagaimana data tersebut dijadikan input dan output untuk diterapkan.
  4. Hadoop Common Berisi libraries dan utilities yang dibutuhkan oleh modul Hadoop lainnya.

Ekosistem Hadoop telah tumbuh secara signifikan selama bertahun-tahun karena kemampuannya untuk diperluas. Saat ini, ekosistem Hadoop menyertakan banyak alat dan aplikasi untuk membantu mengumpulkan, menyimpan, memproses, menganalisis, dan mengelola data besar. Beberapa aplikasi yang paling populer adalah:

  1. Spark – An open source, distributed processing system
  2. Presto – An open source, distributed SQL query engine optimized for low-latency, ad-hoc analysis of data.
  3. Hive – Allows users to leverage Hadoop MapReduce using a SQL interface, enabling analytics at a massive scale, 
  4. HBase – An open source, non-relational database
  5. Zeppelin – An interactive notebook that enables interactive data exploration.
  6. Dan banyak lagi...


Ok, kita bahas Hadoop dulu untuk sekarang.. lebih mendalam & lebih teknis.. Kita akan melakukan instalasi Hadoop di cluster, sebelum memulai kita butuh basic knowledge berikut

  • - Good Understanding Linux System
  • - Understanding Server Services & Daemon
  • - Understanding Services SSH Management of Authorized_Keys

Ok.. pada tutorial ini kita akan menjalankan 3 buah virtual machine secara bersamaan untuk test clustering computers.

Pastikan ketiga server di atas dapat saling terhubung satu dengan lainnya, disarankan tergabung dalam satu segment network yang sama dan menggunakan statik IP. 

agar hubungan antar server ini saling terjaga dan mangkin erat.. kita akan mengedit file "/etc/hosts" pada masing-masing server.


Next, Ketiga server diatas, harus menginstall Java.

Hadoop dibuat menggunakan bahasa progaman “Java”,  jadi kita perlu melakukan instalasi Java. dengan syntax berikut :

    # yum install java-1.8.0-openjdk*

Jika sudah ter’install dengan benar kita dapat melakukan pengecekan instalasi Java tersebut

    # java -version  /  # javac -version


Hadoop-Master memerlukan akses SSH untuk memanage node-node-nya.

Kita perlu melakukan konfigurasi akses SSH-Key ke setiap node-nya, serta localhost VM-master ini.

$ ssh-keygen -t rsa                                                                    

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys            

$ chmod 0600 ~/.ssh/authorized_keys               


next.. kita copy file "authorized_keys" ke semua node cluster (VM-2 $ VM-3)

$ scp [file-authorized_keys] [Linux-User]@[SERVER]:/home/[User]/.ssh/authorized_keys


Lalu kita lakukan test, dengan melakukan ssh

            $ ssh localhost

jika tidak ada tampilan password prompt berarti berhasil generate ssh-keygen nya.


Lalu, download hadoop pada website Official Website nya https://hadoop.apache.org/releases.html

Pilih binary download, pada tutorial ini kita akan menggunakan Hadoop version 3.3.4

$ wget [URL-Link]/hadoop-3.3.4.tar.gz

*jika belum ada “wget” dapat melakukan instalasi “yum install wget”

Extract file hadoop yang tadi di download dengan command berikut

$ tar xzf hadoop-3.3.4.tar.gz

Rename folder extract tadi agar lebih simple path nya (opsional)

               $ mv /[extract folder]/ hadoop/


Oiya, kita juga perlu mengedit file ".bashrc" untuk membuat beberapa shortcut untuk syntax hadoop.

 Nah.. ini tahap penting mengedit hadoop configuration files, ada beberapa file yang perlu di-edit pada configurasi ini

  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml
  • workers

files-files tersebut berada pada folder “/etc/hadoop”. masukan ke dalam folder tersebut dengan command berikut :

        $ cd $HADOOP_HOME/etc/hadoop


  • core site.xml, isikan config seperti berikut :

<configuration>

      <property>

           <name>fs.defaultFS</name>

           <value>hdfs://192.168.56.103:9000</value>  ## isi-kan sesuai IP dari VM-1 kalian

      </property>

</configuration>

 

  • hdfs-site.xml, isikan config seperti berikut :

<configuration>

        <property>

                       <name>dfs.replication</name>

                        <value>1</value>

        </property>

        <property>

                        <name>dfs.name.dir</name>

                        <value>file:///home/hadoop2/hadoopdata/hdfs/namenode</value>

         </property>

         <property>

                       <name>dfs.data.dir</name>

                       <value>file:///home/hadoop2/hadoopdata/hdfs/datanode</value> 

          </property>

</configuration>

** ## Pastikan alamat directory / folder diatas benar & sesuai dengan system kalian, dan berikan permission 755 pada folder di atas.


  • mapred-site.xml, isikan config seperti berikut :

<configuration>

        <property>

                <name>mapreduce.framework.name</name>

                <value>yarn</value>

        </property>

</configuration>


  • yarn-site.xml, isikan config seperti berikut :

<configuration>

     <property>

            <name>yarn.acl.enable</name>

            <value>0</value>

    </property>

    <property>

            <name>yarn.resourcemanager.hostname</name>

            <value>192.168.56.103</value>  #isikan dengan IP VM-1

    </property>

    <property>

            <name>yarn.nodemanager.aux-services</name>

            <value>mapreduce_shuffle</value>

    </property>

</configuration>


  • worker, isikan hostname dari setiap node :


Copy Configuration tersebut !

Selanjutnya copy semua file yang sudah dikonfigurasi di atas ke masing-masing Node menggunakan perintah scp, pastikan working directory anda masih berada di /hadoop/etc/hadoop.

$ hadoop@VM-1 $ scp [file1] [file2] [file3] user@server:[alamat-directory]

 

Start HDFS dari server master dengan menggunakan perintah berikut :

$ start-all.sh

perintah ini akan menjalankan NameNode dan Secondary NameNode pada Server Master (VM-1) dan menjalankan DataNode pada node1 (VM-2) dan node2 (VM-3), sesuai konfigurasi file workers yang sebelumnya kita config.

** Sangat direkomendasikan untuk mematikan system firewall & disabled SELINUX pada semua server.


____________________ Break dulu ________________


Jika porses di atas dapat berjalan dengan baik, maka kita dapat mengecek dengan menggunakan JPS  (Lists the instrumented Java Virtual Machines (JVMs). 

proses running pada VM server master


Lakukan juga pengecekan Pada server lain

    

                                 Secara gambaran topology seperti ini

                                           











Untuk melihat aktif cluster berjalan dapat menggunakan 


Yarn Manager 



atau dengan menggunakan perintah berikut 

$ yarn node -list




Ok, dengan ini kalian sudah berhasil mengsintall hadoop secara cluster, next kita akan bahas lagi lebih mendalam tentang hadoop ini.

Jika ada yg ingin ditanyakan.. feel free to kontak di linkedin / email, 

Terima kasih, salam sukses.


Share: