企業級大資料平臺構建
edt搭建
環境要求
作業系統均為CentOS6.4、JDK版本為1.7、Python版本為2.6。
注意建立虛擬機器的時候要多給些記憶體最好80G或者更大,因為預設情況下可能只會分配20G
1. 搭建本地yum源倉庫
(1) 下載離線安裝包
將三個檔案下載完畢後將其進行解壓,然後放到一個HTTP伺服器下以便我們能以靜態資源的形式訪問到它們。
(2) 安裝Apache伺服器
這裡我們可以使用Apache來當做HTTP伺服器。如果企業內網環境有配置好的本地yum源倉庫,那麼可以直接通過yum命令安裝。
yum install httpd
如果本地沒有yum源倉庫,則需要自行下載安裝包進行安裝,這裡不再贅述。
安裝之後執行如下命令啟動Apache服務。
/etc/init.d/httpd start
現在我們進入在Apache的靜態資源目錄,然後新建ambari和hdp兩個目錄。
cd /var/www/html
mkdir ./hdp
mkdir ./ambari
目錄建好之後,將下載好的HDP和HDP-UTILS檔案解壓到/var/www/html/hdp目錄下,然後將下載好的Ambari檔案解壓到/var/www/html/ambari目錄下。至此,本地yum倉庫的靜態資源就準備好了
(3) 修改各個虛擬機器的hostname和hosts檔案
分別將兩臺虛擬機器改為server1.cluster.com 和 server1.cluster.com
並且在兩臺機器修改/etc/hosts 檔案
新增下列程式碼:
192.168.136.129 server1.cluster.com
192.168.136.130 server2.cluster.com
(4) 配置內網yum源
新建一個 ygsoft.repo 的內網原始檔
在 /etc/yum.repos.d 中配置 ygsoft.repo
如果/etc/yum.repos.d 中本來存在有repo的配置檔案,可以刪除或者都移到一個資料夾中,讓ygsoft-repo起作用就可以了
[ygsoft-repo]
name=ygsoft-repo
baseurl=http://mirrors.ygsoft.com/centos/6.9/os/x86_64/
path=/
enabled=1
gpgcheck=0
(5) 建立yum源配置檔案
為了能讓yum命令能夠找到我們的安裝檔案,還需要新建兩個倉庫的配置檔案。
首先新建一個名為ambari.repo
[Ambari-2.4.0.1]
name=Ambari-2.4.0.1
baseurl=http://server1.cluster.com/ambari/AMBARI-2.4.0.1/centos6/2.4.0.1-1
gpgcheck=1
gpgkey=http://server1.cluster.com/ambari/AMBARI-2.4.0.1/centos6/2.4.0.1-1/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
```
然後再新建一個名為**hdp.repo**的配置檔案,配置項如下:
[HDP-UTILS-1.1.0.21]
name=HDP-UTILS-1.1.0.21
baseurl=http://server1.cluster.com/hdp/HDP-UTILS-1.1.0.21
path=/
enabled=1
gpgcheck=0
最後將這兩個配置檔案拷貝到所有準備安裝Hadoop元件的伺服器上的/etc/yum.repos.d目錄下。
現在可以執行yum repolist命令檢查一下配置是否正確,如果能看到Ambari-2.6.1.0和HDP-2.6.4.0兩個yum源就就表明配置成功了。如果看不到,就需要檢查/etc/yum.repos.d目錄下是否存在ambari.repo和hdp.repo兩個配置檔案。
## 2. 關閉防火牆和SELinux
由於Ambari會通過其Agent程式在伺服器之間頻繁的進行內部通訊,所以我們需要關閉機器自身的防火牆並禁用SELinux。依序執行如下操作。
- 執行service iptables stop命令關閉防火牆。
- 可以通過執行chkconfig iptables off 來檢查防火牆是否已經關閉。
- 開啟 /etc/selinux/config,修改SELINUX=disabled來禁用SELinux。此項修改需要重啟伺服器後才能生效。
## 3.安裝Ambari-Server
雖然Ambari系統是由安裝Ambari-Server和Ambari-Agent兩個部分組成的。但是手動安裝的時候只需要關注Ambari-Server就可以了,因為Ambari-Agent程式在通過Ambari系統新建叢集的過程中會自動安裝(關於新建叢集部分會在後續小節詳細介紹)。
由於在安裝前的準備小節,我們已經完成了Ambari本地yum源倉庫的搭建工作,所以這裡的Ambari-Server安裝就很簡單了,執行`yum install ambari-server –y`命令進行安裝。
之後便會進入自動安裝步驟,yum安裝程式會根據我們在ambari.repo中配置的資訊找到Ambari-Server的安裝檔案進行安裝。
yum install ambari-server
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package ambari-server.x86_64 0:2.4.0.1-1 will be installed
–> Processing Dependency: postgresql-server >= 8.1 for package: ambari-server-2.4.0.1-1.x86_64
–> Finished Dependency Resolution
Error: Package: ambari-server-2.4.0.1-1.x86_64 (Updates-Ambari-2.4.0.1)
Requires: postgresql-server >= 8.1
You could try using –skip-broken to work around the problem
You could try running: rpm -Va –nofiles –nodigest
此處發現安裝出現了錯誤,提示需要postgresql-server,且版本需要大於8.1。這是因為Ambari預設通過postgresql資料庫來儲存它的元資料。
所以我們還需要安裝postgresql資料庫,執行yum install postgresql-server命令安裝。
yum install postgresql-server
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
省略中間過程…
Installed:
postgresql-server.x86_64 0:8.4.20-7.el6
Dependency Installed:
postgresql.x86_64 0:8.4.20-7.el6 postgresql-libs.x86_64 0:8.4.20-7.el6
Dependency Updated:
openssl.x86_64 0:1.0.1e-57.el6
Complete!
現在重新執行`yum install ambari-server` 命令安裝Ambari-Server。
yum install ambari-server -y
Dependencies Resolved
=======================================================================================================================================================
Package Arch Version Repository Size
Installing:
ambari-server x86_64 2.4.0.1-1 Updates-Ambari-2.4.0.1 646 M
Installing for dependencies:
postgresql x86_64 8.4.20-7.el6 base 2.6 M
postgresql-libs x86_64 8.4.20-7.el6 base 202 k
postgresql-server x86_64 8.4.20-7.el6 base 3.4 M
Updating for dependencies:
openssl x86_64 1.0.1e-57.el6 base 1.5 M
Transaction Summary
Install 4 Package(s)
Upgrade 1 Package(s)
Total download size: 654 M
中間過程省略…
Installed:
ambari-server.x86_64 0:2.4.0.1-1
Dependency Installed:
postgresql-server.x86_64 0:8.4.20-6.el6
Complete!
耐心等待一會,當看到如上資訊的時候表明已經完成Ambari-Server的安裝了。
### Ambari-Server目錄結構
Ambari-Server安裝完畢之後我們主要會關注4個目錄,它們分別是:
- 配置目錄( /etc/ambari-server/conf):Ambari的配置檔案會全部放在這個目錄下。
- 日誌目錄( /var/log/ambari-server):Ambari自身的服務日誌會放在這個目錄下。
- Hadoop服務元件目錄( /usr/hdp):通過Ambari安裝的Hadoop元件會放在這個目錄下。
- Ambari服務目錄 (/usr/lib/ambari-server):Ambari自身的服務會安裝到這個目錄下。
### 配置Ambari-Server
在安裝Ambari-Server之後,如果我們立即執行`ambari-server start`命令啟動服務會發現報錯。這是因為在啟動服務之前必須要完成它初始配置,執行`ambari-server setup` 命令開始配置。
setup ambari-server
配置程式首先會檢查是否已經禁止了SELinux,這項配置在之前步驟已經設定過了,所以這裡沒有任何問題。
Checking SELinux…
SELinux status is ‘disabled’
接著配置程式會讓我們指定Ambari的使用者,這裡直接使用預設的Amabri使用者,按回車繼續。
Customize user account for ambari-server daemon [y/n] (n)?
Adjusting ambari-server permissions and ownership…
然後配置程式又開始檢查防火牆狀態,在之前步驟已經關閉了防火牆,所以這裡也沒有問題。
Checking firewall status…
現在輪到檢查JDK,這裡輸入【3】選擇使用自己安裝的JDK。可以看到提示中有一個關於JCE Policy的警告,我們先不管它,等到後面安全章節再做解釋。
Checking JDK…
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
[3] Custom JDK
Enter choice (1): 3
WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts.
WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts.
最後是資料庫設定,這裡為了簡便選擇使用Amabri內建的Postgresql,直接回車繼續。配置程式便會開始執行初始化資料庫的元資料資訊。
Completing setup…
Configuring database…
Enter advanced database configuration [y/n] (n)?
Configuring database…
Default properties detected. Using built-in database.
Configuring ambari database…
Checking PostgreSQL…
Running initdb: This may take up to a minute.
Initializing database: [ OK ]
About to start PostgreSQL
Configuring local database…
Connecting to local database…done.
Configuring PostgreSQL…
Restarting PostgreSQL
Extracting system views…
…ambari-admin-2.4.0.1.1.jar
省略中間過程…
Adjusting ambari-server permissions and ownership…
Ambari Server ‘setup’ completed successfully.
### 啟動Ambari-Server
再次執行`ambari-server start` 命令啟動Ambari-Server,可以看到 Ambari通過Python指令碼啟動了Server服務,並將日誌檔案寫到了 /var/log/ambari-server目錄下,啟動資訊如下。
Using python /usr/bin/python
Starting ambari-server
Ambari Server running with administrator privileges.
Organizing resource files at /var/lib/ambari-server/resources…
Ambari database consistency check started…
No errors were found.
Ambari database consistency check finished
Server PID at: /var/run/ambari-server/ambari-server.pid
Server out at: /var/log/ambari-server/ambari-server.out
Server log at: /var/log/ambari-server/ambari-server.log
Waiting for server start………………..
Ambari Server ‘start’ completed successfully.
現在可以開啟瀏覽器,輸入http://伺服器ip:8080/ 來訪問Ambari。如圖3-1所示,可以看到Ambari的登入介面,輸入預設使用者名稱: admin,密碼:admin完成登入。
![](/image/94e0e731-4839-4abf-8ff9-3eb18f355db3)
5.新建叢集
步驟1 點選Launch Install Wizard按鈕進入新建叢集嚮導。
步驟2 點選上圖所示Launch Install Wizard按鈕進入新建叢集嚮導。
步驟3 設定叢集名稱,這裡我們為這個叢集取名為my_cluster。然後點選綠色下一步按鈕繼續。
步驟4 接下來開始配置HDP安裝包地址。首先選擇HDP-2.5版本,然後選擇Use Local Repository使用本地倉庫安裝的模式,最後在redhat6作業系統分類下輸入:
HDP-2.5 : http://apache伺服器地址/hdp/HDP/centos6
HDP-UTILS-1.1.0.21: http://apache伺服器地址/hdp/HDP-UTILS-1.1.0.21/repos/centos6
步驟5 全部填好之後,點選綠色下一步按鈕繼續。
配置叢集
接下來會進入叢集的配置流程,整個過程大致分成三個步驟,它們分別是:
步驟1 我們需要在Ambari-Server所部署的伺服器節點上生成公鑰和私鑰,可以通過執行如下命令實現。
ssh-keygen -t rsa
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
執行成功之後會在 /root/.ssh 目錄下生成私鑰和公鑰檔案。
步驟2 我們需要將生成的公鑰新增到叢集中所有目標伺服器節點的authorized_keys
檔案中去。(例如這裡我們就需要將公鑰新增到server1.cluster.com和server2.cluster.com)
首先,我們進入到Ambari-Server伺服器的 /root/.ssh 目錄。然後,執行如下命令進行拷貝。
新增server1.cluster.com伺服器
ssh-copy-id -i ./id_rsa.pub [email protected]
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
新增server2.cluster.com伺服器
ssh-copy-id -i ./id_rsa.pub [email protected]
The authenticity of host 'server2.cluster.com (10.0.1.62)' can't be established.
RSA key fingerprint is 6b:97:71:34:6b:97:90:46:58:8f:e5:7a:8f:d0:d1:65.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server2.cluster.com,10.0.1.62' (RSA) to the list of known hosts.
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
拷貝過程中會要求你輸入目標服務的登入密碼。
步驟3 我們需要將私鑰上傳到Ambari的管理控制檯,使用cat命令檢視私鑰檔案。
cd /root/.ssh
cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAzbFoTta2b5j3dqpWa3a5AdWzXbT+fnC87oQRyeIQF3iCkuU9
中間部分省略…
-----END RSA PRIVATE KEY-----
將上述這段字串填寫到控制檯,接下來的事情就可以交給Ambari了,如圖所示,上述步驟全部做完之後咱們點選綠色按鈕繼續下一步。
註冊伺服器(執行這一步的時候,沒有報錯,所以並沒按照下面的方法修改)
在我們的協助之下,現在Ambari可以開始註冊伺服器了。它首先會根據上一步目標主機的FQDN進行註冊,然後會在每臺伺服器上安裝Agent代理服務並配置相應的環境。
可能出現的錯誤:
1
chmod: cannot access `/var/lib/ambari-agent/data': No such file or directory
解決方式是手工建立/var/lib/ambari-agent/data目錄。
Ambari agent machine hostname (localhost.localdomain) does not match expected ambari server hostname
雖然我們已經設定過FQDN了,但Ambari的安裝指令碼只會從/etc/hosts檔案中的第一行配置讀取hostname資訊。所以我們需要再次修改hosts檔案,將第一行的localhost.localdomain替換成伺服器的FQND。
例如將localhost.localdomain替換成server1.cluster.com
127.0.0.1 localhost server1.cluster.com localhost4 localhost4.localdomain4
2
Ambari Agent host cannot reach Ambari Server 'localhost:8080'. Please check the network connectivity between the Ambari Agent host and the Ambari Server
進入Ambari-Server所在伺服器的/usr/lib/python2.6/site-packages/ambari_server目錄,修改Python指令碼setupAgent.py檔案第315行,將hostname改為server1.cluster.com。
#hostname = args[2]`
hostname = "server1.cluster.com"
在修改Python指令碼的時候切記不要使用Tabs縮排,需要使用空格對齊,否則會出現IndentationError: unindent does not match any outer indentation level錯誤。
如圖所示,等待至所有的伺服器都註冊完畢之後,點選綠色按鈕繼續下一步。
安裝服務
在伺服器註冊完畢之後,就可以開始安裝Hadoop服務了。整個過程又可以分為四個步驟。
步驟1 我們需要在服務選擇頁面選取需要安裝的服務,如圖所示。
步驟2 我們需要分配主控服務,它們是叢集服務的控制樞紐。例如HDFS的Namenode、HBase的HMaster和YARN的ResourceManager等。這裡可以根據之前填寫好的叢集服務規劃設計表格的指示來分配伺服器和服務,如圖所示。選擇完畢之後請點選綠色按鈕繼續。
注意,請將Knox Gateway服務 和Ambar-Server安裝在同一臺伺服器上。
步驟3 我們需要分配子服務和客戶端程式。它們是叢集服務的執行者們,例如HDFS的Datanode、HBase的Regionserver和YARN的NodeManager等。我們還是依照叢集服務規劃設計表格中的設計,將具體的子服務和客戶端分配到相應的伺服器,如圖所示。
分配完畢之後,咱們點選綠色按鈕繼續下一步。
步驟4 完成自定義配置,如圖所示。
在自定義設定頁面,會看到很多個警告訊息提示。不要慌張,這些警告是一些元件服務的必填配置項。這些配置通常都是設定一些管理員賬號或資料庫賬號,所以我們需要認真對待它們,例如Hive設定需要配置它的元資料資料庫資訊,如圖所示。
Hive的自定義配置,需要配置它的元資料資料庫資訊
其他元件的自定義配置與Hive類似,此處不再贅述。接下來會看到安裝元件的預覽介面,如下圖所示。
接著會開始元件的安裝過程。
當全部成功之後,我們就完成叢集的安裝了。