Bagikan melalui


Apache HBase Master (HMaster) gagal dimulai di Azure HDInsight

Artikel ini menjelaskan langkah-langkah pemecahan masalah dan kemungkinan resolusi untuk masalah saat berinteraksi dengan kluster Azure HDInsight.

Skenario: Master startup cannot progress, in holding-pattern until region comes online

Masalah

HMaster gagal memulai karena peringatan berikut:

hbase:namespace,,<timestamp_region_create>.<encoded_region_name>.is NOT online; state={<encoded_region_name> state=OPEN, ts=<some_timestamp>, server=<server_name>}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined. 

Misalnya, nilai parameter dapat bervariasi dalam pesan yang sebenarnya:

hbase:namespace,,1546588612000.0000010bc582e331e3080d5913a97000. is NOT online; state={0000010bc582e331e3080d5913a97000 state=OPEN, ts=1633935993000, server=<wn fqdn>,16000,1622012792000}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.

Penyebab

HMaster memeriksa direktori WAL di server wilayah sebelum mengembalikan wilayah OPEN secara online. Dalam hal ini, jika direktori tersebut tidak ada, direktori tersebut tidak memulai

Resolusi

  1. Buat direktori dummy ini menggunakan perintah: sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000

  2. Hidupkan ulang layanan HMaster dari UI Ambari.

Jika Anda menggunakan hbase-2.x, lihat informasi selengkapnya tentang cara menggunakan hbck2 untuk menetapkan namespace dan tabel meta

Skenario: Kegagalan pengubahan nama atom

Masalah

File tak terduga teridentifikasi selama proses memulai.

Penyebab

Selama proses memulai, HMaster melakukan banyak langkah inisialisasi, termasuk memindahkan data dari folder scratch (.tmp) ke folder data. HMaster juga mengamati folder write-ahead log (WAL) untuk melihat apakah ada server wilayah yang tidak responsif.

HMaster melakukan perintah daftar dasar pada folder WAL. Jika di suatu waktu HMaster melihat file yang tidak terduga dalam salah satu folder ini, ia akan melemparkan pengecualian dan tidak mulai.

Resolusi

Periksa tumpukan panggilan dan coba tentukan folder mana yang mungkin menyebabkan masalah (misalnya, mungkin saja folder WAL atau folder .tmp). Kemudian, di Azure Storage Explorer atau dengan menggunakan perintah HDFS, coba temukan file masalah. Biasanya, file ini disebut *-renamePending.json. (File *-renamePending.json adalah file jurnal yang digunakan untuk mengimplementasikan operasi penggantian nama atom di driver WASB. Karena bug dalam implementasi ini, file-file ini dapat ditinggalkan setelah proses crash, dan seterusnya.) Hapus paksa file ini baik di Cloud Explorer atau dengan menggunakan perintah HDFS.

Kadang-kadang, mungkin juga terdapat file sementara bernama semacam $$$.$$$ di lokasi ini. Anda harus menggunakan perintah HDFS ls untuk melihat file ini; Anda tidak dapat melihat file di Azure Storage Explorer. Untuk menghapus file ini, gunakan perintah HDFS hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$.

Setelah Anda menjalankan perintah ini, seharusnya HMaster segera dimulai.


Skenario: Tidak ada alamat server yang tercantum

Masalah

Anda mungkin melihat pesan yang menunjukkan bahwa hbase: meta tabel tidak online. Menjalankan hbck mungkin mengakibatkan laporan bahwa hbase: meta table replicaId 0 is not found on any region.Dalam log HMaster, Anda mungkin melihat pesan: No server address listed in hbase: meta for region hbase: backup <region name>.

Penyebab

HMaster tidak dapat menginisialisasi setelah memulai ulang HBase.

Resolusi

  1. Di shell HBase, masukkan perintah berikut (ubah nilai aktual sebagaimana berlaku):

    scan 'hbase:meta'
    delete 'hbase:meta','hbase:backup <region name>','<column name>'
    
  2. Hapus entri hbase: namespace. Entri ini mungkin merupakan eror yang sama dengan yang sedang dilaporkan ketika tabel hbase: namespace dipindai.

  3. Mulai ulang HMaster aktif dari Ambari UI untuk memunculkan HBase dalam keadaan berjalan.

  4. Di shell HBase, untuk memunculkan semua tabel offline, jalankan perintah berikut:

    hbase hbck -ignorePreCheckPermission -fixAssignments
    

