Hadoop - Panduan Cepat

"90% dari data dunia dihasilkan dalam beberapa tahun terakhir."

Karena kemunculan teknologi, perangkat, dan alat komunikasi baru seperti situs jejaring sosial, jumlah data yang dihasilkan oleh umat manusia tumbuh pesat setiap tahun. Jumlah data yang kami hasilkan dari awal waktu hingga tahun 2003 adalah 5 miliar gigabyte. Jika Anda menumpuk data dalam bentuk disk, itu mungkin memenuhi seluruh lapangan sepak bola. Jumlah yang sama dibuat setiap dua hari dalam2011, dan setiap sepuluh menit masuk 2013. Angka ini masih tumbuh dengan pesat. Meskipun semua informasi yang dihasilkan ini bermakna dan dapat berguna saat diproses, namun hal itu diabaikan.

Apa itu Big Data?

Big dataadalah kumpulan kumpulan data besar yang tidak dapat diproses menggunakan teknik komputasi tradisional. Ini bukan satu teknik atau alat, melainkan telah menjadi subjek yang lengkap, yang melibatkan berbagai alat, teknik, dan kerangka kerja.

Apa Yang Ada Di Bawah Big Data?

Data besar melibatkan data yang dihasilkan oleh perangkat dan aplikasi yang berbeda. Diberikan di bawah ini adalah beberapa bidang yang berada di bawah payung Big Data.

  • Black Box Data - Ini adalah komponen helikopter, pesawat terbang, dan jet, dll. Ini menangkap suara awak pesawat, rekaman mikrofon dan earphone, dan informasi kinerja pesawat.

  • Social Media Data - Media sosial seperti Facebook dan Twitter menyimpan informasi dan pandangan yang diposting oleh jutaan orang di seluruh dunia.

  • Stock Exchange Data - Data bursa menyimpan informasi tentang keputusan 'beli' dan 'jual' yang dibuat atas saham perusahaan berbeda yang dibuat oleh pelanggan.

  • Power Grid Data - Data jaringan listrik menyimpan informasi yang dikonsumsi oleh node tertentu sehubungan dengan stasiun pangkalan.

  • Transport Data - Data transportasi meliputi model, kapasitas, jarak dan ketersediaan kendaraan.

  • Search Engine Data - Mesin pencari mengambil banyak data dari database yang berbeda.

Jadi Big Data mencakup volume yang sangat besar, kecepatan tinggi, dan variasi data yang dapat diperluas. Data di dalamnya terdiri dari tiga jenis.

  • Structured data - Data relasional.

  • Semi Structured data - Data XML.

  • Unstructured data - Word, PDF, Teks, Log Media.

Manfaat Big Data

  • Menggunakan informasi yang disimpan di jejaring sosial seperti Facebook, agensi pemasaran belajar tentang respons untuk kampanye, promosi, dan media periklanan lainnya.

  • Menggunakan informasi di media sosial seperti preferensi dan persepsi produk konsumen mereka, perusahaan produk dan organisasi ritel merencanakan produksinya.

  • Dengan menggunakan data riwayat kesehatan pasien sebelumnya, rumah sakit memberikan layanan yang lebih baik dan cepat.

Teknologi Big Data

Teknologi big data penting dalam menyediakan analisis yang lebih akurat, yang dapat mengarah pada pengambilan keputusan yang lebih konkret yang menghasilkan efisiensi operasional yang lebih besar, pengurangan biaya, dan risiko bisnis yang lebih rendah.

Untuk memanfaatkan kekuatan big data, Anda memerlukan infrastruktur yang dapat mengelola dan memproses data terstruktur dan tidak terstruktur dalam jumlah besar secara realtime dan dapat melindungi privasi dan keamanan data.

Ada berbagai teknologi di pasar dari vendor yang berbeda termasuk Amazon, IBM, Microsoft, dll., Untuk menangani data besar. Sambil melihat ke dalam teknologi yang menangani big data, kami memeriksa dua kelas teknologi berikut -

Data Besar Operasional

Ini termasuk sistem seperti MongoDB yang menyediakan kemampuan operasional untuk beban kerja interaktif real-time di mana data terutama diambil dan disimpan.

Sistem NoSQL Big Data dirancang untuk memanfaatkan arsitektur komputasi awan baru yang telah muncul selama dekade terakhir untuk memungkinkan penghitungan besar-besaran dijalankan dengan murah dan efisien. Hal ini membuat beban kerja data besar operasional lebih mudah dikelola, lebih murah, dan lebih cepat untuk diterapkan.

Beberapa sistem NoSQL dapat memberikan wawasan tentang pola dan tren berdasarkan data waktu nyata dengan pengkodean minimal dan tanpa memerlukan ilmuwan data dan infrastruktur tambahan.

Big Data Analitis

Ini termasuk sistem seperti sistem basis data Massively Parallel Processing (MPP) dan MapReduce yang menyediakan kemampuan analitik untuk analisis retrospektif dan kompleks yang dapat menyentuh sebagian besar atau semua data.

MapReduce menyediakan metode baru untuk menganalisis data yang melengkapi kemampuan yang disediakan oleh SQL, dan sistem berdasarkan MapReduce yang dapat ditingkatkan dari satu server ke ribuan mesin kelas atas dan bawah.

Kedua kelas teknologi ini saling melengkapi dan sering digunakan bersama.

Sistem Operasional vs. Analitis

Operasional Analitis
Latensi 1 md - 100 md 1 menit - 100 menit
Konkurensi 1000 - 100.000 1 - 10
Pola Akses Menulis dan Membaca Membaca
Pertanyaan Selektif Tidak selektif
Cakupan Data Operasional Retrospektif
Pengguna akhir Pelanggan Ilmuwan Data
Teknologi NoSQL MapReduce, Database MPP

Tantangan Big Data

Tantangan utama yang terkait dengan big data adalah sebagai berikut -

  • Menangkap data
  • Curation
  • Storage
  • Searching
  • Sharing
  • Transfer
  • Analysis
  • Presentation

Untuk memenuhi tantangan di atas, organisasi biasanya menggunakan bantuan server perusahaan.

Pendekatan tradisional

Dalam pendekatan ini, perusahaan akan memiliki komputer untuk menyimpan dan memproses data besar. Untuk tujuan penyimpanan, pemrogram akan mengambil bantuan vendor database pilihan mereka seperti Oracle, IBM, dll. Dalam pendekatan ini, pengguna berinteraksi dengan aplikasi, yang pada gilirannya menangani bagian penyimpanan dan analisis data.

Keterbatasan

Pendekatan ini berfungsi dengan baik dengan aplikasi yang memproses data yang lebih sedikit yang dapat diakomodasi oleh server database standar, atau hingga batas prosesor yang memproses data. Tetapi ketika berurusan dengan data yang dapat diskalakan dalam jumlah besar, itu adalah tugas yang sangat sibuk untuk memproses data tersebut melalui satu hambatan database.

Solusi Google

Google memecahkan masalah ini menggunakan algoritma yang disebut MapReduce. Algoritma ini membagi tugas menjadi bagian-bagian kecil dan menugaskannya ke banyak komputer, dan mengumpulkan hasil dari mereka yang bila diintegrasikan, membentuk dataset hasil.

Hadoop

Menggunakan solusi yang disediakan oleh Google, Doug Cutting dan timnya mengembangkan Proyek Sumber Terbuka bernama HADOOP.

Hadoop menjalankan aplikasi menggunakan algoritma MapReduce, di mana datanya diproses secara paralel dengan yang lain. Singkatnya, Hadoop digunakan untuk mengembangkan aplikasi yang dapat melakukan analisis statistik lengkap pada sejumlah besar data.

Hadoop adalah kerangka kerja sumber terbuka Apache yang ditulis dalam java yang memungkinkan pemrosesan terdistribusi dari kumpulan data besar di seluruh kluster komputer menggunakan model pemrograman sederhana. Aplikasi kerangka kerja Hadoop bekerja di lingkungan yang menyediakan penyimpanan dan komputasi terdistribusi di seluruh kluster komputer. Hadoop dirancang untuk meningkatkan dari satu server ke ribuan mesin, masing-masing menawarkan komputasi dan penyimpanan lokal.

Arsitektur Hadoop

Pada intinya, Hadoop memiliki dua lapisan utama yaitu -

  • Pengolahan / Lapisan komputasi (MapReduce), dan
  • Lapisan penyimpanan (Sistem File Terdistribusi Hadoop).

MapReduce

MapReduce adalah model pemrograman paralel untuk menulis aplikasi terdistribusi yang dirancang di Google untuk pemrosesan yang efisien dari sejumlah besar data (kumpulan data multi-terabyte), pada cluster besar (ribuan node) perangkat keras komoditas dengan cara yang andal dan toleran terhadap kesalahan. Program MapReduce berjalan di Hadoop yang merupakan kerangka kerja sumber terbuka Apache.

Sistem File Terdistribusi Hadoop

Sistem File Terdistribusi Hadoop (HDFS) didasarkan pada Sistem File Google (GFS) dan menyediakan sistem file terdistribusi yang dirancang untuk dijalankan pada perangkat keras komoditas. Ini memiliki banyak kesamaan dengan sistem file terdistribusi yang ada. Namun, perbedaan dari sistem file terdistribusi lainnya cukup signifikan. Ini sangat toleran terhadap kesalahan dan dirancang untuk digunakan pada perangkat keras berbiaya rendah. Ini memberikan akses throughput yang tinggi ke data aplikasi dan cocok untuk aplikasi yang memiliki kumpulan data besar.

Terlepas dari dua komponen inti yang disebutkan di atas, kerangka kerja Hadoop juga mencakup dua modul berikut -

  • Hadoop Common - Ini adalah pustaka dan utilitas Java yang dibutuhkan oleh modul Hadoop lainnya.

  • Hadoop YARN - Ini adalah kerangka kerja untuk penjadwalan pekerjaan dan manajemen sumber daya cluster.

