Cara Menyiapkan Hadoop Cluster dengan Ketersediaan Tinggi HDFS



Blog ini memberikan gambaran umum mengenai seni bina Ketersediaan Tinggi HDFS dan cara mengatur dan mengkonfigurasi kluster Ketersediaan Tinggi HDFS dengan langkah mudah.

Senibina Kluster Ketersediaan Tinggi HDFS 2.x

Di blog ini, saya akan membicarakan mengenai HDFS 2.x Architecture Cluster Ketersediaan Tinggi dan prosedur untuk menyusun cluster Ketersediaan Tinggi HDFS.Ini adalah bahagian penting dari . Urutan topik yang telah dibahas dalam blog ini adalah seperti berikut:

  • Senibina HDFS HA
    • Pengenalan
    • Ketersediaan NameNode
    • Senibina HA
    • Pelaksanaan HA (JournalNode dan Shared storage)
  • Bagaimana cara menubuhkan HA (Nota Jurnal Kuorum) dalam kelompok Hadoop?

Pengenalan:

Konsep kluster Ketersediaan Tinggi diperkenalkan di Hadoop 2.x untuk menyelesaikan masalah kegagalan titik tunggal dalam Hadoop 1.x. Seperti yang anda ketahui dari blog saya sebelumnya bahawa mengikuti Topologi Master / Slave di mana NameNode bertindak sebagai master daemon dan bertanggungjawab untuk menguruskan nod hamba lain yang disebut DataNodes. Master Daemon tunggal atau NameNode ini menjadi hambatan. Walaupun, pengenalan NameNode Sekunder menghalang kami daripada kehilangan data dan memunggah beberapa beban NameNode tetapi, ia tidak menyelesaikan masalah ketersediaan NameNode.





Ketersediaan NameNode:

Sekiranya anda mempertimbangkan konfigurasi standard kluster HDFS, NameNode menjadi a titik kegagalan tunggal . Ia berlaku kerana ketika NameNode menjadi tidak tersedia, keseluruhan kluster menjadi tidak tersedia sehingga seseorang memulakan semula NameNode atau membawa yang baru.

Sebab-sebab tidak tersedianya NameNode adalah:



  • Acara yang dirancang seperti kerja-kerja penyelenggaraan seperti peningkatan perisian atau perkakasan.
  • Ia juga mungkin disebabkan oleh peristiwa yang tidak dirancang di mana NameNode mogok kerana beberapa sebab.

Dalam salah satu daripada kes di atas, kami mempunyai waktu henti di mana kami tidak dapat menggunakan kluster HDFS yang menjadi cabaran.

Senibina HDFS HA:

Marilah kita memahami bahawa bagaimana HDFS HA ​​Architecture menyelesaikan masalah kritikal ini mengenai ketersediaan NameNode:

Senibina HA menyelesaikan masalah ketersediaan NameNode ini dengan membenarkan kami mempunyai dua NameNode dalam konfigurasi aktif / pasif. Oleh itu, kami mempunyai dua NameNode yang berjalan pada masa yang sama dalam kluster Ketersediaan Tinggi:



  • Nota Nama Aktif
  • Nota Nama Sedia / Pasif.

Senibina HDFS HA ​​- Kluster Ketersediaan Tinggi - Edureka

Sekiranya satu NameNode turun, NameNode yang lain dapat mengambil alih tanggungjawab dan oleh itu, mengurangkan masa cluster down. NameNode siap sedia berfungsi untuk tujuan NameNode sandaran (tidak seperti SecondNameNode) yang menggabungkan keupayaan failover ke kluster Hadoop. Oleh itu, dengan StandbyNode, kita dapat memiliki failover automatik setiap kali NameNode mogok (peristiwa yang tidak dirancang) atau kita boleh mempunyai failover (yang dimulakan secara manual) selama tempoh penyelenggaraan.

