Cara Mengatur Cluster Hadoop dengan Ketersediaan Tinggi HDFS



Blog ini memberikan gambaran umum tentang arsitektur Ketersediaan Tinggi HDFS dan cara mengatur serta mengonfigurasi klaster Ketersediaan Tinggi HDFS dalam langkah-langkah sederhana.

Arsitektur Cluster Ketersediaan Tinggi HDFS 2.x

Di blog ini, saya akan berbicara tentang Arsitektur Cluster Ketersediaan Tinggi HDFS 2.x dan prosedur untuk menyiapkan cluster Ketersediaan Tinggi HDFS.Ini adalah bagian penting dari . Urutan topik yang dibahas dalam blog ini adalah sebagai berikut:

  • Arsitektur HDFS HA
    • pengantar
    • Ketersediaan NameNode
    • Arsitektur HA
    • Implementasi HA (JournalNode dan Penyimpanan bersama)
  • Bagaimana cara mengatur HA (Quorum Journal Nodes) di cluster Hadoop?

Pengantar:

Konsep cluster Ketersediaan Tinggi diperkenalkan di Hadoop 2.x untuk menyelesaikan satu masalah titik kegagalan di Hadoop 1.x. Seperti yang anda ketahui dari blog saya sebelumnya bahwa mengikuti Topologi Master / Slave di mana NameNode bertindak sebagai daemon master dan bertanggung jawab untuk mengelola node slave lain yang disebut DataNodes. Master Daemon atau NameNode tunggal ini menjadi penghambat. Meskipun, pengenalan Secondary NameNode memang mencegah kami dari kehilangan data dan memindahkan beberapa beban NameNode, tetapi itu tidak menyelesaikan masalah ketersediaan NameNode.





Ketersediaan NameNode:

Jika Anda mempertimbangkan konfigurasi standar cluster HDFS, NameNode menjadi titik kegagalan . Ini terjadi karena saat NameNode tidak tersedia, seluruh cluster menjadi tidak tersedia sampai seseorang memulai ulang NameNode atau membawa yang baru.

Alasan tidak tersedianya NameNode bisa jadi:



  • Peristiwa terencana seperti pekerjaan pemeliharaan seperti peningkatan perangkat lunak atau perangkat keras.
  • Mungkin juga karena peristiwa yang tidak direncanakan di mana NameNode lumpuh karena beberapa alasan.

Dalam salah satu kasus di atas, kami memiliki waktu henti di mana kami tidak dapat menggunakan cluster HDFS yang menjadi tantangan.

Arsitektur HDFS HA:

Mari kita pahami bahwa bagaimana Arsitektur HDFS HA ​​memecahkan masalah kritis ketersediaan NameNode ini:

Arsitektur HA memecahkan masalah ketersediaan NameNode ini dengan memungkinkan kita memiliki dua NameNode dalam konfigurasi aktif / pasif. Jadi, kami memiliki dua NameNodes yang sedang berjalan pada saat yang sama di cluster Ketersediaan Tinggi:



  • NamaNode Aktif
  • Standby / Passive NameNode.

Arsitektur HDFS HA ​​- Cluster Ketersediaan Tinggi - Edureka

Jika salah satu NameNode mati, NameNode lainnya dapat mengambil alih tanggung jawab dan oleh karena itu, mengurangi waktu henti cluster. NameNode standby melayani tujuan NameNode cadangan (tidak seperti Secondary NameNode) yang menggabungkan kemampuan failover ke cluster Hadoop. Oleh karena itu, dengan StandbyNode, kita dapat memiliki failover otomatis setiap kali NameNode crash (peristiwa yang tidak direncanakan) atau kita dapat memiliki failover yang anggun (dimulai secara manual) selama periode pemeliharaan.