Bagaimana Cara Kerja Hadoop?

Ini cukup mahal untuk membangun server yang lebih besar dengan konfigurasi berat yang menangani pemrosesan skala besar, tetapi sebagai alternatif, Anda dapat mengikat banyak komputer komoditas dengan CPU tunggal, sebagai sistem terdistribusi fungsional tunggal dan praktis, mesin berkerumun dapat membaca kumpulan data. secara paralel dan memberikan throughput yang jauh lebih tinggi. Selain itu, ini lebih murah daripada satu server kelas atas. Jadi, ini adalah faktor motivasi pertama di balik penggunaan Hadoop yang dijalankan di seluruh mesin yang dikelompokkan dan berbiaya rendah.

Hadoop menjalankan kode di sekumpulan komputer. Proses ini mencakup tugas-tugas inti berikut yang dilakukan Hadoop -

  • Data awalnya dibagi menjadi direktori dan file. File dibagi menjadi blok berukuran seragam 128M dan 64M (sebaiknya 128M).

  • File-file ini kemudian didistribusikan ke berbagai node cluster untuk diproses lebih lanjut.

  • HDFS, yang berada di atas sistem file lokal, mengawasi pemrosesan.

  • Blok direplikasi untuk menangani kegagalan perangkat keras.

  • Memeriksa bahwa kode berhasil dijalankan.

  • Melakukan penyortiran yang terjadi antara peta dan mengurangi tahapan.

  • Mengirim data yang diurutkan ke komputer tertentu.

  • Menulis log debugging untuk setiap pekerjaan.

Keuntungan dari Hadoop

  • Kerangka kerja Hadoop memungkinkan pengguna untuk menulis dan menguji sistem terdistribusi dengan cepat. Ini efisien, dan secara otomatis mendistribusikan data dan bekerja di seluruh mesin dan pada gilirannya, menggunakan paralelisme yang mendasari inti CPU.

  • Hadoop tidak bergantung pada perangkat keras untuk memberikan toleransi kesalahan dan ketersediaan tinggi (FTHA), melainkan pustaka Hadoop sendiri telah dirancang untuk mendeteksi dan menangani kegagalan pada lapisan aplikasi.

  • Server dapat ditambahkan atau dihapus dari cluster secara dinamis dan Hadoop terus beroperasi tanpa gangguan.

  • Keuntungan besar lainnya dari Hadoop adalah selain sebagai open source, ia kompatibel di semua platform karena berbasis Java.

Hadoop didukung oleh platform GNU / Linux dan citarasanya. Oleh karena itu, kita harus menginstal sistem operasi Linux untuk mengatur lingkungan Hadoop. Jika Anda memiliki OS selain Linux, Anda dapat menginstal perangkat lunak Virtualbox di dalamnya dan memiliki Linux di dalam Virtualbox.

Pengaturan Pra-instalasi

Sebelum menginstal Hadoop ke lingkungan Linux, kita perlu mengatur Linux menggunakan ssh(Secure Shell). Ikuti langkah-langkah yang diberikan di bawah ini untuk menyiapkan lingkungan Linux.

Membuat Pengguna

Pada awalnya, disarankan untuk membuat pengguna terpisah untuk Hadoop untuk mengisolasi sistem file Hadoop dari sistem file Unix. Ikuti langkah-langkah yang diberikan di bawah ini untuk membuat pengguna -

  • Buka root menggunakan perintah "su".

  • Buat pengguna dari akun root menggunakan perintah "useradd username".

  • Sekarang Anda dapat membuka akun pengguna yang sudah ada menggunakan perintah "su username".

Buka terminal Linux dan ketik perintah berikut untuk membuat pengguna.

$ su 
   password: 
# useradd hadoop 
# passwd hadoop 
   New passwd: 
   Retype new passwd

Penyiapan SSH dan Pembuatan Kunci

Penyiapan SSH diperlukan untuk melakukan operasi berbeda pada cluster seperti memulai, menghentikan, operasi shell daemon terdistribusi. Untuk mengautentikasi pengguna Hadoop yang berbeda, diperlukan pasangan kunci publik / pribadi untuk pengguna Hadoop dan membagikannya dengan pengguna yang berbeda.

Perintah berikut digunakan untuk membuat pasangan nilai kunci menggunakan SSH. Salin bentuk kunci publik id_rsa.pub ke authorized_keys, dan berikan pemilik izin baca dan tulis masing-masing ke file authorized_keys.

$ ssh-keygen -t rsa 
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys

Menginstal Java

Java adalah prasyarat utama Hadoop. Pertama-tama, Anda harus memverifikasi keberadaan java di sistem Anda menggunakan perintah "java -version". Sintaks perintah versi java diberikan di bawah ini.

$ java -version

Jika semuanya beres, itu akan memberi Anda output berikut.

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Jika java tidak diinstal di sistem Anda, ikuti langkah-langkah yang diberikan di bawah ini untuk menginstal java.

Langkah 1

Unduh java (JDK <versi terbaru> - X64.tar.gz) dengan mengunjungi tautan berikut www.oracle.com

Kemudian jdk-7u71-linux-x64.tar.gz akan diunduh ke sistem Anda.

Langkah 2

Umumnya Anda akan menemukan file java yang diunduh di folder Unduhan. Verifikasi dan ekstrak filejdk-7u71-linux-x64.gz file menggunakan perintah berikut.

$ cd Downloads/ 
$ ls jdk-7u71-linux-x64.gz $ tar zxf jdk-7u71-linux-x64.gz 
$ ls 
jdk1.7.0_71   jdk-7u71-linux-x64.gz

LANGKAH 3

Untuk membuat java tersedia untuk semua pengguna, Anda harus memindahkannya ke lokasi "/ usr / local /". Buka root, dan ketik perintah berikut.

$ su 
password: 
# mv jdk1.7.0_71 /usr/local/ 
# exit

LANGKAH 4

Untuk menyiapkan PATH dan JAVA_HOME variabel, tambahkan perintah berikut ke ~/.bashrc mengajukan.

export JAVA_HOME=/usr/local/jdk1.7.0_71 
export PATH=$PATH:$JAVA_HOME/bin

Sekarang terapkan semua perubahan ke dalam sistem yang sedang berjalan.

$ source ~/.bashrc

LANGKAH 5

Gunakan perintah berikut untuk mengkonfigurasi alternatif java -

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2
# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2

# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar

Sekarang verifikasi perintah java -version dari terminal seperti yang dijelaskan di atas.

Mendownload Hadoop

Unduh dan ekstrak Hadoop 2.4.1 dari yayasan perangkat lunak Apache menggunakan perintah berikut.

$ su 
password: 
# cd /usr/local 
# wget http://apache.claz.org/hadoop/common/hadoop-2.4.1/ 
hadoop-2.4.1.tar.gz 
# tar xzf hadoop-2.4.1.tar.gz 
# mv hadoop-2.4.1/* to hadoop/ 
# exit

Mode Operasi Hadoop

Setelah Anda mengunduh Hadoop, Anda dapat mengoperasikan cluster Hadoop Anda di salah satu dari tiga mode yang didukung -

  • Local/Standalone Mode - Setelah mengunduh Hadoop di sistem Anda, secara default, ini dikonfigurasi dalam mode mandiri dan dapat dijalankan sebagai proses java tunggal.

  • Pseudo Distributed Mode- Ini adalah simulasi terdistribusi pada mesin tunggal. Setiap daemon Hadoop seperti hdfs, yarn, MapReduce dll., Akan berjalan sebagai proses java yang terpisah. Mode ini berguna untuk pengembangan.

  • Fully Distributed Mode- Mode ini sepenuhnya didistribusikan dengan minimal dua mesin atau lebih sebagai sebuah cluster. Kami akan menemukan mode ini secara mendetail di bab-bab selanjutnya.

Menginstal Hadoop dalam Mode Standalone

Di sini kita akan membahas instalasi Hadoop 2.4.1 dalam mode mandiri.

Tidak ada daemon yang berjalan dan semuanya berjalan dalam satu JVM. Mode mandiri cocok untuk menjalankan program MapReduce selama pengembangan, karena mudah untuk menguji dan men-debugnya.

Menyiapkan Hadoop

Anda dapat menyetel variabel lingkungan Hadoop dengan menambahkan perintah berikut ke ~/.bashrc mengajukan.

export HADOOP_HOME=/usr/local/hadoop

Sebelum melangkah lebih jauh, Anda perlu memastikan bahwa Hadoop berfungsi dengan baik. Cukup keluarkan perintah berikut -

$ hadoop version

Jika semuanya baik-baik saja dengan pengaturan Anda, maka Anda akan melihat hasil berikut -

Hadoop 2.4.1 
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768 
Compiled by hortonmu on 2013-10-07T06:28Z 
Compiled with protoc 2.5.0
From source with checksum 79e53ce7994d1628b240f09af91e1af4

Ini berarti pengaturan mode mandiri Hadoop Anda berfungsi dengan baik. Secara default, Hadoop dikonfigurasi untuk berjalan dalam mode tidak terdistribusi di satu mesin.

Contoh

Mari kita periksa contoh sederhana Hadoop. Instalasi Hadoop memberikan contoh file jar MapReduce berikut, yang menyediakan fungsionalitas dasar MapReduce dan dapat digunakan untuk menghitung, seperti nilai Pi, jumlah kata dalam daftar file tertentu, dll.

$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar

Mari kita memiliki direktori input di mana kita akan mendorong beberapa file dan persyaratan kita adalah menghitung jumlah kata dalam file tersebut. Untuk menghitung jumlah kata, kita tidak perlu menulis MapReduce kita, asalkan file .jar berisi implementasi word count. Anda dapat mencoba contoh lain menggunakan file .jar yang sama; cukup keluarkan perintah berikut untuk memeriksa program fungsional MapReduce yang didukung oleh file hadoop-mapreduce-example-2.2.0.jar.

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar

Langkah 1

Buat file konten sementara di direktori input. Anda dapat membuat direktori input ini di mana pun Anda ingin bekerja.

$ mkdir input $ cp $HADOOP_HOME/*.txt input $ ls -l input

Ini akan memberikan file berikut di direktori input Anda -

total 24 
-rw-r--r-- 1 root root 15164 Feb 21 10:14 LICENSE.txt 
-rw-r--r-- 1 root root   101 Feb 21 10:14 NOTICE.txt
-rw-r--r-- 1 root root  1366 Feb 21 10:14 README.txt

File-file ini telah disalin dari direktori home instalasi Hadoop. Untuk percobaan Anda, Anda dapat memiliki kumpulan file yang berbeda dan besar.

Langkah 2

Mari kita mulai proses Hadoop untuk menghitung jumlah total kata di semua file yang tersedia di direktori input, sebagai berikut -

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar  wordcount input output

LANGKAH 3

Langkah-2 akan melakukan pemrosesan yang diperlukan dan menyimpan output dalam file output / part-r00000, yang dapat Anda periksa dengan menggunakan -

$cat output/*

Ini akan mencantumkan semua kata bersama dengan jumlah totalnya yang tersedia di semua file yang tersedia di direktori input.

"AS      4 
"Contribution" 1 
"Contributor" 1 
"Derivative 1
"Legal 1
"License"      1
"License");     1 
"Licensor"      1
"NOTICE”        1 
"Not      1 
"Object"        1 
"Source”        1 
"Work”    1 
"You"     1 
"Your")   1 
"[]"      1 
"control"       1 
"printed        1 
"submitted"     1 
(50%)     1 
(BIS),    1 
(C)       1 
(Don't)   1 
(ECCN)    1 
(INCLUDING      2 
(INCLUDING,     2 
.............

Menginstal Hadoop dalam Mode Terdistribusi Pseudo

Ikuti langkah-langkah yang diberikan di bawah ini untuk menginstal Hadoop 2.4.1 dalam mode pseudo didistribusikan.

Langkah 1 - Menyiapkan Hadoop

Anda dapat menyetel variabel lingkungan Hadoop dengan menambahkan perintah berikut ke ~/.bashrc mengajukan.

export HADOOP_HOME=/usr/local/hadoop 
export HADOOP_MAPRED_HOME=$HADOOP_HOME 
export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME 
export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin export HADOOP_INSTALL=$HADOOP_HOME

Sekarang terapkan semua perubahan ke dalam sistem yang sedang berjalan.

$ source ~/.bashrc

Langkah 2 - Konfigurasi Hadoop

Anda dapat menemukan semua file konfigurasi Hadoop di lokasi "$ HADOOP_HOME / etc / hadoop". Diperlukan untuk membuat perubahan pada file konfigurasi tersebut sesuai dengan infrastruktur Hadoop Anda.

$ cd $HADOOP_HOME/etc/hadoop

Untuk mengembangkan program Hadoop di java, Anda harus mengatur ulang variabel lingkungan java di hadoop-env.sh mengajukan dengan mengganti JAVA_HOME nilai dengan lokasi java di sistem Anda.

export JAVA_HOME=/usr/local/jdk1.7.0_71

Berikut ini adalah daftar file yang harus Anda edit untuk mengkonfigurasi Hadoop.

core-site.xml

Itu core-site.xml file berisi informasi seperti nomor port yang digunakan untuk instance Hadoop, memori yang dialokasikan untuk sistem file, batas memori untuk menyimpan data, dan ukuran buffer Baca / Tulis.

Buka core-site.xml dan tambahkan properti berikut di antara tag <configuration>, </configuration>.

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000</value> 
   </property>
</configuration>

hdfs-site.xml

Itu hdfs-site.xmlfile berisi informasi seperti nilai data replikasi, jalur kode nama, dan jalur datanode sistem file lokal Anda. Artinya tempat di mana Anda ingin menyimpan infrastruktur Hadoop.

Mari kita asumsikan data berikut.

dfs.replication (data replication value) = 1 

(In the below given path /hadoop/ is the user name. 
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.) 
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode 

(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.) 
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

Buka file ini dan tambahkan properti berikut di antara tag <configuration> </configuration> di file ini.

<configuration>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
   </property>
    
   <property>
      <name>dfs.name.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value>
   </property>
    
   <property>
      <name>dfs.data.dir</name> 
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value> 
   </property>
</configuration>

Note - Dalam file di atas, semua nilai properti ditentukan pengguna dan Anda dapat membuat perubahan sesuai dengan infrastruktur Hadoop Anda.

yarn-site.xml

File ini digunakan untuk mengkonfigurasi benang menjadi Hadoop. Buka file yarn-site.xml dan tambahkan properti berikut di antara tag <configuration>, </configuration> di file ini.

<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value> 
   </property>
</configuration>

mapred-site.xml

File ini digunakan untuk menentukan kerangka MapReduce mana yang kita gunakan. Secara default, Hadoop berisi template benang-situs.xml. Pertama-tama, Anda harus menyalin file darimapred-site.xml.template untuk mapred-site.xml file menggunakan perintah berikut.

$ cp mapred-site.xml.template mapred-site.xml

Buka mapred-site.xml file dan tambahkan properti berikut di antara tag <configuration>, </configuration> di file ini.

<configuration>
   <property> 
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

Memverifikasi Instalasi Hadoop

Langkah-langkah berikut digunakan untuk memverifikasi penginstalan Hadoop.

Langkah 1 - Penyiapan Node Nama

Siapkan namenode menggunakan perintah “hdfs namenode -format” sebagai berikut.

$ cd ~ 
$ hdfs namenode -format

Hasil yang diharapkan adalah sebagai berikut.

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG:   host = localhost/192.168.1.11 
STARTUP_MSG:   args = [-format] 
STARTUP_MSG:   version = 2.4.1 
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory 
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted. 
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to 
retain 1 images with txid >= 0 
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0 
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************ 
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11 
************************************************************/

Langkah 2 - Memverifikasi Hadoop dfs

Perintah berikut digunakan untuk memulai dfs. Menjalankan perintah ini akan memulai sistem file Hadoop Anda.

$ start-dfs.sh

Output yang diharapkan adalah sebagai berikut -

10/24/14 21:37:56 
Starting namenodes on [localhost] 
localhost: starting namenode, logging to /home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-namenode-localhost.out 
localhost: starting datanode, logging to /home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-datanode-localhost.out 
Starting secondary namenodes [0.0.0.0]

Langkah 3 - Memverifikasi Skrip Benang

Perintah berikut digunakan untuk memulai skrip benang. Menjalankan perintah ini akan memulai benang daemon Anda.

$ start-yarn.sh

Output yang diharapkan sebagai berikut -

starting yarn daemons 
starting resourcemanager, logging to /home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out 
localhost: starting nodemanager, logging to /home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out

Langkah 4 - Mengakses Hadoop di Browser

Nomor port default untuk mengakses Hadoop adalah 50070. Gunakan url berikut untuk mendapatkan layanan Hadoop di browser.

http://localhost:50070/

Langkah 5 - Verifikasi Semua Aplikasi untuk Cluster

Nomor port default untuk mengakses semua aplikasi cluster adalah 8088. Gunakan url berikut untuk mengunjungi layanan ini.

http://localhost:8088/

Sistem File Hadoop dikembangkan dengan menggunakan desain sistem file terdistribusi. Ini dijalankan pada perangkat keras komoditas. Tidak seperti sistem terdistribusi lainnya, HDFS sangat toleran terhadap kesalahan dan dirancang menggunakan perangkat keras berbiaya rendah.

HDFS menyimpan sejumlah besar data dan menyediakan akses yang lebih mudah. Untuk menyimpan data sebesar itu, file disimpan di beberapa mesin. File-file ini disimpan secara berlebihan untuk menyelamatkan sistem dari kemungkinan kehilangan data jika terjadi kegagalan. HDFS juga membuat aplikasi tersedia untuk pemrosesan paralel.

Fitur HDFS

  • Sangat cocok untuk penyimpanan dan pemrosesan terdistribusi.
  • Hadoop menyediakan antarmuka perintah untuk berinteraksi dengan HDFS.
  • Server built-in dari namenode dan datanode membantu pengguna untuk dengan mudah memeriksa status cluster.
  • Akses streaming ke data sistem file.
  • HDFS memberikan izin file dan otentikasi.

Arsitektur HDFS

Diberikan di bawah ini adalah arsitektur Sistem File Hadoop.

HDFS mengikuti arsitektur master-slave dan memiliki elemen berikut.

Namenode

Namenode adalah perangkat keras komoditas yang berisi sistem operasi GNU / Linux dan perangkat lunak namenode. Ini adalah perangkat lunak yang dapat dijalankan pada perangkat keras komoditas. Sistem yang memiliki kode nama bertindak sebagai server master dan melakukan tugas-tugas berikut -

  • Mengelola namespace sistem file.

  • Mengatur akses klien ke file.

  • Ini juga menjalankan operasi sistem file seperti mengganti nama, menutup, dan membuka file dan direktori.

Datanode

Datanode adalah perangkat keras komoditas yang memiliki sistem operasi GNU / Linux dan perangkat lunak datanode. Untuk setiap node (Commodity hardware / System) dalam sebuah cluster, akan ada datanode. Node ini mengelola penyimpanan data sistem mereka.

  • Datanode melakukan operasi baca-tulis pada sistem file, sesuai permintaan klien.

  • Mereka juga melakukan operasi seperti pembuatan blok, penghapusan, dan replikasi sesuai dengan instruksi namenode.