Terdapat dua masalah dalam mengekalkan konsistensi dalam kluster Ketersediaan Tinggi HDFS:

  • Node Nama Aktif dan Siap sedia sentiasa selaras antara satu sama lain, iaitu metadata yang sama. Ini akan memungkinkan kita untuk mengembalikan kluster Hadoop ke keadaan ruang nama yang sama di mana ia terhempas dan oleh itu, akan memberi kita kejayaan cepat.
  • Seharusnya hanya ada satu NameNode aktif pada satu masa kerana dua NameNode aktif akan menyebabkan kerosakan data. Jenis senario ini disebut sebagai senario otak terbahagi di mana kluster dibahagikan kepada kluster yang lebih kecil, masing-masing percaya bahawa ia adalah satu-satunya kelompok aktif. Untuk mengelakkan senario seperti itu, pagar dilakukan. Pagar adalah proses memastikan bahawa hanya satu NameNode yang tetap aktif pada waktu tertentu.

Pelaksanaan HA Architecture:

Sekarang, anda tahu bahawa dalam HDFS HA ​​Architecture, kami mempunyai dua NameNodes yang berjalan pada masa yang sama. Oleh itu, kita dapat melaksanakan konfigurasi ActiveNand Standby NameNode dengan dua cara berikut:

  1. Menggunakan Nota Jurnal Kuorum
  2. Storan Bersama menggunakan NFS

Mari kita fahami dua cara pelaksanaan ini satu demi satu:

1. Menggunakan Nod Jurnal Kuorum:

  • NameNode siap sedia dan NameNode yang aktif sentiasa selaras antara satu sama lain melalui kumpulan nod atau daemon yang terpisah-dipanggil Nota Jurnal .The JournalNodes mengikuti topologi cincin di mana node disambungkan satu sama lain untuk membentuk cincin.JournalNode melayani permintaan yang datang kepadanya dan menyalin maklumat ke nod lain di gelanggang.Ini memberikan toleransi kesalahan sekiranya kegagalan JournalNode.
  • NameNode yang aktif bertanggungjawab untuk mengemas kini EditLogs (maklumat metadata) yang terdapat dalam JournalNodes.
  • The StandbyNode membaca perubahan yang dibuat pada EditLogs di JournalNode dan menerapkannya ke ruang namanya sendiri secara berterusan.
  • Semasa failover, StandbyNode memastikan bahawa ia telah mengemas kini maklumat meta data dari JournalNodes sebelum menjadi ActiveNameNode yang baru. Ini menjadikan keadaan ruang nama semasa diselaraskan dengan keadaan sebelum failover.
  • Alamat IP kedua-dua NameNode tersedia untuk semua DataNodes dan mereka menghantar degupan jantung mereka dan menyekat maklumat lokasi ke kedua NameNode tersebut. Ini memberikan failover yang cepat (kurang masa henti) kerana StandbyNode mempunyai maklumat terkini mengenai lokasi blok di kluster.

Pagar NamaNod:

Sekarang, seperti yang telah dibincangkan sebelumnya, sangat penting untuk memastikan bahawa hanya ada satu Active NameNode pada satu masa. Jadi, pagar adalah proses untuk memastikan harta benda ini berada dalam kelompok.

  • JournalNodes melakukan pagar ini dengan hanya membenarkan satu NameNode menjadi penulis pada satu masa.
  • Standby NameNode mengambil alih tanggungjawab menulis kepada JournalNodes dan melarang NameNode lain untuk terus aktif.
  • Akhirnya, ActiveNodeNode baru dapat menjalankan aktivitinya dengan selamat.

2. Menggunakan Storan Bersama:

  • The StandbyNode dan NameNode yang aktif tetap selari antara satu sama lain dengan menggunakan a peranti simpanan bersama .NameNode yang aktif mencatat rekod pengubahsuaian yang dilakukan di ruang namanya ke EditLog yang ada di storan bersama ini.The StandbyNode membaca perubahan yang dibuat pada EditLogs di storan bersama ini dan menerapkannya ke ruang namanya sendiri.
  • Sekarang, sekiranya berlaku failover, StandbyNode mengemas kini maklumat metadata menggunakan EditLogs di storan bersama pada mulanya. Kemudian, ia mengambil tanggungjawab Active NameNode. Ini menjadikan keadaan ruang nama semasa diselaraskan dengan keadaan sebelum failover.
  • Pentadbir mesti mengkonfigurasi sekurang-kurangnya satu kaedah pagar untuk mengelakkan senario otak terbelah.
  • Sistem ini boleh menggunakan pelbagai mekanisme pagar. Ini mungkin termasuk pembunuhan proses NameNode dan membatalkan aksesnya ke direktori penyimpanan bersama.
  • Sebagai usaha terakhir, kita dapat melindungi NameNode yang aktif sebelumnya dengan teknik yang dikenali sebagai STONITH, atau 'menembak node lain di kepala'. STONITH menggunakan unit pengagihan kuasa khusus untuk mematikan mesin NameNode secara paksa.