Skenario: java.io.IOException: Timedout

Masalah

Waktu HMaster habis dengan pengecualian fatal yang mirip dengan: java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned.

Penyebab

Anda mungkin mengalami masalah ini jika Anda memiliki banyak tabel dan wilayah yang belum dibersihkan saat memulai ulang layanan HMaster Anda. Batas waktu adalah cacat yang diketahui dengan HMaster. Tugas mulai ulang klaster yang umum bisa memakan waktu lama. HMaster akan dimatikan jika tabel namespace layanan belum ditetapkan. Tugas startup yang panjang terjadi di mana sejumlah besar data yang tidak di-unflushed ada dan batas waktu lima menit tidak cukup.

Resolusi

  1. Dari Apache Ambari UI, buka HBase > Configs. Di file hbase-site.xml kustom, tambahkan pengaturan berikut ini:

    Key: hbase.master.namespace.init.timeout Value: 2400000  
    
  2. Mulai ulang layanan yang diperlukan (HMaster, dan mungkin layanan HBase lainnya).


Skenario: Server wilayah sering dimulai ulang

Masalah

Simpul melakukan reboot secara berkala. Dari log server wilayah Anda mungkin melihat entri yang mirip dengan:

2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms

Penyebab: batas waktu sesi zookeeper

Jeda JVM GC regionserver yang panjang. Jeda menyebabkan regionserver tidak responsif dan tidak dapat mengirim detak jantung ke HMaster dalam batas waktu sesi zookeeper 40s. HMaster percaya regionserver sudah mati, membatalkan dan menghidupkan regionserver ulang.

Ubah batas waktu sesi Zookeeper, bukan hanya zookeeper.session.timeout pengaturan hbase-site yang perlu diubah tetapi juga maxSessionTimeout pengaturan zoo.cfg Zookeeper.

  1. Akses UI Ambari, buka HBase -> Konfigurasi -> Pengaturan, di bagian Batas Waktu, ubah nilai Batas Waktu Sesi Zookeeper.

  2. Akses Ambari UI, buka Zookeeper -> Configs -> Custom zoo.cfg, tambahkan/ubah pengaturan berikut. Pastikan nilainya sama dengan zookeeper.session.timeout HBase.

    Key: maxSessionTimeout Value: 120000  
    
  3. Mulai ulang layanan yang diperlukan.

Penyebab: RegionServer kelebihan beban

Ikuti Jumlah wilayah per RS - batas atas untuk menghitung batas atas. Misalnya: 8000 (Region server Heap -- Xmx in MB) * 0.4 (hbase.regionserver.global.memstore.size) /64 (hbase.regionserver.hlog.blocksize/2) = 50

Untuk mengurangi, tingkatkan skala kluster HBase Anda.


Skenario: Kegagalan pemisahan log

Masalah

HMasters gagal muncul pada kluster HBase.

Penyebab

Kegagalan konfigurasi pengaturan HDFS dan HBase untuk akun penyimpanan sekunder.

Resolusi

set hbase.rootdir: wasb://@.blob.core.windows.net/hbase dan mulai kembali layanan di Ambari.


Langkah berikutnya

Jika Anda tidak melihat masalah atau tidak dapat memecahkan masalah, kunjungi salah satu saluran berikut untuk mendapatkan dukungan lebih lanjut:

  • Dapatkan jawaban dari para ahli Azure melalui Dukungan Komunitas Azure.

  • Hubungi @AzureSupport - akun Microsoft Azure resmi untuk meningkatkan pengalaman pelanggan. Menghubungkan komunitas Microsoft Azure ke sumber daya yang tepat: jawaban, dukungan, dan pakar.

  • Jika Anda memerlukan bantuan lainnya, Anda dapat mengirimkan permintaan dukungan dari portal Microsoft Azure. Pilih Dukungan dari bilah menu atau buka hub Bantuan + Dukungan. Untuk informasi selengkapnya, tinjau Cara membuat permintaan dukungan Microsoft Azure. Akses ke Manajemen Langganan dan dukungan tagihan disertakan dengan langganan Microsoft Azure, dan Dukungan Teknis disediakan melalui salah satu Paket Dukungan Azure.