Blok

Umumnya data pengguna disimpan dalam file HDFS. File dalam sistem file akan dibagi menjadi satu atau lebih segmen dan / atau disimpan dalam node data individu. Segmen file ini disebut sebagai blok. Dengan kata lain, jumlah minimum data yang dapat dibaca atau ditulis oleh HDFS disebut Block. Ukuran blok default adalah 64MB, tetapi dapat ditingkatkan sesuai kebutuhan untuk mengubah konfigurasi HDFS.

Tujuan HDFS

Fault detection and recovery- Karena HDFS menyertakan sejumlah besar perangkat keras komoditas, sering terjadi kegagalan komponen. Oleh karena itu HDFS harus memiliki mekanisme untuk deteksi dan pemulihan kesalahan yang cepat dan otomatis.

Huge datasets - HDFS harus memiliki ratusan node per cluster untuk mengelola aplikasi yang memiliki dataset besar.

Hardware at data- Tugas yang diminta dapat dilakukan secara efisien, ketika komputasi dilakukan di dekat data. Terutama di mana kumpulan data besar terlibat, ini mengurangi lalu lintas jaringan dan meningkatkan throughput.

Memulai HDFS

Awalnya Anda harus memformat sistem file HDFS yang dikonfigurasi, buka namenode (server HDFS), dan jalankan perintah berikut.

$ hadoop namenode -format

Setelah memformat HDFS, mulai sistem file terdistribusi. Perintah berikut akan memulai namenode serta node data sebagai cluster.

$ start-dfs.sh

Daftar File dalam HDFS

Setelah memuat informasi di server, kita dapat menemukan daftar file di direktori, status file, menggunakan ‘ls’. Diberikan di bawah ini adalah sintaksls yang dapat Anda berikan ke direktori atau nama file sebagai argumen.

$ $HADOOP_HOME/bin/hadoop fs -ls <args>

Memasukkan Data ke HDFS

Asumsikan kita memiliki data dalam file bernama file.txt di sistem lokal yang seharusnya disimpan di sistem file hdfs. Ikuti langkah-langkah yang diberikan di bawah ini untuk memasukkan file yang diperlukan dalam sistem file Hadoop.

Langkah 1

Anda harus membuat direktori masukan.

$ $HADOOP_HOME/bin/hadoop fs -mkdir /user/input

Langkah 2

Transfer dan simpan file data dari sistem lokal ke sistem file Hadoop menggunakan perintah put.

$ $HADOOP_HOME/bin/hadoop fs -put /home/file.txt /user/input

LANGKAH 3

Anda dapat memverifikasi file menggunakan perintah ls.

$ $HADOOP_HOME/bin/hadoop fs -ls /user/input

Mengambil Data dari HDFS

Asumsikan kita memiliki file dalam HDFS bernama outfile. Diberikan di bawah ini adalah demonstrasi sederhana untuk mengambil file yang diperlukan dari sistem file Hadoop.

Langkah 1

Awalnya, lihat data dari HDFS menggunakan cat perintah.

$ $HADOOP_HOME/bin/hadoop fs -cat /user/output/outfile

Langkah 2

Dapatkan file dari HDFS ke sistem file lokal menggunakan get perintah.

$ $HADOOP_HOME/bin/hadoop fs -get /user/output/ /home/hadoop_tp/

Mematikan HDFS

Anda dapat mematikan HDFS dengan menggunakan perintah berikut.

$ stop-dfs.sh

Ada lebih banyak perintah di "$HADOOP_HOME/bin/hadoop fs"daripada yang ditunjukkan di sini, meskipun operasi dasar ini akan membantu Anda memulai. Menjalankan ./bin/hadoop dfs tanpa argumen tambahan akan mencantumkan semua perintah yang dapat dijalankan dengan sistem FsShell. Selanjutnya,$HADOOP_HOME/bin/hadoop fs -help commandName akan menampilkan ringkasan penggunaan singkat untuk operasi yang dimaksud, jika Anda macet.

Tabel semua operasi ditampilkan di bawah ini. Konvensi berikut digunakan untuk parameter -

"<path>" means any file or directory name. 
"<path>..." means one or more file or directory names. 
"<file>" means any filename. 
"<src>" and "<dest>" are path names in a directed operation. 
"<localSrc>" and "<localDest>" are paths as above, but on the local file system.

Semua file dan nama jalur lainnya merujuk ke objek di dalam HDFS.

Sr Tidak Perintah & Deskripsi
1

-ls <path>

Mencantumkan konten direktori yang ditentukan oleh jalur, menunjukkan nama, izin, pemilik, ukuran, dan tanggal modifikasi untuk setiap entri.

2

-lsr <path>

Berperilaku seperti -ls, tetapi secara rekursif menampilkan entri di semua subdirektori jalur.

3

-du <path>

Menunjukkan penggunaan disk, dalam byte, untuk semua file yang cocok dengan jalur; nama file dilaporkan dengan awalan protokol HDFS penuh.

4

-dus <path>

Seperti -du, tetapi mencetak ringkasan penggunaan disk dari semua file / direktori di jalur.

5

-mv <src><dest>

Memindahkan file atau direktori yang ditunjukkan oleh src ke dest, dalam HDFS.

6

-cp <src> <dest>

Menyalin file atau direktori yang diidentifikasi oleh src ke tujuan, dalam HDFS.

7

-rm <path>

Menghapus file atau direktori kosong yang diidentifikasi oleh jalur.

8

-rmr <path>

Menghapus file atau direktori yang diidentifikasi oleh jalur. Secara rekursif menghapus semua entri turunan (mis., File atau subdirektori jalur).

9

-put <localSrc> <dest>

Menyalin file atau direktori dari sistem file lokal yang diidentifikasi oleh localSrc ke tujuan dalam DFS.

10

-copyFromLocal <localSrc> <dest>

Identik dengan -put

11

-moveFromLocal <localSrc> <dest>

Menyalin file atau direktori dari sistem file lokal yang diidentifikasi oleh localSrc ke dest dalam HDFS, dan kemudian menghapus salinan lokal jika berhasil.

12

-get [-crc] <src> <localDest>

Menyalin file atau direktori dalam HDFS yang diidentifikasi oleh src ke jalur sistem file lokal yang diidentifikasi oleh localDest.

13

-getmerge <src> <localDest>

Mengambil semua file yang cocok dengan jalur src di HDFS, dan menyalinnya ke satu file gabungan di sistem file lokal yang diidentifikasi oleh localDest.

14

-cat <filen-ame>

Menampilkan isi nama file di stdout.

15

-copyToLocal <src> <localDest>

Identik dengan -get

16

-moveToLocal <src> <localDest>

Bekerja seperti -get, tetapi menghapus salinan HDFS jika berhasil.

17

-mkdir <path>

Membuat direktori bernama path di HDFS.

Membuat direktori induk di jalur yang hilang (mis., Mkdir -p di Linux).

18

-setrep [-R] [-w] rep <path>

Menetapkan faktor replikasi target untuk file yang diidentifikasi oleh jalur ke perwakilan. (Faktor replikasi aktual akan bergerak menuju target seiring waktu)

19

-touchz <path>

Membuat file di jalur yang berisi waktu saat ini sebagai stempel waktu. Gagal jika file sudah ada di jalur, kecuali file tersebut sudah berukuran 0.

20

-test -[ezd] <path>

Mengembalikan 1 jika jalur ada; memiliki panjang nol; atau adalah direktori atau 0 sebaliknya.

21

-stat [format] <path>

Mencetak informasi tentang jalur. Format adalah string yang menerima ukuran file dalam blok (% b), nama file (% n), ukuran blok (% o), replikasi (% r), dan tanggal modifikasi (% y,% Y).

22

-tail [-f] <file2name>

Menampilkan file 1 KB terakhir di stdout.

23

-chmod [-R] mode,mode,... <path>...

Mengubah izin file yang terkait dengan satu atau beberapa objek yang diidentifikasi oleh jalur .... Melakukan perubahan secara rekursif dengan mode R. adalah mode oktal 3 digit, atau {augo} +/- {rwxX}. Diasumsikan jika tidak ada ruang lingkup yang ditentukan dan tidak menerapkan umask.

24

-chown [-R] [owner][:[group]] <path>...

Menetapkan pengguna dan / atau grup pemilik untuk file atau direktori yang diidentifikasi oleh jalur .... Menetapkan pemilik secara rekursif jika -R ditentukan.

25

-chgrp [-R] group <path>...

Menetapkan grup pemilik untuk file atau direktori yang diidentifikasi oleh jalur .... Set grup secara rekursif jika -R ditentukan.

26

-help <cmd-name>

Mengembalikan informasi penggunaan untuk salah satu perintah yang tercantum di atas. Anda harus menghilangkan karakter '-' di depan dalam cmd.

MapReduce adalah kerangka kerja yang digunakan untuk menulis aplikasi untuk memproses data dalam jumlah besar, secara paralel, pada kelompok besar perangkat keras komoditas dengan cara yang andal.

Apa itu MapReduce?

MapReduce adalah teknik pemrosesan dan model program untuk komputasi terdistribusi berbasis java. Algoritma MapReduce berisi dua tugas penting, yaitu Map dan Reduce. Map mengambil sekumpulan data dan mengubahnya menjadi kumpulan data lain, di mana elemen individual dipecah menjadi tupel (pasangan kunci / nilai). Kedua, kurangi tugas, yang mengambil keluaran dari peta sebagai masukan dan menggabungkan tupel data tersebut menjadi sekumpulan tupel yang lebih kecil. Seperti yang tersirat dari urutan nama MapReduce, tugas pengurangan selalu dilakukan setelah pekerjaan peta.