Failover automatik:

Failover adalah prosedur di mana sistem secara automatik mengalihkan kawalan ke sistem sekunder apabila mengesan kesalahan atau kegagalan. Terdapat dua jenis failover:

Failover Anggun: Dalam kes ini, kami secara manual memulakan failover untuk penyelenggaraan rutin.

Failover automatik: Dalam kes ini, failover dimulakan secara automatik sekiranya berlaku kegagalan NameNode (peristiwa yang tidak dirancang).

Apache Zookeeper adalah perkhidmatan yang menyediakan kemampuan failover automatik dalam kluster Ketersediaan Tinggi HDFS. Ia menyimpan sejumlah kecil data koordinasi, memberitahu klien mengenai perubahan data tersebut, dan memantau kegagalan pelanggan. Zookeeper mengekalkan sesi dengan NameNodes. Sekiranya gagal, sesi akan tamat dan Zookeeper akan memberitahu NameNodes lain untuk memulakan proses failover. Sekiranya kegagalan NameNode, NameNode pasif lain dapat mengunci Zookeeper dengan menyatakan bahawa ia ingin menjadi ActiveNodeNode seterusnya.

ZookeerFailoverController (ZKFC) adalah pelanggan Zookeeper yang juga memantau dan menguruskan status NameNode. Setiap NameNode menjalankan ZKFC juga. ZKFC bertanggungjawab untuk memantau kesihatan NameNodes secara berkala.

Sekarang setelah anda memahami apa itu Ketersediaan Tinggi dalam kluster Hadoop, inilah masanya untuk menyiapkannya. Untuk menyediakan Ketersediaan Tinggi di kluster Hadoop, anda harus menggunakan Zookeeper di semua nod.

Daemon di Active NameNode adalah:

apa kebuntuan di java
  • Penjaga zoo
  • Pengawal Zookeeper Fail Lebih
  • Nota Jurnal
  • Nombor Nama

Daemon dalam Standby NameNode adalah:

  • Penjaga zoo
  • Pengawal Zookeeper Fail Lebih
  • Nota Jurnal
  • Nombor Nama

Daemon di DataNode adalah:

  • Penjaga zoo
  • Nota Jurnal
  • DataNode

Sekiranya anda ingin menguasai HDFS dan Hadoop, lihat kursus Big Data dan Hadoop yang dikendalikan khas oleh Edureka. Klik pada butang di bawah untuk memulakan.

Menyiapkan dan Mengkonfigurasi Kluster Ketersediaan Tinggi di Hadoop:

Anda mesti terlebih dahulu menyediakan nama Java dan host setiap nod.

Mesin maya alamat IP Nama hos
Nota Nama Aktif192.168.1.81nn1.cluster.com atau nn1
Nota Nama siap sedia192.168.1.58nn2.cluster.com atau nn2
DataNode192.168.1.82dn1.cluster.com atau dn1

Muat turun fail tar binari Hadoop dan Zookeeper, ekstrak fail untuk mengedit fail 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

Muat turun tar binari Hadoop yang stabil ke dari laman Apache Hadoop.

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

Keluarkan bola tar Hadoop.

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

Sebarkan perduaan hadoop.

Tambahkan Hadoop, Zookeeper dan jalan ke fail .bashrc.

Buka fail .bashrc.

Perintah : sudo gedit ~ / .bashrc

Tambahkan jalan di bawah:

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

Edit fail .bashrc.

Aktifkan SSH di semua nod.

Hasilkan kekunci SSH di semua nod.

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

Sediakan kunci SSH di semua nod.

Jangan berikan laluan ke fail Enter untuk menyimpan kunci dan jangan berikan frasa laluan. Tekan butang enter.

Hasilkan proses kunci ssh di semua nod.

Setelah kunci ssh dihasilkan, anda akan mendapat kunci awam dan kunci peribadi.

Direktori kunci .ssh harus mengandungi Permission 700 dan semua kunci di dalam direktori .ssh harus mengandungi izin 600.

Tukar kebenaran direktori SSH.

Tukar direktori ke .ssh dan ubah kebenaran fail menjadi 600

