前段時間在公司伺服器上重新搭了一套ambari2.6+hdp2.7的環境,遇到的問題還不是很多,還算比較順利。現在想再搭建一套ambari2.7.3+hdp3.1.1的環境在自己的機器上來玩一玩,雖然去年也勉勉強強的已經搭建好了一個,但是問題也比較多,并且部分元件使用不了,虛拟機運作起來也完全跑不動,是以現在再多開3台虛拟機,總共6台來重新搭建。
搭建這個版本中遇到了不少的坑,曆經幾十次失敗,修複了一晚上,好歹都解決了,結果如下:

centos 7.7
ambari 2.7.3
hdp 3.1.1
amriadb
準備了6台虛拟機,各個虛拟機部署服務如下:
服務
hdp1
hdp2
hdp3
s1
s2
s3
ambari-server
√
ambari agent
zk-server
namenode
snamenode
datanode
resource-manager
yarn-client
hive-server
hive-client
他大部分都是正确的,但是呢,有些地方還是有問題的,修正如下:
(3)選擇版本并修改本地源位址; 選HDP-3.1.00; 選Use Local Repository; 選redhat7: HDP-3.1: http://182.15.240.145/hdp/HDP/centos7/ HDP-3.1-GPL: http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.1.0.0/ HDP-UTILS-1.1.0.22: http://182.15.240.145/hdp/HDP-UTILS-1.1.0.22/
這裡的路徑是不正确的,會導路徑驗證不通過無法進入下一步,雖然取消路徑檢查能繼續下去,但是後面會出現安裝過程中yum無法解析baseUrl導緻安裝失敗。修正為:
HDP-3.1: http://192.168.1.104/hdp/HDP/centos7/3.0.1.0-187/
HDP-UTILS-1.1.0.22: http://192.168.1.104/hdp/HDP-UTILS-1.1.0.22/HDP-UTILS/centos7/1.1.0.22/
其次ambari及hdp的小版本的差别也要注意下。
原因: 資料庫配置不正确,且缺少mysql驅動
解決: 将mysql驅動拷入Java目錄下或者,建立驅動連結
原因: 由于安裝時資料庫配置錯誤,沒有生成中繼資料庫
解決: 删除service,重新安裝hive
原因: python使用了預設的ascii編碼,腳本包含非ascii編碼字元時出錯。
解決: /usr/lib/python2.7/site-package目錄下建立檔案: sitecustomize.py來修改預設編碼,内容如下:
原因: 執行hive的時候會從hdfs的/hdp/apps/3.0.1.0-187/tez目錄下下載下傳tez.tar.gz包,但是直接安裝的tez,這個tez.tar.gz的檔案是壞的,沒法用,是以得去下載下傳一個上傳的hdfs去
解決: 自己編譯個tez.tar.gz,因為下載下傳的包裡的hadoop版本不對,不能用。
原因: 檢視yarn執行日志,發現是tez導緻的,報錯為數字格式化異常,最後發現由于安裝的hive預設的執行引擎時tez,但是呢,這個tez的版本是0.9.0.3.1,他裡邊的Hadoop是2.6版本的,而這次裝的Hadoop是3.1版本的,而tez官網沒有直接提供hadoop3.1版本的包,是以得自己下載下傳源碼來編譯下。
解決: 下載下傳tez 0.9.2源碼編譯hadoop 3.1版本的tez
原因: 缺少protoc。
解決: 下載下傳安裝protoc,并配置環境變量。但是呢配置完環境變量後仍然報這個錯,然後注釋掉pom.xml裡的<code><protoc.path>${env.PROTOC_PATH}</protoc.path></code>,執行編譯成功
每次安裝這種比較麻煩的元件的時候都想着好好記錄下過程,不然以後遇到相同的問題又花費時間,但是一旦遇到問題就鑽進去了,想辦法解決問題忘記記錄了,這個得好好反思下,下次要記得記錄下過程。
網絡上志同道合,我們一起學習網絡安全,一起進步。