Ada dua masalah dalam menjaga konsistensi di cluster Ketersediaan Tinggi HDFS:

  • Active dan Standby NameNode harus selalu sinkron satu sama lain, yaitu harus memiliki metadata yang sama. Ini akan memungkinkan kita untuk memulihkan cluster Hadoop ke keadaan namespace yang sama di mana ia mengalami crash dan oleh karena itu, akan memberi kita failover cepat.
  • Seharusnya hanya ada satu NameNode aktif pada satu waktu karena dua NameNode yang aktif akan menyebabkan kerusakan data. Skenario semacam ini disebut sebagai skenario split-brain dimana cluster dibagi menjadi cluster yang lebih kecil, masing-masing percaya bahwa itu adalah satu-satunya cluster yang aktif. Untuk menghindari skenario seperti itu dilakukan pemagaran. Anggar adalah proses untuk memastikan bahwa hanya satu NameNode yang tetap aktif pada waktu tertentu.

Implementasi Arsitektur HA:

Sekarang, Anda tahu bahwa dalam Arsitektur HDFS HA, kami memiliki dua NameNodes yang berjalan pada waktu yang sama. Jadi, kita dapat mengimplementasikan konfigurasi Active dan Standby NameNode dengan dua cara berikut:

  1. Menggunakan Quorum Journal Node
  2. Penyimpanan Bersama menggunakan NFS

Mari kita pahami dua cara penerapan ini satu per satu:

1. Menggunakan Quorum Journal Node:

  • NameNode standby dan NameNode yang aktif tetap sinkron satu sama lain melalui grup node atau daemon yang terpisah - disebut JournalNodes .JournalNodes mengikuti topologi ring dimana node dihubungkan satu sama lain untuk membentuk sebuah ring.JournalNode melayani permintaan yang datang dan menyalin informasi ke node lain di ring.Ini memberikan toleransi kesalahan jika terjadi kegagalan JournalNode.
  • NameNode aktif bertanggung jawab untuk memperbarui EditLogs (informasi metadata) yang ada di JournalNodes.
  • StandbyNode membaca perubahan yang dibuat pada EditLogs di JournalNode dan menerapkannya ke namespace-nya sendiri secara konstan.
  • Selama failover, StandbyNode memastikan bahwa ia telah memperbarui informasi meta data dari JournalNodes sebelum menjadi Active NameNode baru. Ini membuat status namespace saat ini disinkronkan dengan keadaan sebelum failover.
  • Alamat IP dari kedua NameNodes tersedia untuk semua DataNodes dan mereka mengirimkan detak jantung mereka dan memblokir informasi lokasi ke kedua NameNode tersebut. Ini menyediakan failover cepat (lebih sedikit waktu henti) karena StandbyNode memiliki informasi terbaru tentang lokasi blok di cluster.

Anggar NameNode:

Sekarang, seperti dibahas sebelumnya, sangat penting untuk memastikan bahwa hanya ada satu NamaNode Aktif dalam satu waktu. Jadi, pagar adalah proses untuk memastikan properti ini berada dalam sebuah cluster.

  • JournalNodes melakukan pemagaran ini dengan mengizinkan hanya satu NameNode menjadi penulis pada satu waktu.
  • Standby NameNode mengambil alih tanggung jawab menulis ke JournalNodes dan melarang NameNode lain untuk tetap aktif.
  • Terakhir, Active NameNode baru dapat melakukan aktivitasnya dengan aman.