Keuntungan utama dari MapReduce adalah kemudahan untuk mengukur pemrosesan data melalui beberapa node komputasi. Di bawah model MapReduce, primitif pemrosesan data disebut pembuat peta dan pereduksi. Menguraikan aplikasi pemrosesan data menjadi pembuat peta dan pereduksi terkadang tidak sepele. Tapi, begitu kita menulis aplikasi dalam bentuk MapReduce, penskalaan aplikasi untuk menjalankan ratusan, ribuan, atau bahkan puluhan ribu mesin dalam sebuah cluster hanyalah perubahan konfigurasi. Skalabilitas sederhana inilah yang telah menarik banyak programmer untuk menggunakan model MapReduce.

Algoritma

  • Umumnya paradigma MapReduce didasarkan pada pengiriman komputer ke tempat data berada!

  • Program MapReduce dijalankan dalam tiga tahap, yaitu tahap peta, tahap shuffle, dan tahap pengurangan.

    • Map stage- Tugas map atau mapper adalah mengolah data masukan. Umumnya data masukan berupa file atau direktori dan disimpan di dalam file system Hadoop (HDFS). File masukan diteruskan ke fungsi mapper baris demi baris. Pemeta memproses data dan membuat beberapa potongan kecil data.

    • Reduce stage - Tahap ini adalah kombinasi dari Shuffle panggung dan Reducetahap. Tugas Reducer adalah memproses data yang berasal dari mapper. Setelah diproses, ini menghasilkan satu set output baru, yang akan disimpan di HDFS.

  • Selama pekerjaan MapReduce, Hadoop mengirim tugas Map dan Reduce ke server yang sesuai di cluster.

  • Kerangka kerja mengelola semua detail penyaluran data seperti mengeluarkan tugas, memverifikasi penyelesaian tugas, dan menyalin data di sekitar cluster di antara node.

  • Sebagian besar komputasi terjadi pada node dengan data pada disk lokal yang mengurangi lalu lintas jaringan.

  • Setelah menyelesaikan tugas yang diberikan, cluster mengumpulkan dan mengurangi data untuk membentuk hasil yang sesuai, dan mengirimkannya kembali ke server Hadoop.

Input dan Output (Perspektif Java)

Kerangka kerja MapReduce beroperasi pada pasangan <kunci, nilai>, yaitu kerangka kerja melihat masukan ke pekerjaan sebagai satu set pasangan <kunci, nilai> dan menghasilkan satu set pasangan <kunci, nilai> sebagai keluaran dari pekerjaan. , mungkin dari berbagai jenis.

Kelas kunci dan nilai harus dibuat berseri oleh kerangka kerja dan karenanya, perlu mengimplementasikan antarmuka Writable. Selain itu, kelas kunci harus mengimplementasikan antarmuka Writable-Comparable untuk memfasilitasi pengurutan berdasarkan kerangka kerja. Jenis Input dan Output aMapReduce job - (Masukan) <k1, v1> → peta → <k2, v2> → kurangi → <k3, v3> (Output).

Memasukkan Keluaran
Peta <k1, v1> daftar (<k2, v2>)
Mengurangi <k2, daftar (v2)> daftar (<k3, v3>)

Terminologi

  • PayLoad - Aplikasi menerapkan fungsi Peta dan Mengurangi, dan membentuk inti pekerjaan.

  • Mapper - Pemeta memetakan pasangan kunci / nilai masukan ke satu set pasangan kunci / nilai antara.

  • NamedNode - Node yang mengelola Hadoop Distributed File System (HDFS).

  • DataNode - Node tempat data disajikan terlebih dahulu sebelum pemrosesan apa pun dilakukan.

  • MasterNode - Node tempat JobTracker berjalan dan yang menerima permintaan pekerjaan dari klien.

  • SlaveNode - Node tempat program Map and Reduce berjalan.

  • JobTracker - Menjadwalkan pekerjaan dan melacak tugas yang ditugaskan ke Pelacak tugas.

  • Task Tracker - Melacak tugas dan melaporkan status ke JobTracker.

  • Job - Program adalah eksekusi Mapper dan Reducer di seluruh dataset.

  • Task - Eksekusi Pemeta atau Peredam pada sepotong data.

  • Task Attempt - Contoh tertentu dari upaya untuk menjalankan tugas di SlaveNode.

Contoh Skenario

Diberikan di bawah ini adalah data mengenai konsumsi listrik suatu organisasi. Ini berisi konsumsi listrik bulanan dan rata-rata tahunan selama beberapa tahun.

Jan Feb Merusak Apr Mungkin Jun Jul Agustus Sep Okt Nov Des Rata-rata
1979 23 23 2 43 24 25 26 26 26 26 25 26 25
1980 26 27 28 28 28 30 31 31 31 30 30 30 29
1981 31 32 32 32 33 34 35 36 36 34 34 34 34
1984 39 38 39 39 39 41 42 43 40 39 38 38 40
1985 38 39 39 39 39 41 41 41 00 40 39 39 45

Jika data di atas diberikan sebagai masukan, maka kita harus menulis aplikasi untuk mengolahnya dan menghasilkan hasil seperti mencari tahun pemakaian maksimal, tahun pemakaian minimal, dan sebagainya. Ini adalah panduan bagi programmer dengan jumlah record yang terbatas. Mereka hanya akan menulis logika untuk menghasilkan output yang diperlukan, dan meneruskan data ke aplikasi yang ditulis.

Tetapi, pikirkan data yang mewakili konsumsi listrik dari semua industri skala besar di negara bagian tertentu, sejak pembentukannya.

Saat kami menulis aplikasi untuk memproses data massal tersebut,

  • Mereka akan membutuhkan banyak waktu untuk dieksekusi.

  • Akan ada lalu lintas jaringan yang padat ketika kita memindahkan data dari sumber ke server jaringan dan seterusnya.

Untuk mengatasi masalah ini, kami memiliki kerangka kerja MapReduce.

Memasukan data

Data di atas disimpan sebagai sample.txtdan diberikan sebagai masukan. File input terlihat seperti yang ditunjukkan di bawah ini.

1979   23   23   2   43   24   25   26   26   26   26   25   26  25 
1980   26   27   28  28   28   30   31   31   31   30   30   30  29 
1981   31   32   32  32   33   34   35   36   36   34   34   34  34 
1984   39   38   39  39   39   41   42   43   40   39   38   38  40 
1985   38   39   39  39   39   41   41   41   00   40   39   39  45

Contoh Program

Diberikan di bawah ini adalah program untuk data sampel menggunakan kerangka kerja MapReduce.

package hadoop; 

import java.util.*; 

import java.io.IOException; 
import java.io.IOException; 

import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.conf.*; 
import org.apache.hadoop.io.*; 
import org.apache.hadoop.mapred.*; 
import org.apache.hadoop.util.*; 

public class ProcessUnits {
   //Mapper class 
   public static class E_EMapper extends MapReduceBase implements 
   Mapper<LongWritable ,/*Input key Type */ 
   Text,                /*Input value Type*/ 
   Text,                /*Output key Type*/ 
   IntWritable>        /*Output value Type*/ 
   {
      //Map function 
      public void map(LongWritable key, Text value, 
      OutputCollector<Text, IntWritable> output,   
      
      Reporter reporter) throws IOException { 
         String line = value.toString(); 
         String lasttoken = null; 
         StringTokenizer s = new StringTokenizer(line,"\t"); 
         String year = s.nextToken(); 
         
         while(s.hasMoreTokens()) {
            lasttoken = s.nextToken();
         }
         int avgprice = Integer.parseInt(lasttoken); 
         output.collect(new Text(year), new IntWritable(avgprice)); 
      } 
   }
   
   //Reducer class 
   public static class E_EReduce extends MapReduceBase implements Reducer< Text, IntWritable, Text, IntWritable > {
   
      //Reduce function 
      public void reduce( Text key, Iterator <IntWritable> values, 
      OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { 
         int maxavg = 30; 
         int val = Integer.MIN_VALUE; 
            
         while (values.hasNext()) { 
            if((val = values.next().get())>maxavg) { 
               output.collect(key, new IntWritable(val)); 
            } 
         }
      } 
   }

   //Main function 
   public static void main(String args[])throws Exception { 
      JobConf conf = new JobConf(ProcessUnits.class); 
      
      conf.setJobName("max_eletricityunits"); 
      conf.setOutputKeyClass(Text.class);
      conf.setOutputValueClass(IntWritable.class); 
      conf.setMapperClass(E_EMapper.class); 
      conf.setCombinerClass(E_EReduce.class); 
      conf.setReducerClass(E_EReduce.class); 
      conf.setInputFormat(TextInputFormat.class); 
      conf.setOutputFormat(TextOutputFormat.class); 
      
      FileInputFormat.setInputPaths(conf, new Path(args[0])); 
      FileOutputFormat.setOutputPath(conf, new Path(args[1])); 
      
      JobClient.runJob(conf); 
   } 
}

Simpan program di atas sebagai ProcessUnits.java. Kompilasi dan pelaksanaan program dijelaskan di bawah ini.

Kompilasi dan Pelaksanaan Program Unit Proses

Mari kita asumsikan bahwa kita berada di direktori home dari pengguna Hadoop (misalnya / home / hadoop).

Ikuti langkah-langkah yang diberikan di bawah ini untuk mengkompilasi dan menjalankan program di atas.

Langkah 1

Perintah berikut adalah membuat direktori untuk menyimpan kelas java yang dikompilasi.

$ mkdir units

Langkah 2

Unduh Hadoop-core-1.2.1.jar,yang digunakan untuk mengkompilasi dan menjalankan program MapReduce. Kunjungi tautan berikut mvnrepository.com untuk mengunduh jar. Mari kita asumsikan folder yang diunduh adalah/home/hadoop/.

LANGKAH 3

Perintah berikut digunakan untuk mengompilasi file ProcessUnits.java program dan membuat toples untuk program tersebut.

$ javac -classpath hadoop-core-1.2.1.jar -d units ProcessUnits.java 
$ jar -cvf units.jar -C units/ .

LANGKAH 4

Perintah berikut digunakan untuk membuat direktori input di HDFS.

$HADOOP_HOME/bin/hadoop fs -mkdir input_dir

LANGKAH 5

Perintah berikut digunakan untuk menyalin file input bernama sample.txtdi direktori input HDFS.

$HADOOP_HOME/bin/hadoop fs -put /home/hadoop/sample.txt input_dir

LANGKAH 6

Perintah berikut digunakan untuk memverifikasi file di direktori input.

$HADOOP_HOME/bin/hadoop fs -ls input_dir/

LANGKAH 7

Perintah berikut digunakan untuk menjalankan aplikasi Eleunit_max dengan mengambil file input dari direktori input.

$HADOOP_HOME/bin/hadoop jar units.jar hadoop.ProcessUnits input_dir output_dir

Tunggu beberapa saat hingga file tersebut dijalankan. Setelah eksekusi, seperti yang ditunjukkan di bawah ini, output akan berisi jumlah input split, jumlah tugas Map, jumlah tugas peredam, dll.

INFO mapreduce.Job: Job job_1414748220717_0002 
completed successfully 
14/10/31 06:02:52 
INFO mapreduce.Job: Counters: 49 
   File System Counters 
 
FILE: Number of bytes read = 61 
FILE: Number of bytes written = 279400 
FILE: Number of read operations = 0 
FILE: Number of large read operations = 0   
FILE: Number of write operations = 0 
HDFS: Number of bytes read = 546 
HDFS: Number of bytes written = 40 
HDFS: Number of read operations = 9 
HDFS: Number of large read operations = 0 
HDFS: Number of write operations = 2 Job Counters 