Tukar kebenaran kunci awam dan peribadi.

Anda harus menyalin kunci awam ssh Nama node ke semua nod.

Dalam Namenode Aktif, salin id_rsa.pub menggunakan perintah kucing.

Perintah : kucing ~ / .ssh / id_rsa.pub >> ~ / .ssh / Author_keys

Salin kunci Namenode ssh ke kunci yang dibenarkan.

Salin kunci awam NameNode ke semua nod menggunakan ssh-copy-id arahan.

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

Salin kunci tujuan ke Standby NameNode.

Salin kunci awam NameNode ke nod data.

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

Salin kunci awam Namenode ke nod data.

Mulakan semula perkhidmatan sshd di semua nod.

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

cara memperuntukkan array secara dinamik dalam java

Mulakan semula perkhidmatan SSH.

Kini anda boleh log masuk ke sebarang nod dari Namenode tanpa sebarang pengesahan.

Buka fail core-site.xml dari nod Nama Aktif dan tambahkan sifat di bawah.

Edit core-site.xml dari Nama nama aktif

Buka fail hdfs-site.xml dalam Namenode Aktif. Tambahkan Properties di bawah.

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.enaktifkan ha.zookeeper yang benar .quorum nn1.cluster.com ::181,nn2.cluster.com ::181,dn1.cluster.com ::181 dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files / home / edureka /.ssh/id_rsa

Tukar direktori ke direktori conf zookeeper.

Perintah : cd zookeeper-3.4.6 / conf

Direktori Zookeeper Conf.

Dalam direktori conf anda mempunyai fail zoo_sample.cfg, buat zoo.cfg menggunakan fail zoo_sample.cfg.

Perintah : cp zoo_sample.cfg zoo.cfg

Buat fail zoo.cfg.

Buat direktori di mana-mana lokasi dan gunakan direktori ini untuk menyimpan data penjaga zook.

Perintah : mkdir

Buat direktori untuk menyimpan data zookeeper.

Buka fail zoo.cfg.

Perintah : gedit zoo.cfg

Tambahkan jalan direktori yang dibuat pada langkah di atas ke properti dataDir dan tambahkan butiran di bawah mengenai node yang tinggal, dalam fail zoo.cfg.

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

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

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

Edit fail zoo.cfg.

Sekarang salin direktori Java dan Hadoop-2.6.0, zookeeper-3.4.6, dan file .bashrc ke semua node (Nota nama siap sedia, Node data) menggunakan perintah scp.

Perintah : scp –r edureka @:

Salin fail Hadoop, Zookeeper dan .bashrc ke semua nod.

Begitu juga, salin fail .bashrc dan direktori zookeeper ke semua nod dan ubah pemboleh ubah persekitaran di masing-masing mengikut nod masing-masing.

Dalam simpul data, buat direktori mana saja yang anda perlukan untuk menyimpan blok HDFS.

Dalam simpul data, anda harus menambahkan sifat dfs.datanode.data.dir.

Dalam kes saya, saya buat datanod direktori untuk menyimpan blok.

Buat direktori Datanode.

Tukar kebenaran ke direktori nod data.

Tukar kebenaran direktori Datanode.

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

Catatan: Simpan semua sifat yang disalin dari Namenode Aktif tambahkan dfs.datanode.data.dir satu ekstrak harta di namenode.

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

Dalam Namenode aktif, ubah direktori di mana anda ingin menyimpan fail konfigurasi zookeeper (jalur harta dataDir).

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

Perintah : vi myid

Buat fail myid.

Dalam tanda nama siap sedia, ubah direktori di mana anda mahu menyimpan fail konfigurasi zookeeper (jalur harta dataDir).

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

Dalam simpul data, ubah direktori di mana anda ingin menyimpan fail konfigurasi zookeeper (jalur harta dataDir).

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

Mulakan Nota Jurnal di ketiga-tiga nod tersebut.

Perintah : hadoop-daemon.sh mulakan jurnal

Mulakan Nota Jurnal.

Apabila anda memasukkan arahan jps, anda akan melihat daemon JournalNode di semua nod.

FormatTujuan aktif.

Perintah : HDFS bertujuan-format

Format NameNode Aktif.

Mulakan daemon Namenode dan Namedode Aktif.