2. Menggunakan Penyimpanan Bersama:

  • StandbyNode dan NameNode aktif tetap sinkron satu sama lain dengan menggunakan file perangkat penyimpanan bersama .NameNode aktif mencatat catatan setiap modifikasi yang dilakukan di namespace-nya ke EditLog yang ada di penyimpanan bersama ini.StandbyNode membaca perubahan yang dibuat pada EditLogs di penyimpanan bersama ini dan menerapkannya ke namespace-nya sendiri.
  • Sekarang, jika terjadi failover, StandbyNode memperbarui informasi metadatanya menggunakan EditLogs di penyimpanan bersama pada awalnya. Kemudian, ini mengambil tanggung jawab Active NameNode. Ini membuat status namespace saat ini disinkronkan dengan keadaan sebelum failover.
  • Administrator harus mengkonfigurasi setidaknya satu metode pagar untuk menghindari skenario otak terbelah.
  • Sistem dapat menggunakan berbagai mekanisme pagar. Ini mungkin termasuk mematikan proses NameNode dan mencabut aksesnya ke direktori penyimpanan bersama.
  • Sebagai upaya terakhir, kita bisa memagari NameNode yang sebelumnya aktif dengan teknik yang dikenal sebagai STONITH, atau 'tembak node lain di kepala'. STONITH menggunakan unit distribusi daya khusus untuk mematikan mesin NameNode secara paksa.

Failover Otomatis:

Failover adalah prosedur dimana sistem secara otomatis mentransfer kontrol ke sistem sekunder ketika mendeteksi kesalahan atau kegagalan. Ada dua jenis failover:

Kegagalan Anggun: Dalam kasus ini, kami memulai failover secara manual untuk pemeliharaan rutin.

Failover Otomatis: Dalam kasus ini, failover dimulai secara otomatis jika terjadi kegagalan NameNode (peristiwa yang tidak direncanakan).

Apache Zookeeper adalah layanan yang menyediakan kemampuan failover otomatis dalam cluster HDFS High Availability. Ini memelihara sejumlah kecil data koordinasi, memberi tahu klien tentang perubahan dalam data itu, dan memantau klien untuk kegagalan. Zookeeper mempertahankan sesi dengan NameNodes. Jika terjadi kegagalan, sesi akan berakhir dan Zookeeper akan memberi tahu NameNodes lain untuk memulai proses failover. Jika terjadi kegagalan NameNode, NameNode pasif lainnya dapat mengunci Zookeeper yang menyatakan bahwa ia ingin menjadi Active NameNode berikutnya.

apa itu substring di java

ZookeerFailoverController (ZKFC) adalah klien Zookeeper yang juga memantau dan mengelola status NameNode. Setiap NameNode juga menjalankan ZKFC. ZKFC bertanggung jawab untuk memantau kesehatan NameNodes secara berkala.

Sekarang setelah Anda memahami apa itu Ketersediaan Tinggi dalam kelompok Hadoop, sekarang saatnya menyiapkannya. Untuk mengatur Ketersediaan Tinggi di cluster Hadoop, Anda harus menggunakan Zookeeper di semua node.

Daemon di Active NameNode adalah:

  • Penjaga kebun binatang
  • Zookeeper Fail Over controller
  • JournalNode
  • NameNode

Daemon di Standby NameNode adalah:

  • Penjaga kebun binatang
  • Zookeeper Fail Over controller
  • JournalNode
  • NameNode

Daemon di DataNode adalah:

  • Penjaga kebun binatang
  • JournalNode
  • DataNode

Jika Anda ingin menguasai HDFS dan Hadoop, lihat kursus Big Data dan Hadoop yang dikurasi khusus oleh Edureka. Klik tombol di bawah untuk memulai.

Menyiapkan dan Mengonfigurasi Kluster Ketersediaan Tinggi di Hadoop:

Anda harus terlebih dahulu mengatur Java dan nama host dari setiap node.

Mesin virtual alamat IP Nama host
NamaNode Aktif192.168.1.81nn1.cluster.com atau nn1
Standby NameNode192.168.1.58nn2.cluster.com atau nn2
DataNode192.168.1.82dn1.cluster.com atau dn1

Unduh file tar biner Hadoop dan Zookeeper, ekstrak file untuk mengedit file konfigurasi.

Perintah: wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

Sebarkan zookeeper-3.4.6.tar.gz

Perintah : tar –xvf zookeeper-3.4.6.tar.gz

Unduh tar biner Hadoop stabil ke dari situs Apache Hadoop.

Perintah : wget https://archive.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz

Ekstrak bola tar Hadoop.

Perintah : tar –xvf hadoop-2.6.0.tar.gz

Sebarkan biner hadoop.

Tambahkan Hadoop, Zookeeper, dan jalur ke file .bashrc.

Buka file .bashrc.

Perintah : sudo gedit ~ / .bashrc

Tambahkan jalur di bawah ini:

ekspor HADOOP_HOME = ekspor HADOOP_MAPRED_HOME = $ HADOOP_HOME ekspor HADOOP_COMMON_HOME = $ HADOOP_HOME ekspor HADOOP_HDFS_HOME = $ HADOOP_HOME ekspor YARN_HOME = $ HADOOP_HOME ekspor HADOOP_CONF_DIR = $ HADOOP_HOME / etc / Hadoop ekspor YARN_CONF_DIR = $ HADOOP_HOME / etc / Hadoop ekspor JAVA_HOME = ekspor ZOOKEEPER_HOME = export PATH = $ PATH: $ JAVA_HOME / bin: $ HADOOP_HOME / bin: $ HADOOP_HOME / sbin: $ ZOOKEEPER_HOME / bin

Edit file .bashrc.

Aktifkan SSH di semua node.

Hasilkan kunci SSH di semua node.

Perintah : ssh-keygen –t rsa (Langkah Ini di semua Node)

Siapkan kunci SSH di semua node.

Jangan berikan jalur apa pun ke file Enter untuk menyimpan kunci dan jangan berikan frasa sandi apa pun. Tekan tombol enter.

Hasilkan proses kunci ssh di semua node.

Setelah kunci ssh dibuat, Anda akan mendapatkan kunci publik dan kunci privat.

Direktori kunci .ssh harus berisi Izin 700 dan semua kunci di dalam direktori .ssh harus berisi izin 600.

Ubah izin direktori SSH.

Ubah direktori menjadi .ssh dan ubah izin file menjadi 600

Ubah izin kunci publik dan pribadi.

Anda harus menyalin kunci publik ssh Nama node ke semua node.

Di Active Namenode, salin id_rsa.pub menggunakan perintah cat.

Perintah : cat ~ / .ssh / id_rsa.pub >> ~ / .ssh / authorized_keys

Salin kunci ssh Namenode ke kunci resminya.

Salin kunci publik NameNode ke semua node yang menggunakan ssh-copy-id perintah.

Perintah : ssh-copy-id –i .ssh / id_rsa.pub edureka@nn2.cluster.com

Salin kunci tujuan ke Standby NameNode.

Salin kunci publik NameNode ke node data.

Perintah : ssh-copy-id –i .ssh / id_rsa.pub edureka@dn1.cluster.com

Salin kunci publik Namenode ke node data.

Mulai ulang layanan sshd di semua node.

Perintah : sudo service sshd restart (Lakukan di semua node)

Mulai ulang layanan SSH.

Sekarang Anda dapat masuk ke simpul mana pun dari Namenode tanpa otentikasi apa pun.

Buka file core-site.xml dari node Nama Aktif dan tambahkan properti di bawah ini.

Edit core-site.xml dari namenode aktif

Buka file hdfs-site.xml di Active Namenode. Tambahkan Properties di bawah ini.

dfs.namenode.name.dir / home / edureka / HA / data / namenode dfs.replication 1 dfs.permissions false dfs.nameservices ha-cluster dfs.ha.namenodes.ha-cluster nn1, nn2 dfs.namenode.rpc-address .ha-cluster.nn1 nn1.cluster.com:9000 dfs.namenode.rpc-address.ha-cluster.nn2 nn2.cluster.com:9000 dfs.namenode.http-address.ha-cluster.nn1 nn1.cluster. com: 50070 dfs.namenode.http-address.ha-cluster.nn2 nn2.cluster.com:50070 dfs.namenode.shared.edits.dir qjournal: //nn1.cluster.com: 8485nn2.cluster.com: 8485dn1. cluster.com:8485/ha-cluster dfs.client.failover.proxy.provider.ha-cluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.automatic-failover.enabled true ha.zookeeper .quorum nn1.cluster.com:2181,nn2.cluster.com:2181,dn1.cluster.com:2181 dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files / home / edureka /.ssh/id_rsa