   Launched map tasks = 2  
   Launched reduce tasks = 1 
   Data-local map tasks = 2  
   Total time spent by all maps in occupied slots (ms) = 146137 
   Total time spent by all reduces in occupied slots (ms) = 441   
   Total time spent by all map tasks (ms) = 14613 
   Total time spent by all reduce tasks (ms) = 44120 
   Total vcore-seconds taken by all map tasks = 146137 
   Total vcore-seconds taken by all reduce tasks = 44120 
   Total megabyte-seconds taken by all map tasks = 149644288 
   Total megabyte-seconds taken by all reduce tasks = 45178880 
   
Map-Reduce Framework 
 
   Map input records = 5  
   Map output records = 5   
   Map output bytes = 45  
   Map output materialized bytes = 67  
   Input split bytes = 208 
   Combine input records = 5  
   Combine output records = 5 
   Reduce input groups = 5  
   Reduce shuffle bytes = 6  
   Reduce input records = 5  
   Reduce output records = 5  
   Spilled Records = 10  
   Shuffled Maps  = 2  
   Failed Shuffles = 0  
   Merged Map outputs = 2  
   GC time elapsed (ms) = 948  
   CPU time spent (ms) = 5160  
   Physical memory (bytes) snapshot = 47749120  
   Virtual memory (bytes) snapshot = 2899349504  
   Total committed heap usage (bytes) = 277684224
     
File Output Format Counters 
 
   Bytes Written = 40

LANGKAH 8

Perintah berikut digunakan untuk memverifikasi file yang dihasilkan di folder keluaran.

$HADOOP_HOME/bin/hadoop fs -ls output_dir/

LANGKAH 9

Perintah berikut digunakan untuk melihat keluaran dalam Part-00000 mengajukan. File ini dibuat oleh HDFS.

$HADOOP_HOME/bin/hadoop fs -cat output_dir/part-00000

Di bawah ini adalah keluaran yang dihasilkan oleh program MapReduce.

1981    34 
1984    40 
1985    45

LANGKAH 10

Perintah berikut digunakan untuk menyalin folder keluaran dari HDFS ke sistem file lokal untuk dianalisis.

$HADOOP_HOME/bin/hadoop fs -cat output_dir/part-00000/bin/hadoop dfs get output_dir /home/hadoop

Perintah Penting

Semua perintah Hadoop dipanggil oleh $HADOOP_HOME/bin/hadoopperintah. Menjalankan skrip Hadoop tanpa argumen akan mencetak deskripsi untuk semua perintah.

Usage - PERINTAH hadoop [--config confdir]

Tabel berikut mencantumkan opsi yang tersedia dan deskripsinya.

Sr.No. Opsi & Deskripsi
1

namenode -format

Memformat sistem file DFS.

2

secondarynamenode

Menjalankan kode nama sekunder DFS.

3

namenode

Menjalankan kode nama DFS.

4

datanode

Menjalankan datanode DFS.

5

dfsadmin

Menjalankan klien admin DFS.

6

mradmin

Menjalankan klien admin Map-Reduce.

7

fsck

Menjalankan utilitas pemeriksaan sistem file DFS.

8

fs

Menjalankan klien pengguna sistem file generik.

9

balancer

Menjalankan utilitas keseimbangan cluster.

10

oiv

Menerapkan fsimage viewer offline ke fsimage.

11

fetchdt

Mengambil token delegasi dari NameNode.

12

jobtracker

Menjalankan node Pelacak pekerjaan MapReduce.

13

pipes

Menjalankan pekerjaan Pipes.

14

tasktracker

Menjalankan node Tracker tugas MapReduce.

15

historyserver

Menjalankan server riwayat pekerjaan sebagai daemon mandiri.

16

job

Memanipulasi pekerjaan MapReduce.

17

queue

Mendapatkan informasi mengenai JobQueues.

18

version

Mencetak versinya.

19

jar <jar>

Menjalankan file jar.

20

distcp <srcurl> <desturl>

Menyalin file atau direktori secara rekursif.

21

distcp2 <srcurl> <desturl>

DistCp versi 2.

22

archive -archiveName NAME -p <parent path> <src>* <dest>

Membuat arsip hadoop.

23

classpath

Mencetak jalur kelas yang diperlukan untuk mendapatkan Hadoop jar dan perpustakaan yang diperlukan.

24

daemonlog

Dapatkan / Setel level log untuk setiap daemon

Bagaimana Berinteraksi dengan Pekerjaan MapReduce

Penggunaan - pekerjaan hadoop [GENERIC_OPTIONS]

Berikut ini adalah Opsi Generik yang tersedia dalam pekerjaan Hadoop.

Sr.No. GENERIC_OPTION & Deskripsi
1

-submit <job-file>

Mengirimkan pekerjaan.

2

-status <job-id>

Mencetak peta dan mengurangi persentase penyelesaian dan semua penghitung pekerjaan.

3

-counter <job-id> <group-name> <countername>

Mencetak nilai penghitung.

4

-kill <job-id>

Membunuh pekerjaan itu.

5

-events <job-id> <fromevent-#> <#-of-events>

Mencetak detail peristiwa yang diterima oleh jobtracker untuk rentang tertentu.

6

-history [all] <jobOutputDir> - history < jobOutputDir>

Mencetak detail pekerjaan, detail tip gagal dan mati. Rincian lebih lanjut tentang pekerjaan seperti tugas yang berhasil dan upaya tugas yang dilakukan untuk setiap tugas dapat dilihat dengan menentukan opsi [semua].

7

-list[all]

Menampilkan semua pekerjaan. -list hanya menampilkan pekerjaan yang belum selesai.

8

-kill-task <task-id>

Hentikan tugas itu. Tugas yang dihentikan TIDAK dihitung sebagai upaya yang gagal.

9

-fail-task <task-id>

Gagal menjalankan tugas. Tugas yang gagal dihitung dari upaya yang gagal.

10

-set-priority <job-id> <priority>

Mengubah prioritas pekerjaan. Nilai prioritas yang diizinkan adalah VERY_HIGH, HIGH, NORMAL, LOW, VERY_LOW

Untuk melihat status pekerjaan

$ $HADOOP_HOME/bin/hadoop job -status <JOB-ID> e.g. $ $HADOOP_HOME/bin/hadoop job -status job_201310191043_0004

Untuk melihat riwayat pekerjaan output-dir

$ $HADOOP_HOME/bin/hadoop job -history <DIR-NAME> e.g. $ $HADOOP_HOME/bin/hadoop job -history /user/expert/output

Untuk menghentikan pekerjaan itu

$ $HADOOP_HOME/bin/hadoop job -kill <JOB-ID> e.g. $ $HADOOP_HOME/bin/hadoop job -kill job_201310191043_0004

Streaming Hadoop adalah utilitas yang disertakan dengan distribusi Hadoop. Utilitas ini memungkinkan Anda untuk membuat dan menjalankan pekerjaan Map / Reduce dengan executable atau skrip apa pun sebagai mapper dan / atau reducer.

Contoh Menggunakan Python

Untuk streaming Hadoop, kami mempertimbangkan masalah jumlah kata. Setiap pekerjaan di Hadoop harus memiliki dua fase: mapper dan reducer. Kami telah menulis kode untuk mapper dan reducer dalam skrip python untuk menjalankannya di bawah Hadoop. Seseorang juga bisa menulis yang sama di Perl dan Ruby.

Kode Fase Mapper

!/usr/bin/python

import sys

# Input takes from standard input for myline in sys.stdin: 
   # Remove whitespace either side 
   myline = myline.strip() 

   # Break the line into words 
   words = myline.split() 

   # Iterate the words list
   for myword in words:
      # Write the results to standard output 
      print '%s\t%s' % (myword, 1)

Pastikan file ini memiliki izin eksekusi (chmod + x / home / expert / hadoop-1.2.1 / mapper.py).

Kode Fase Peredam

#!/usr/bin/python

from operator import itemgetter 
import sys 

current_word = ""
current_count = 0 
word = "" 

# Input takes from standard input for myline in sys.stdin: 
   # Remove whitespace either side 
   myline = myline.strip() 

