前言
HDP 全稱Hortonworks Data Platform (HDP),是Hortomworks公司提供的一個大數據平臺,它整合了開源hadoop生態圈的大部分組件,能夠很簡單便捷的幫助我們搭建起Hadoop大數據集羣環境,與此類似的還有CDH(Cloudera Hadoop)。因最近在公司搭建這個,在此記錄一下。
環境
準備工作
安裝創建本地倉庫工具
首先肯定是要有一臺服務器可以連接外網的,否則任何軟件包都無法下載了。
以下命令默認都是以root用戶運行:
# yum install createrepo -y
createrepo工具可以幫助我們創建一個本地局域網的私有倉庫。
安裝yum-utils包
yum-utils包含有reposync工具,可以方便的從遠程同步倉庫鏡像到本地
# yum install yum-utils -y
安裝配置nginx
安裝nginx是用來方便內網其他服務器進行訪問私有倉庫,用apache也可以,不過我個人比較喜歡用nginx。
# yum install nginx -y
將nginx配置成文件服務器,類似apache那種。編輯/etc/nginx/nginx.conf
文件。
# vim /etc/nginx/nginx.conf
找到server節點,添加以下內容即可。
server {
listen 80 default_server;
location / {
root /var/www/html; #這裏可以選擇一個空間較大分區
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
之後執行以下命令,啓動nginx,查看運行狀態以及設置開機自啓:
# systemctl start nginx
# systemctl status nginx # 出現Active: active (running)表示啓動成功
# systemctl enable nginx
配置HDP 2.5源
在可以訪問外網的服務器上進行配置,執行以下命令:
# wget -nv http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.4.2.0/ambari.repo -O /etc/yum.repos.d/ambari.repo
這個命令是配置ambari倉庫的,Ambari是一種基於Web的工具,支持Apache Hadoop集羣的供應、管理和監控。目前也是Apache的頂級項目。
繼續配置hdp倉庫,執行以下命令:
# wget -nv http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.5.0.0/hdp.repo -O /etc/yum.repos.d/hdp.repo
生成一下緩存:
# yum makecache
然後查看倉庫id等信息,方便後面製作私有倉庫。
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name
!HDP-2.5.0.0 HDP Version - HDP-2.5.0.0
!HDP-UTILS-1.1.0.21 HDP-UTILS Version - HDP-UTILS-1.1.0.21
!Updates-ambari-2.4.2.0 ambari-2.4.2.0 - Updates
創建私有倉庫
進入我們上面nginx設置的web目錄,通過reposync
命令從遠程同步倉庫數據到本地來,執行以下命令:
# reposync -r xxx(repo id)
其中的repo id就是上面通過yum repolist
查看到的第一列。
比如想要同步hdp相關倉庫就輸入:
# reposync -r Updates-ambari-2.4.2.0
# reposync -r HDP-2.5.0.0
# reposync -r HDP-UTILS-1.1.0.21
之後進入每個倉庫目錄下面,執行# createrepo .
命令就可以創建一個源倉庫了,也可以直接在當前目錄下面執行,這樣就把三個倉庫都放在一個裏面了。
使用私有倉庫
局域網集羣中其他服務器要使用該倉庫,也需要進行一些配置。
在私有倉庫的服務器鏡像目錄中新建一個hdp.repo文件,內容如下:
[HDP]
name=hdp Version - 2.5
baseurl=http://192.168.1.2[server-ip]/hdp
gpgcheck=0
enabled=1
priority=1
其中參數說明:
- [HDP]表示該倉庫的id爲HDP,可通過yum repolist查看。出現了該id即配置正確
- baseurl表示倉庫的根路徑,這裏如果是本地的話,可以輸入:file:///var/www/html/hdp
- gpgcheck=0表示不進行簽名檢查
- enabled=1表示啓用該倉庫,如果爲0則表示不使用該倉庫
- priority=1表示優先級,如果一個軟件包在多個倉庫都有,會優先使用這個。
然後在其他機器上,通過運行以下命令,導入倉庫配置:
# wget -nv http://192.168.1.2/hdp/hdp.repo -O /etc/yum.repo.d/hdp.repo
之後進行倉庫檢測和緩存:
# yum repolist # 查看是否有HDP這個repo id
# yum makecache
好了,這個還沒開始安裝,光搭環境就說半天了。之前在公司也是,搭個環境都要好幾天了。下面開始真正的安裝吧。
安裝ambari
倉庫都配置好了以後,我們可以選擇一臺服務器作爲master主服務器,集羣的配置可以在ambari web控制檯進行添加。master服務器也要添加那個私有倉庫,然後再安裝ambari-server:
# yum install ambari-server -y
安裝成功以後。需要進行初始化配置,執行以下命令:
# ambari-server setup
進入交互式設置嚮導界面
這裏會提示要臨時關閉SELinux和配置iptables運行ambari端口訪問等等,嫌麻煩可以把這些防火牆都關掉,先Ctrl+C
退出初始化嚮導,然後關閉防火牆。
關閉防火牆
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0 # 臨時關閉selinux
永久關閉selinux
編輯/etc/selinux/config
將SELINUX=enforcing改爲
SELINUX=disabled
執行以下命令即可,重啓生效
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
初始化ambari-server
關閉SELinux等防火牆重啓後,繼續執行ambari-server setup
進行初始化:
根據提示進行輸入,jdk是通過從官網下的rpm包安裝的,所以默認路徑就是在/usr/java/default
。
最下方是選擇數據庫的配置,因爲默認是使用嵌入式的PostgreSQL,我們可以改爲MySQL。
這裏我們需要在數據庫中分別創建ambari數據庫和ambari用戶,注意這裏有一個坑:數據庫密碼只能輸入字符數字和 _下劃線,還有-減號。不能包含特殊字符,否則會報以下錯誤信息:
Enter Database Password (bigdata):
Invalid characters in password. Use only alphanumeric or _ or - characters
而MySQL 5.7默認安全策略是中級的,需要有特殊字符,這個可以通過以下命令進行修改,
使用root用戶登錄mysql數據庫服務器:
mysql> set global validate_password_policy=0;
mysql> flush privileges;
這樣密碼策略就改爲低級了,只需要符合8位長度即可。
最後根據提示還需要安裝mysql java驅動,執行以下命令安裝即可,如果是內網的話,將mysql驅動文件複製到/usr/share/java
路徑下即可:
# yum install mysql-connector-java -y
安裝好mysql驅動後,再次執行初始化操作:
# ambari-server setup
安裝提示,配置完數據庫後,會檢測數據庫的連接等,打印以下信息:
根據提示,表明初始化已成功了,但是在啓動ambari-server之前需要在數據庫服務器上運行/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
SQL文件,主要是用於創建表約束的。
在遠程創建好數據庫後,本地執行以下命令即可:
# mysql -h 192.168.1.2 -uroot -p -Dambari < /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
啓動ambari-server
導入表結構後就可以啓動ambari-server
了,注意一定要先導入表結構,因爲在啓動ambari-server
的時候會去檢查表約束的。檢測失敗就無法啓動ambari-server
了,具體的失敗原因可通過查看以下兩個文件分析:
/var/log/ambari-server/ambari-server.log
/var/log/ambari-server/ambari-server-check-database.log
最後啓動成功,打印如下信息:
然後通過web瀏覽器,可以訪問ambari控制檯了。地址爲安裝的服務器ip,端口8080:http://server-ip:8080
注意別讓其他應用佔用該端口了。
默認登錄用戶名和密碼都爲admin
配置集羣服務
進入到首頁,點擊Launch Install Wizard,開始安裝嚮導
這個配置步驟有點多,這裏還是一步步列出來好了,方便供大家參考
步驟一:
輸入一個集羣名稱,這個隨意就可以了。
步驟二:
挑選一個版本,這裏選擇HDP-2.5,還是下面的倉庫配置,使用本地倉庫,因爲都是CentOS 7.x系統,所以只保留redhat7這個倉庫選項就可以了,其他的都刪除掉,點擊右邊Remove即可
其中base url就是我們在hdp.repo等這些倉庫文件中配置的base url地址,如下:
如果輸入錯誤的話,會給予提示的,並無法進入下一步,正確之後點擊Next,進入下一步
步驟三:
在這一步是配置集羣機器的,還有私鑰上傳。注意是私鑰id_rsa的文件。
如果是多臺機器的話,還要配置ssh無密碼登錄等等這裏就不多說了。
如果是單臺服務器的話,也需要將公鑰導入到authorized_keys文件中。# ssh-keygen # 一直回車生成密鑰對 # cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
如果是乾淨的服務器環境,就需要執行以上兩步。
步驟四:
這一步就是確認主機的訪問性,安裝agent等
步驟五:
這一步是選擇要安裝的服務了,可以看到有非常多的服務可選,這裏建議只選擇少量的幾個就可以了,加快安裝時間。後面有需要可以再添加這些服務。
步驟六:
分配主機服務,比如哪些服務運行在哪個服務器上等等,可根據服務器的硬件配置進行相應的選擇。
步驟七:
安裝集羣一些服務的客戶端
步驟八:
定製服務,就是配置服務的一些屬性,還有數據庫連接配置等信息
其中有紅色小點的都是數據庫未配置導致的,進行相應的配置即可。
配置,所有小紅點都消失後就可以進入下一步了。步驟九:
這一步就是重新檢查一下配置的一些屬性。
步驟十:
基本都配置完了,這一步就開始在集羣中的所有機器上安裝對應服務,並且啓動服務。這一步有時候也會經常出問題的,比如安裝失敗了,啓動失敗了等等。後續會把一些錯誤總結單獨寫一篇吧。
配置完成就可以進入控制檯頁面了。
後記
在公司在家裏搭建這個環境差不多花了好幾天吧,中間也遇到過很多的問題,很多坑。只想說大數據這東西要想玩起來,成本真不小,門檻也挺高的。起碼至少就要Linux熟練精通了,否則出現一大堆問題都不知道怎麼解決,得益於我早幾年前就開始接觸學習Linux了,真的對我幫助很大。
最後是對一些大數據新手的建議,不要把過多的時間花在集羣環境的搭建上面了。要把精力更多的放在業務算法,邏輯處理,數據分析等等更好。這也正是我寫這篇的原因,儘可能的減少環境搭建時間。
如果也有搞大數據這塊的,可以一起交流學習哈。共勉~