Perintah : tujuan permulaan hadoop-daemon.sh

Mulakan Namenode.

Salin data HDFS Meta dari nod nama aktif ke nama nama siap sedia.

Perintah : HDFS bertujuan -bootstrapStandby

Salin data Meta HDFS dari nod Nama aktif ke Nama Sedia.

Sebaik sahaja anda menjalankan perintah ini, anda akan mendapat maklumat dari node dan lokasi mana data meta disalin dan sama ada berjaya menyalin atau tidak.

Maklumat perincian tujuan Aktif.

Setelah data Meta disalin dari Namenode aktif ke namenode siap sedia, anda akan mendapat mesej yang ditunjukkan di bawah dalam tangkapan skrin.

Maklumat mengenai HDFS dalam Standby Namenode.

Mulakan daemon namenode di mesin namenode Standby.

Perintah : tujuan permulaan hadoop-daemon.sh

Sekarang mulakan perkhidmatan Zookeeper di ketiga-tiga nod tersebut.

Perintah : zkServer.sh start (Jalankan arahan ini di semua nod)

Dalam Tujuan Aktif:

Mulakan penjaga zook dalam Active NameNode.

Dalam Nama Sedia Bersedia:

Mulakan penjaga zook dalam nama sedia Node.

Dalam nod Data:

Mulakan penjaga zook di DataNode.

Setelah menjalankan pelayan Zookeeper, masukkan arahan JPS. Di semua nod anda akan melihat perkhidmatanorumPeerMain.

Mulakan daemon nod Data di mesin nod Data.

Perintah : hadoop-daemon.sh mulakan datanode

Mulakan pengawal kegagalan Zookeeper dalam nod Nama aktif dan nod nama siap sedia.

Format pemacu zookeeper fail yang gagal di dalam Namenode aktif.

Perintah: HDFS zkfc –formatZK

Format ZKFC.

Mulakan ZKFC dalam nama nama Aktif.

Perintah : hadoop-daemon.sh mulakan zkfc

Masukkan arahan jps untuk memeriksa daemon DFSZkFailoverController.

Mulakan ZKFC.

Format pemacu zookeeper fail kegagalan pengawal dalam nama panggilan Standby.

Perintah : hdfs zkfc –formatZK

Mulakan ZKFC dalam tanda nama Standby.

Perintah : hadoop-daemon.sh mulakan zkfc

Masukkan arahan jps untuk memeriksa daemon DFSZkFailoverController.

Sekarang periksa status setiap Namenode, node mana yang Aktif atau node mana yang berada dalam Siaga dengan menggunakan arahan di bawah.

Perintah : hdfs haadmin –getServiceState nn1

Periksa status setiap NameNode.

Sekarang Periksa status setiap Namenode menggunakan penyemak imbas web.

Buka penyemak imbas Web dan masukkan URL di bawah.

: 50070

Ia akan menunjukkan sama ada nod nama Aktif atau dalam keadaan bersedia.

Nota Nama Aktif.

Buka butiran simpul nama lain menggunakan penyemak imbas web.

Nota Nama siap sedia.

Dalam Namenode Aktif, matikan daemon namenode untuk menukar simpul nama Sedia menjadi nama nama aktif.

Masukkan jps di Namenode aktif dan matikan daemon.

Perintah: sudo kill -9

ID Proses Daemon.

ID proses Namenode adalah 7606, bunuh namenode.

Perintah : Sudo kill -9 7606

Bunuh proses Node Nama

Buka dua nod melalui penyemak imbas web dan periksa statusnya.

Perincian nama nama.

apa itu actionlistener di java

Status NameNode.

Tahniah, anda berjaya menyiapkan Kluster Ketersediaan Tinggi HDFS di Hadoop.

Sekarang setelah anda memahami Senibina Kluster Ketersediaan Tinggi Hadoop, lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus Latihan Pensijilan Hadoop Data Besar Edureka membantu pelajar menjadi pakar dalam bidang HDFS, Benang, MapReduce, Babi, Hive, HBase, Oozie, Flume dan Sqoop menggunakan kes penggunaan masa nyata pada domain Runcit, Media Sosial, Penerbangan, Pelancongan, Kewangan.

Ada soalan untuk kami? Sila sebutkan di bahagian komen dan kami akan menghubungi anda.

window._LQ_ = window._LQ_ || {}

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