   # Split the input we got from mapper.py word, 
   count = myline.split('\t', 1) 

   # Convert count variable to integer 
   try: 
      count = int(count) 

   except ValueError: 
      # Count was not a number, so silently ignore this line continue

   if current_word == word: 
   current_count += count 
   else: 
      if current_word: 
         # Write result to standard output print '%s\t%s' % (current_word, current_count) 
   
      current_count = count
      current_word = word

# Do not forget to output the last word if needed! 
if current_word == word: 
   print '%s\t%s' % (current_word, current_count)

Simpan kode mapper dan peredam di mapper.py dan reducer.py di direktori home Hadoop. Pastikan file-file ini memiliki izin eksekusi (chmod + x mapper.py dan chmod + x reducer.py). Karena python peka indentasi sehingga kode yang sama dapat diunduh dari tautan di bawah ini.

Eksekusi Program WordCount

$ $HADOOP_HOME/bin/hadoop jar contrib/streaming/hadoop-streaming-1.
2.1.jar \
   -input input_dirs \ 
   -output output_dir \ 
   -mapper <path/mapper.py \ 
   -reducer <path/reducer.py

Di mana "\" digunakan untuk kelanjutan baris agar dapat dibaca dengan jelas.

Sebagai contoh,

./bin/hadoop jar contrib/streaming/hadoop-streaming-1.2.1.jar -input myinput -output myoutput -mapper /home/expert/hadoop-1.2.1/mapper.py -reducer /home/expert/hadoop-1.2.1/reducer.py

Cara Kerja Streaming

Dalam contoh di atas, baik mapper dan reducer adalah skrip python yang membaca masukan dari masukan standar dan memancarkan keluaran ke keluaran standar. Utilitas akan membuat pekerjaan Peta / Kurangi, mengirimkan pekerjaan ke kluster yang sesuai, dan memantau kemajuan pekerjaan hingga selesai.

Ketika skrip ditentukan untuk pembuat peta, setiap tugas pembuat peta akan meluncurkan skrip sebagai proses terpisah saat pembuat peta diinisialisasi. Saat tugas mapper berjalan, ia mengubah masukannya menjadi garis dan memberi makan baris tersebut ke masukan standar (STDIN) dari proses tersebut. Sementara itu, pembuat peta mengumpulkan keluaran berorientasi garis dari keluaran standar (STDOUT) proses dan mengubah setiap baris menjadi pasangan kunci / nilai, yang dikumpulkan sebagai keluaran dari mapper. Secara default, awalan baris hingga karakter tab pertama adalah kunci dan sisa baris (tidak termasuk karakter tab) akan menjadi nilainya. Jika tidak ada karakter tab di baris tersebut, maka seluruh baris dianggap sebagai kunci dan nilainya null. Namun, ini dapat disesuaikan, sesuai kebutuhan.

Saat skrip ditentukan untuk peredam, setiap tugas peredam akan meluncurkan skrip sebagai proses terpisah, kemudian peredam diinisialisasi. Saat tugas peredam berjalan, ia mengubah pasangan kunci / nilai masukannya menjadi garis dan memasukkan garis tersebut ke masukan standar (STDIN) dari proses tersebut. Sementara itu, peredam mengumpulkan keluaran berorientasi garis dari keluaran standar (STDOUT) dari proses, mengubah setiap baris menjadi pasangan kunci / nilai, yang dikumpulkan sebagai keluaran peredam. Secara default, awalan baris hingga karakter tab pertama adalah kunci dan sisa baris (tidak termasuk karakter tab) adalah nilainya. Namun, ini dapat disesuaikan sesuai kebutuhan spesifik.

Perintah Penting

Parameter Pilihan Deskripsi
-input direktori / nama-file Yg dibutuhkan Lokasi input untuk mapper.
nama direktori -output Yg dibutuhkan Lokasi keluaran untuk peredam.
-mapper dapat dieksekusi atau script atau JavaClassName Yg dibutuhkan Mapper dapat dieksekusi.
-reducer dapat dieksekusi atau script atau JavaClassName Yg dibutuhkan Peredam dapat dieksekusi.
-nama file file Pilihan Membuat pembuat peta, peredam, atau penggabung dapat dieksekusi tersedia secara lokal di node komputasi.
-inputformat JavaClassName Pilihan Kelas yang Anda berikan harus mengembalikan pasangan kunci / nilai kelas Teks. Jika tidak ditentukan, TextInputFormat akan digunakan sebagai default.
-outputformat JavaClassName Pilihan Kelas yang Anda berikan harus mengambil pasangan kunci / nilai kelas Teks. Jika tidak ditentukan, TextOutputformat digunakan sebagai default.
-partitioner JavaClassName Pilihan Kelas yang menentukan pengurangan kunci mana yang dikirim.
-combiner streamingCommand atau JavaClassName Pilihan Combiner dapat dieksekusi untuk keluaran peta.
-cmdenv name = nilai Pilihan Meneruskan variabel lingkungan ke perintah streaming.
-inputreader Pilihan Untuk kompatibilitas mundur: menentukan kelas pembaca rekaman (bukan kelas format input).
-verbose Pilihan Keluaran panjang.
-lazyOutput Pilihan Membuat keluaran dengan malas. Misalnya, jika format output didasarkan pada FileOutputFormat, file output dibuat hanya pada panggilan pertama ke output.collect (atau Context.write).
-numReduceTasks Pilihan Menentukan jumlah reduksi.
-mapdebug Pilihan Script untuk dipanggil ketika tugas peta gagal.
-reducedebug Pilihan Script untuk dipanggil saat pengurangan tugas gagal.

Bab ini menjelaskan penyiapan cluster Hadoop Multi-Node di lingkungan terdistribusi.

Karena seluruh cluster tidak dapat didemonstrasikan, kami menjelaskan lingkungan cluster Hadoop menggunakan tiga sistem (satu master dan dua slave); diberikan di bawah ini adalah alamat IP mereka.