Ubah direktori menjadi direktori conf zookeeper.

Perintah : cd zookeeper-3.4.6 / conf

Direktori Zookeeper Conf.

Di direktori conf Anda memiliki file zoo_sample.cfg, buat zoo.cfg menggunakan file zoo_sample.cfg.

Perintah : cp zoo_sample.cfg zoo.cfg

Buat file zoo.cfg.

Buat direktori di lokasi mana pun dan gunakan direktori ini untuk menyimpan data penjaga kebun binatang.

Perintah : mkdir

Buat direktori untuk menyimpan data penjaga kebun binatang.

Buka file zoo.cfg.

Perintah : gedit zoo.cfg

Tambahkan jalur direktori yang dibuat pada langkah di atas ke properti dataDir dan tambahkan detail di bawah ini mengenai node yang tersisa, di file zoo.cfg.

Server.1 = nn1.cluster.com: 2888: 3888

Server.2 = nn2.cluster.com: 2888: 3888

Server.3 = dn1.cluster.com: 2888: 3888

Edit file zoo.cfg.

Sekarang salin direktori Java dan Hadoop-2.6.0, zookeeper-3.4.6, dan file .bashrc ke semua node (node ​​nama Standby, node Data) menggunakan perintah scp.

Perintah : scp –r edureka @:

Salin file Hadoop, Zookeeper dan .bashrc ke semua node.

Demikian pula, salin file .bashrc dan direktori zookeeper ke semua node dan ubah variabel lingkungan di masing-masing sesuai dengan node masing-masing.

Di node data, buat direktori di mana Anda perlu menyimpan blok HDFS.

Di node data, Anda harus menambahkan properti dfs.datanode.data.dir.

Dalam kasus saya, saya menciptakan datanode.dll direktori untuk menyimpan blok.

Buat direktori Datanode.

Ubah izin ke direktori node data.

Ubah izin direktori Datanode.

Buka file HDFS-site.xml, tambahkan jalur direktori Datanode ini di properti dfs.datanode.data.dir.

Catatan: Simpan semua properti yang disalin dari Active namenode add dfs.datanode.data.dir satu properti ekstrak di namenode.

dfs.datanode.data.dir / home / edureka / HA / data / datanode

Di namenode aktif, ubah direktori tempat Anda ingin menyimpan file konfigurasi zookeeper (jalur properti dataDir).

Buat file myid di dalam direktori dan tambahkan angka 1 ke file dan simpan file.

Perintah : vi myid

Buat file myid.

Dalam kode nama siaga, ubah direktori tempat Anda ingin menyimpan file konfigurasi penjaga kebun binatang (jalur properti dataDir).

Buat file myid di dalam direktori dan tambahkan angka 2 ke file dan simpan file.

Di node data, ubah direktori tempat Anda ingin menyimpan file konfigurasi zookeeper (jalur properti dataDir).

Buat file myid di dalam direktori dan tambahkan angka 3 ke file dan simpan file.

Mulai Journalnode di ketiga node.

Perintah : hadoop-daemon.sh mulai journalnode

Mulai Journalnode.

Saat Anda memasukkan perintah jps, Anda akan melihat daemon JournalNode di semua node.

Format fileTujuan aktif.

Perintah : Format yang dimaksudkan HDFS

cara membuat heap di java

Format NamaNode Aktif.

Jalankan daemon Namenode dan Active Namedode.

Perintah : hadoop-daemon.sh tujuan mulai

Mulai Namenode.

Salin data Meta HDFS dari node nama aktif ke kode nama standby.

Perintah : HDFS dimaksudkan -bootstrapStandby

Salin data Meta HDFS dari node nama Aktif ke Standby Namenode.

Setelah Anda menjalankan perintah ini, Anda akan mendapatkan informasi dari node dan lokasi mana yang disalin meta data dan apakah berhasil menyalin atau tidak.

Informasi detail tujuan aktif.

Setelah data Meta disalin dari Kode nama aktif ke kode nama siaga, Anda akan mendapatkan pesan yang ditunjukkan di bawah ini pada tangkapan layar.

Informasi mengenai HDFS di Standby Namenode.

Jalankan daemon namenode di mesin namenode Siaga.

Perintah : hadoop-daemon.sh tujuan mulai

Sekarang mulai layanan Zookeeper di ketiga node.

Perintah : zkServer.sh start (Jalankan perintah ini di semua node)

Dalam Tujuan Aktif:

Mulai penjaga kebun binatang di Active NameNode.

Dalam Standby Namenode:

Mulai penjaga kebun binatang dalam NameNode standby.

Di node Data:

Mulai penjaga kebun binatang di DataNode.

Setelah menjalankan server Zookeeper, masukkan perintah JPS. Di semua node, Anda akan melihat layanan QuorumPeerMain.

Mulai daemon node Data di mesin node Data.

Perintah : hadoop-daemon.sh mulai datanode

Mulai Zookeeper fail over controller di node nama aktif dan node nama siaga.

Format zookeeper fail over controller di Active namenode.

Perintah: HDFS zkfc –formatZK

Format ZKFC.

Mulai ZKFC di namenode aktif.

Perintah : hadoop-daemon.sh mulai zkfc

Masukkan perintah jps untuk memeriksa daemon DFSZkFailoverController.

Mulai ZKFC.

Format zookeeper fail over controller dalam kode nama Standby.

Perintah : hdfs zkfc –formatZK

Mulai ZKFC dalam kode nama Siaga.

Perintah : hadoop-daemon.sh mulai zkfc

Masukkan perintah jps untuk memeriksa daemon DFSZkFailoverController.

Sekarang periksa status setiap Namenode, node mana yang Aktif atau node mana yang sedang Standby dengan menggunakan perintah di bawah ini.

memulai dengan meja kerja mysql

Perintah : hdfs haadmin –getServiceState nn1

Periksa status setiap NameNode.

Sekarang Periksa status setiap Namenode menggunakan browser web.

Buka browser web dan masukkan URL di bawah ini.

: 50070

Ini akan menunjukkan apakah node nama itu Aktif atau siaga.

NamaNode Aktif.

Buka detail node nama lain menggunakan browser web.

Standby NameNode.

Dalam namenode aktif, matikan daemon namenode untuk mengubah node nama Standby menjadi namenode aktif.

Masukkan jps di namenode aktif dan matikan daemon.

Perintah: sudo kill -9

ID Proses Daemon.

ID proses Namenode adalah 7606, matikan namenode.

Perintah : Sudo kill -9 7606

Hentikan proses Name Node

Buka dua node melalui browser web dan periksa statusnya.

Detail Namenode.

Status NameNode.

Selamat, Anda telah berhasil menyiapkan Cluster Ketersediaan Tinggi HDFS di Hadoop.

Sekarang setelah Anda memahami Arsitektur Kluster Ketersediaan Tinggi Hadoop, lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus Pelatihan Sertifikasi Edureka Big Data Hadoop membantu peserta didik menjadi ahli dalam domain HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume, dan Sqoop menggunakan kasus penggunaan waktu nyata pada Ritel, Media Sosial, Penerbangan, Pariwisata, domain Keuangan.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan menghubungi Anda kembali.

window._LQ_ = window._LQ_ || {}

lqQuizModal (jendela, dokumen, {quizId: ’XAIVp8 ′, baseUrl:’ https: //quiz.leadquizzes.com/’,trigger: ’exit’}, _LQ_)