ARM架構下Docker部署HBase失敗:如何解決HBase與ARM架構的不兼容性?

ARM架構下Docker部署HBase失敗:如何解決HBase與ARM架構的不兼容性?

在ARM架構服務器上使用docker部署hbase常常遇到挑戰。本文分析了這種不兼容性問題,并提供了解決方案。

核心問題在于嘗試在ARM架構的Docker容器中運行為x86架構編譯的HBase。即使更換了JDK版本(從JDK11到JDK8),并使用了arm64架構的JDK,也無法解決問題。根本原因是下載的HBase源碼包(例如hbase-2.4.17-src.tar.gz)是為x86架構編譯的,無法在ARM架構上直接運行。 Java.lang.ClassNotFoundException: org.apache.hadoop.hbase.master.HMaster 錯誤信息也證實了這一點。 使用預編譯的HBase Docker鏡像(例如harisekhon/hbase)也會因架構不匹配而失敗,提示 The requested image’s platform (linux/amd64) does not match the detected host platform (linux/arm64/v8)。 最終,python腳本連接HBase時出現的TTransportException: TSocket read 0 bytes錯誤,也是由于HBase服務器端啟動失敗導致的網絡連接問題。

解決方法是使用針對ARM架構編譯的HBase版本。 直接編譯HBase源碼并構建一個包含ARM架構兼容HBase版本的Docker鏡像是有效的解決方案。這需要選擇合適的ARM架構JDK版本,并確保所有依賴項都與ARM架構兼容。僅僅更換基礎鏡像和JDK版本是不夠的,HBase本身需要重新編譯以適應ARM架構。

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享