  • Hadoop Master: 192.168.1.15 (hadoop-master)
  • Hadoop Slave: 192.168.1.16 (hadoop-slave-1)
  • Hadoop Slave: 192.168.1.17 (hadoop-slave-2)

Ikuti langkah-langkah yang diberikan di bawah ini untuk menyiapkan cluster Hadoop Multi-Node.

Menginstal Java

Java adalah prasyarat utama Hadoop. Pertama-tama, Anda harus memverifikasi keberadaan java di sistem Anda menggunakan "java -version". Sintaks perintah versi java diberikan di bawah ini.

$ java -version

Jika semuanya berfungsi dengan baik, itu akan memberi Anda output berikut.

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Jika java tidak diinstal di sistem Anda, ikuti langkah-langkah yang diberikan untuk menginstal java.

Langkah 1

Unduh java (JDK <versi terbaru> - X64.tar.gz) dengan mengunjungi tautan berikut www.oracle.com

Kemudian jdk-7u71-linux-x64.tar.gz akan diunduh ke sistem Anda.

Langkah 2

Umumnya Anda akan menemukan file java yang diunduh di folder Unduhan. Verifikasi dan ekstrak filejdk-7u71-linux-x64.gz file menggunakan perintah berikut.

$ cd Downloads/ $ ls
jdk-7u71-Linux-x64.gz

$ tar zxf jdk-7u71-Linux-x64.gz $ ls
jdk1.7.0_71 jdk-7u71-Linux-x64.gz

LANGKAH 3

Untuk membuat java tersedia untuk semua pengguna, Anda harus memindahkannya ke lokasi "/ usr / local /". Buka root, dan ketik perintah berikut.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

LANGKAH 4

Untuk menyiapkan PATH dan JAVA_HOME variabel, tambahkan perintah berikut ke ~/.bashrc mengajukan.

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=PATH:$JAVA_HOME/bin

Sekarang verifikasi java -versionperintah dari terminal seperti dijelaskan di atas. Ikuti proses di atas dan instal java di semua node cluster Anda.

Membuat Akun Pengguna

Buat akun pengguna sistem pada sistem master dan slave untuk menggunakan penginstalan Hadoop.

# useradd hadoop 
# passwd hadoop

Memetakan node

Anda harus mengedit hosts mengajukan /etc/ folder di semua node, tentukan alamat IP dari setiap sistem diikuti dengan nama hostnya.

# vi /etc/hosts
enter the following lines in the /etc/hosts file.

192.168.1.109 hadoop-master 
192.168.1.145 hadoop-slave-1 
192.168.56.1 hadoop-slave-2

Mengonfigurasi Login Berbasis Kunci

Atur ssh di setiap node sehingga mereka dapat berkomunikasi satu sama lain tanpa permintaan kata sandi.

# su hadoop 
$ ssh-keygen -t rsa $ ssh-copy-id -i ~/.ssh/id_rsa.pub tutorialspoint@hadoop-master 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp1@hadoop-slave-1 $ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp2@hadoop-slave-2 
$ chmod 0600 ~/.ssh/authorized_keys $ exit

Memasang Hadoop

Di server Master, unduh dan instal Hadoop menggunakan perintah berikut.

# mkdir /opt/hadoop 
# cd /opt/hadoop/ 
# wget http://apache.mesi.com.ar/hadoop/common/hadoop-1.2.1/hadoop-1.2.0.tar.gz 
# tar -xzf hadoop-1.2.0.tar.gz 
# mv hadoop-1.2.0 hadoop
# chown -R hadoop /opt/hadoop 
# cd /opt/hadoop/hadoop/

Mengonfigurasi Hadoop

Anda harus mengkonfigurasi server Hadoop dengan melakukan perubahan berikut seperti yang diberikan di bawah ini.

core-site.xml

Buka core-site.xml file dan edit seperti yang ditunjukkan di bawah ini.

<configuration>
   <property> 
      <name>fs.default.name</name> 
      <value>hdfs://hadoop-master:9000/</value> 
   </property> 
   <property> 
      <name>dfs.permissions</name> 
      <value>false</value> 
   </property> 
</configuration>

hdfs-site.xml

Buka hdfs-site.xml file dan edit seperti yang ditunjukkan di bawah ini.

<configuration>
   <property> 
      <name>dfs.data.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name/data</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.name.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.replication</name> 
      <value>1</value> 
   </property> 
</configuration>

mapred-site.xml

Buka mapred-site.xml file dan edit seperti yang ditunjukkan di bawah ini.

<configuration>
   <property> 
      <name>mapred.job.tracker</name> 
      <value>hadoop-master:9001</value> 
   </property> 
</configuration>

hadoop-env.sh

Buka hadoop-env.sh file dan edit JAVA_HOME, HADOOP_CONF_DIR, dan HADOOP_OPTS seperti yang ditunjukkan di bawah ini.

Note - Atur JAVA_HOME sesuai konfigurasi sistem Anda.

export JAVA_HOME=/opt/jdk1.7.0_17
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_CONF_DIR=/opt/hadoop/hadoop/conf

Menginstal Hadoop di Server Slave

Instal Hadoop di semua server budak dengan mengikuti perintah yang diberikan.

# su hadoop 
$ cd /opt/hadoop $ scp -r hadoop hadoop-slave-1:/opt/hadoop 
$ scp -r hadoop hadoop-slave-2:/opt/hadoop

Mengonfigurasi Hadoop di Server Master

Buka server master dan konfigurasikan dengan mengikuti perintah yang diberikan.

# su hadoop 
$ cd /opt/hadoop/hadoop

Mengonfigurasi Master Node

$ vi etc/hadoop/masters

hadoop-master

Mengonfigurasi Slave Node

$ vi etc/hadoop/slaves

hadoop-slave-1 
hadoop-slave-2

Format Node Nama di Hadoop Master

# su hadoop 
$ cd /opt/hadoop/hadoop $ bin/hadoop namenode –format
11/10/14 10:58:07 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG: host = hadoop-master/192.168.1.109 
STARTUP_MSG: args = [-format] 
STARTUP_MSG: version = 1.2.0 
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473;
compiled by 'hortonfo' on Mon May 6 06:59:37 UTC 2013 
STARTUP_MSG: java = 1.7.0_71 

************************************************************/
11/10/14 10:58:08 INFO util.GSet: Computing capacity for map BlocksMap
editlog=/opt/hadoop/hadoop/dfs/name/current/edits
………………………………………………….
………………………………………………….
…………………………………………………. 
11/10/14 10:58:08 INFO common.Storage: Storage directory 
/opt/hadoop/hadoop/dfs/name has been successfully formatted.
11/10/14 10:58:08 INFO namenode.NameNode: 
SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop-master/192.168.1.15
************************************************************/

Memulai Layanan Hadoop

Perintah berikut adalah untuk memulai semua layanan Hadoop di Hadoop-Master.

$ cd $HADOOP_HOME/sbin
$ start-all.sh

Menambahkan DataNode Baru di Cluster Hadoop

Diberikan di bawah ini adalah langkah-langkah yang harus diikuti untuk menambahkan node baru ke cluster Hadoop.

Jaringan

Tambahkan node baru ke cluster Hadoop yang ada dengan beberapa konfigurasi jaringan yang sesuai. Asumsikan konfigurasi jaringan berikut.

Untuk Konfigurasi Node Baru -

IP address : 192.168.1.103 
netmask : 255.255.255.0
hostname : slave3.in

Menambahkan Pengguna dan Akses SSH

Tambahkan Pengguna

Pada node baru, tambahkan pengguna "hadoop" dan setel sandi pengguna Hadoop menjadi "hadoop123" atau apa pun yang Anda inginkan dengan menggunakan perintah berikut.

useradd hadoop
passwd hadoop

Setup Password kurang konektivitas dari master ke slave baru.

Jalankan yang berikut di master

mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa 
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys Copy the public key to new slave node in hadoop user $HOME directory
scp $HOME/.ssh/id_rsa.pub [email protected]:/home/hadoop/

Jalankan yang berikut pada budak

Masuk ke hadoop. Jika tidak, login ke pengguna hadoop.

su hadoop ssh -X [email protected]

Salin konten kunci publik ke dalam file "$HOME/.ssh/authorized_keys" lalu ubah izin untuk hal yang sama dengan menjalankan perintah berikut.

cd $HOME mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh cat id_rsa.pub >>$HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys

Periksa login ssh dari mesin master. Sekarang periksa apakah Anda dapat ssh ke node baru tanpa kata sandi dari master.

ssh [email protected] or hadoop@slave3

Tetapkan Nama Host Node Baru

Anda dapat mengatur nama host dalam file /etc/sysconfig/network

On new slave3 machine

NETWORKING = yes 
HOSTNAME = slave3.in

Untuk membuat perubahan efektif, restart mesin atau jalankan perintah hostname ke mesin baru dengan nama host masing-masing (restart adalah pilihan yang baik).

Pada mesin node slave3 -

nama host slave3.in

Memperbarui /etc/hosts di semua mesin cluster dengan baris berikut -

192.168.1.102 slave3.in slave3

Sekarang coba ping mesin dengan nama host untuk memeriksa apakah itu menyelesaikan ke IP atau tidak.

Di mesin node baru -

ping master.in

Mulai DataNode di New Node

Mulai daemon datanode secara manual menggunakan $HADOOP_HOME/bin/hadoop-daemon.sh script. Ini akan secara otomatis menghubungi master (NameNode) dan bergabung dengan cluster. Kita juga harus menambahkan node baru ke file conf / slaves di server master. Perintah berbasis skrip akan mengenali node baru.

Masuk ke node baru

su hadoop or ssh -X [email protected]

Mulai HDFS pada node budak yang baru ditambahkan dengan menggunakan perintah berikut

./bin/hadoop-daemon.sh start datanode

Periksa output dari perintah jps pada node baru. Ini terlihat sebagai berikut.

$ jps
7141 DataNode
10312 Jps

Menghapus DataNode dari Cluster Hadoop

Kami dapat menghapus node dari cluster dengan cepat, saat sedang berjalan, tanpa kehilangan data. HDFS menyediakan fitur decommissioning, yang memastikan bahwa penghapusan node dilakukan dengan aman. Untuk menggunakannya, ikuti langkah-langkah seperti yang diberikan di bawah ini -

Langkah 1 - Masuk ke master

Masuk ke pengguna mesin master tempat Hadoop diinstal.

$ su hadoop

Langkah 2 - Ubah konfigurasi cluster

File pengecualian harus dikonfigurasi sebelum memulai cluster. Tambahkan kunci bernama dfs.hosts.exclude ke file$HADOOP_HOME/etc/hadoop/hdfs-site.xmlmengajukan. Nilai yang terkait dengan kunci ini memberikan jalur lengkap ke file di sistem file lokal NameNode yang berisi daftar mesin yang tidak diizinkan untuk menyambung ke HDFS.

Misalnya, tambahkan baris ini ke etc/hadoop/hdfs-site.xml mengajukan.

<property> 
   <name>dfs.hosts.exclude</name> 
   <value>/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt</value> 
   <description>DFS exclude</description> 
</property>

Langkah 3 - Tentukan host yang akan dinonaktifkan

Setiap mesin yang akan dinonaktifkan harus ditambahkan ke file yang diidentifikasi oleh hdfs_exclude.txt, satu nama domain per baris. Ini akan mencegah mereka terhubung ke NameNode. Isi dari"/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt" file ditampilkan di bawah, jika Anda ingin menghapus DataNode2.

slave2.in

Langkah 4 - Paksa pemuatan ulang konfigurasi

Jalankan perintahnya "$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" tanpa tanda kutip.

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

Ini akan memaksa NameNode untuk membaca ulang konfigurasinya, termasuk file 'excludes' yang baru diperbarui. Ini akan menonaktifkan node selama periode waktu tertentu, memberikan waktu untuk setiap blok node untuk direplikasi ke mesin yang dijadwalkan untuk tetap aktif.

Di slave2.in, periksa keluaran perintah jps. Setelah beberapa waktu, Anda akan melihat proses DataNode dimatikan secara otomatis.

Langkah 5 - Matikan node

Setelah proses penonaktifan selesai, perangkat keras yang dinonaktifkan dapat dimatikan dengan aman untuk pemeliharaan. Jalankan perintah report ke dfsadmin untuk memeriksa status decommissioning. Perintah berikut akan menjelaskan status node decommissioning dan node yang terhubung ke cluster.

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

Langkah 6 - Edit lagi file yang tidak termasuk

Setelah mesin dinonaktifkan, mereka dapat dihapus dari file 'excludes'. Lari"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes"sekali lagi akan membaca kembali file yang tidak disertakan ke dalam NameNode; memungkinkan DataNodes untuk bergabung kembali dengan cluster setelah pemeliharaan selesai, atau kapasitas tambahan diperlukan di cluster lagi, dll.

Special Note- Jika proses di atas diikuti dan proses pelacak tugas masih berjalan pada node, maka proses tersebut perlu dimatikan. Salah satu caranya adalah dengan melepaskan mesin seperti yang kita lakukan pada langkah-langkah di atas. Master akan mengenali proses tersebut secara otomatis dan akan menyatakan sebagai mati. Tidak perlu mengikuti proses yang sama untuk menghapus pelacak tugas karena TIDAK terlalu penting dibandingkan dengan DataNode. DataNode berisi data yang ingin Anda hapus dengan aman tanpa kehilangan data.

Pelacak tugas dapat dijalankan / dimatikan dengan cepat dengan perintah berikut kapan saja.

$ $HADOOP_HOME/bin/hadoop-daemon.sh stop tasktracker $HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker