Ubuntu14下Hadoop開發 編譯64位Hadoop2.4

Mr_Chenph發表於2014-05-05
  • Hadoop官方網站只提供了32位的Hadoop包,我裝的是64位的系統,自然無法使用,會報錯誤,導致的結果是無法啟動hadoop
libhadoop.so.1.0.0 which might have disabled stack guard.
  • 我們可以在${Hadoop-Home}/lib/native資料夾下找到libhadoop.so.1.0.0檔案,會出現如下
yuping@YP-X100e:$ file /usr/mytools/hadoop-2.4.0/lib/native/libhadoop.so.1.0.0
/usr/mytools/hadoop-2.4.0/lib/native/libhadoop.so.1.0.0:ELF 32-bit LSB shared object, Intel 80386,version 1 (SYSV), dynamically linked, not stripped
  • 我沒有使用svn,直接在官網下載的hadoop的src包,解壓後,進入該目錄,直接執行(別忘了,你的當前使用者要有這個資料夾的操作許可權)
mvn package -Pdist,native,docs -DskipTests -Dtar
  • 漫長的除錯工作開始了,搜資料,蒐集這些包真是崩潰的節奏
  • 下午3點一種弄到凌晨1點,經過幾個小時的努力,應該安裝的依賴軟體包括
sudo apt-get install maven
sudo apt-get install protobuf-compiler
sudo apt-get install cmake
sudo apt-get install zlib1g.dev
sudo apt-get install g++
sudo apt-get install libglib2.0-dev
sudo apt-get install libssl-dev
  • 其中maven是maven3,我錯誤的認為maven是1;ant是系統自帶的1.9版本
  • 大多數的錯誤網上都能搜出解決,除了libglib2.0-dev和zlib1g.dev這兩個依賴包,搜的時間較長
  • 整個過程最崩潰的是cmake,裝好之後,檢視版本,正常,但依然報
an ant buildxception has occured exec returned 1
  • 仔細看了執行日誌,才發現,我最開始的hadoop-src目錄是在中文下,我在編譯過程中怕中文對編譯有影響,便將整個目錄拷貝到某英文路徑下,在移動之前執行過編譯操作,但是沒有安裝zlib1g.dev和libglib2.0-dev,所以之後就算安裝了這倆依賴包,還是會報錯,解決的方式是刪除這個hadoop-src,重新解壓一份放到英文路徑一下,再次執行打包操作
  • 大概40分鐘左右,搞定,生成的hadoop-2.4.0-src/hadoop-dist/target/hadoop-2.4.0,用這個替換掉之前的32位hadoop-2.4.0即可

相關文章