一、平台環境
- 操作系統:CentOS release 6.5 (Final)
- Java版本:jdk1.8.0_60
- Ambari版本:2.2.1.0
- HDP版本:2.4.0
- MySQL版本:MySQL-5.6.25-1
- 用戶權限:cent,sudo無密碼
- 主機IP:192.168.234.145
- 安裝包路徑:~/packages
二、環境准備
1、 增加系統打開文件數和進程數
在每台服務器命令行執行:ulimit -n
顯示當前可以打開的最大文件數
sudo vim /etc/security/limits.conf
在文件中添加
* - nofile 655350
* - nproc 655350
然后保存
斷開服務器重新連接,再次執行:ulimit -n
顯示: 655350
2、永久關閉linux swap
執行:cat /proc/sys/vm/swappiness
結果為0表示已經關閉,否則執行
sudo sysctl -w vm.swappiness=0
sudo vi /etc/sysctl.conf
在最后添加: vm.swappiness=0
然后執行: sudo sysctl -p /etc/sysctl.conf
可以看到剛才設置的vm.swappiness=0,設置成功
3、永久關閉防火牆
執行關閉命令:sudo service iptables stop
執行關閉開機啟動命令:sudo chkconfig iptables off
查看防火牆當前狀態:sudo service iptables status
4、永久關閉selinux
執行立即關閉命令:setenforce 0
查看狀態:getenforce
顯示:Permissive
表示已經關閉
永久關閉:sudo vim /etc/selinux/config
將SELINUX=enforcing改成SELINUX=disabled
保存,然后需要重啟系統
查看selinux狀態,執行:sestatus -v
顯示:SELinux status: disabled
表示已經關閉。
5、取消CPU節能運行模式
6、修改主機名
查看當前主機名:hostname
修改當前主機名:hostname 主機名
斷開重連后查看主機名:hostname
將主機名寫入/etc/sysconfig/network: vi /etc/sysconfig/network
修改:HOSTNAME=主機名
然后保存。
7、關閉THP
在/etc/rc.local文件中添加
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
fi
然后重新啟動服務器
8、配置/etc/hosts
在每台服務器的/etc/hosts進行配置,配置方式為: IP hostname
格式,示例如下
192.168.4.202 hostname1
192.168.4.203 hostname2
9、配置互通無密碼連接
執行: ssh-keygen
然后一路回車
cd ~/.ssh
cat id_rsa.pub
將需要免密碼登錄到其他服務器的公鑰復制,然后在每台要連接到的機器上執行
cd ~/.ssh
vim authorized_keys
將復制好的公鑰粘貼上去,保存。然后執行: chmod 600 authorized_keys
然后執行:ssh 主機名
然后按照提示輸入yes,所有的服務器都做一遍。
10、配置啟動ntp服務
執行
sudo yum install ntp
sudo chkconfig ntpd on
sudo service ntpd start
結束
三、創建本地源
1、 下載源文件
Ambari:http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.2.1.0/ambari-2.2.1.0-centos6.tar.gz
HDP:http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.4.0.0/HDP-2.4.0.0-centos6-rpm.tar.gz
HDP_UTILS:http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6/HDP-UTILS-1.1.0.20-centos6.tar.gz
JDK:http://download.oracle.com/otn/java/jdk/8u60-b27/jdk-8u60-linux-x64.tar.gz
http://public-repo-1.hortonworks.com/ARTIFACTS/jdk-8u60-linux-x64.tar.gz
JCE:http://public-repo-1.hortonworks.com/ARTIFACTS/jce_policy-8.zip
2、下載源配置文件
Ambari源:
sudo wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.2.1.1/ambari.repo -O /etc/yum.repos.d/ambari.repo
HDP源:
sudo wget -nv http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.4.0.0/hdp.repo -O /etc/yum.repos.d/hdp.repo
3、創建本地源服務
1)安裝httpd
sudo yum install httpd
sudo chkconfig httpd on
sudo service httpd start
2)創建源
sudo yum install yum-utils createrepo
sudo mkdir -p /var/www/html/
切換到安裝包目錄
sudo tar xzvf ambari-2.2.1.0-centos6.tar.gz -C /var/www/html/
sudo tar xzvf HDP-2.4.0.0-centos6-rpm.tar.gz -C /var/www/html/
sudo tar xzvf HDP-UTILS-1.1.0.19-centos6.tar.gz -C /var/www/html/
sudo mkdir -p /var/www/html/java
sudo mv jdk-8u60-linux-x64.gz /var/www/html/java/
sudo mv jce_policy-8.zip /var/www/html/java/
3)重啟httpd服務
sudo service httpd restart
4)配置repos文件
sudo vim /etc/yum.repos.d/ambari.repo
修改如下:
#VERSION_NUMBER=2.2.1.1-161
baseurl=http://192.168.234.145/AMBARI-2.2.1.0/centos6/2.2.1.0-161
gpgkey=http://192.168.234.145/AMBARI-2.2.1.0/centos6/2.2.1.0-161/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
保存。
sudo vim /etc/yum.repos.d/hdp.repo
[HDP-2.4.0.0]下修改如下:
#VERSION_NUMBER=2.4.0.0-161
baseurl=http://192.168.234.145/HDP/centos6/2.x/updates/2.4.0.0
gpgkey=http://192.168.234.145/HDP/centos6/2.x/updates/2.4.0.0/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
[HDP-UTILS-1.1.0.20]下修改如下:
baseurl=http://192.168.234.145/HDP-UTILS-1.1.0.19/repos/centos6
gpgkey=http://192.168.234.145/HDP-UTILS-1.1.0.19/repos/centos6/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
保存。
四、MySQL安裝
1、下載安裝包
wget http://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-5.6.30-1.linux_glibc2.5.x86_64.rpm-bundle.tar -P ~/packages
2、安裝過程
cd ~/packages
tar xvf MySQL-5.6.30-1.linux_glibc2.5.x86_64.rpm-bundle.tar
sudo rpm -qa | grep mysql
sudo rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
sudo yum search libaio
sudo yum install libaio-devel.x86_64
sudo rpm -ivh MySQL-client-5.6.25-1.linux_glibc2.5.x86_64.rpm
sudo rpm -ivh MySQL-devel-5.6.25-1.linux_glibc2.5.x86_64.rpm
sudo rpm -ivh MySQL-server-5.6.25-1.linux_glibc2.5.x86_64.rpm
3、配置過程(配置文件/etc/my.cnf)
[client]
default-character-set=utf8
[mysqld]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#default-character-set=utf8
character_set_server=utf8
init_connect='SET NAMES utf8'
innodb_buffer_pool_size=64M
max_connections=800
wait_timeout=86400
[mysqld_safe]
default-character-set=utf8
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
4、初始化設置
sudo mkdir -p /data/mysql
sudo chown mysql:mysql /data/mysql
sudo mkdir -p /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql
sudo mkdir -p /var/log/mysql
sudo chown mysql:mysql /var/log/mysql
sudo mkdir -p /var/run/mysql
sudo chown mysql:mysql /var/run/mysql
sudo mysql_install_db
sudo service mysql start
sudo /usr/bin/mysql_secure_installation
Set root password? [Y/n]Y
輸入兩次密碼
New password:
Re-enter new password:
Remove anonymous users? [Y/n]Y
Disallow root login remotely? [Y/n]n
Remove test database and access to it? [Y/n]Y
Reload privilege tables now? [Y/n]Y
5、可能問題
執行: sudo /usr/bin/mysql_secure_installation
報錯
Enter current password for root (enter for none):
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
這是由於: /var/lib/mysql/mysql.sock
在該命令文件里寫死了,可以手工設置
mysql -uroot
mysql> set password=PASSWORD("sdfsad#23234$");
mysql> flush privileges;
五、Ambari安裝部署(在ambari-server服務器上部署)
1、安裝ambari-server
sudo yum search ambari-server
sudo yum install ambari-server
2、 配置java發布源(默認網上下載地址)
sudo vim /etc/ambari-server/conf/ambari.properties
jdk1.8.url=http://192.168.234.145/java/jdk-8u60-linux-x64.tar.gz
jdk1.8.jcpol-url=http://192.168.234.145/java/jce_policy-8.zip
3、配置ambari-server
sudo ambari-server setup
Customize user account for ambari-server daemon [y/n] (n)?y
Enter user account for ambari-server daemon (root):ambari
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):1
Do you accept the Oracle Binary Code License Agreement [y/n] (y)? y
Enter advanced database configuration [y/n] (n)?y
==============================================================================
Choose one of the following options:
[1] - PostgreSQL (Embedded)
[2] - Oracle
[3] - MySQL
[4] - PostgreSQL
[5] - Microsoft SQL Server (Tech Preview)
[6] - SQL Anywhere
==============================================================================
Enter choice (1):3
Hostname (localhost): cent00
Port (3306): 3306
Database name (ambari): ambari
Username (ambari): ambari
Enter Database Password (bigdata):
Re-enter password:
WARNING: Before starting Ambari Server, you must copy the MySQL JDBC driver JAR file to /usr/share/java.
新開窗口,單獨執行:
sudo mkdir -p /usr/share/java
cd /usr/share/java
sudo rz -y
添加mysql-connector-java-5.1.35-bin.jar
返回點擊Enter繼續
WARNING: Before starting Ambari Server, you must run the following DDL against the database to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
新開窗口,執行
mysql -uroot -p123456
mysql>create database ambari;
mysql>grant all privileges on ambari.* to ambari@cent00 identified by '123456';
mysql>flush privileges;
mysql>use ambari;
mysql>source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;
返回原窗口
Proceed with configuring remote database connection properties [y/n] (y)? y
若返回: Ambari Server 'setup' completed successfully.
安裝成功
添加MySQ連接器jdbc:cd /usr/lib/ambari-server
上傳jar包mysql-connector-java-5.1.35-bin.jar
4、啟動ambari-server
sudo service ambari-server start
返回:Ambari Server 'start' completed successfully.
啟動成功
5、修改ambari-server訪問端口
在部署server的服務器上執行:sudo vim /etc/ambari-server/conf/ambari.properties
在文件末尾添加:client.api.port=端口號
保存,重啟生效。
六、配置部分
1)、登錄server,登錄地址:http://192.168.234.145:8080/#/login
2)、初始用戶名密碼:admin/admin
3)、進入主頁面:

4)、點擊Users,可以進入用戶管理頁面,此處可以添加用戶或進行密碼修改。
安裝過程
點擊launch Install Wizard,進入如下頁面

填寫集群名稱並點擊Next
選擇安裝包
進入如下頁面:

選擇HDP2.4,高級選項,展開如下頁面:

配置HDP和HDP-UTILS本地源路徑,然后Next
配置連接服務器
進入如下頁面:

添加服務器列表ubt202-ubt206,下載ubt202的/home/Ubuntu/.ssh/id_rsa文件到本地,然后點擊“選擇文件”上傳,填寫登錄名,然后點擊“Register and Confirm”,出現如下彈框:

點擊“OK”,出現以下對話框

我們不管他,點“OK”繼續。跳轉到:

當狀態變為如下:

先點擊“Click here to see the warnings”看警告是否要緊。如果不要緊點擊“Next”繼續。如果有警告未處理,會彈窗:

需要處理則點“Cancel”,否則“OK”,這里我們選擇處理警告。
警告處理
關閉THP,執行如下命令:
vi /etc/init.d/disable-transparent-hugepages
復制如下內容到該文件並保存:
#!/bin/sh
### BEGIN INIT INFO
# Provides: disable-transparent-hugepages
# Required-Start:$local_fs
# Required-Stop:
# X-Start-Before:mongod mongodb-mms-automation-agent
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Disable Linux transparent huge pages
# Description: Disable Linux transparent huge pages, to improve
#database performance.
### END INIT INFO
case $1 in
start)
if [ -d /sys/kernel/mm/transparent_hugepage ]; then
thp_path=/sys/kernel/mm/transparent_hugepage
elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
thp_path=/sys/kernel/mm/redhat_transparent_hugepage
else
return 0
fi
echo 'never' > ${thp_path}/enabled
echo 'never' > ${thp_path}/defrag
unset thp_path
;;
esac
然后執行命令:
sudo chmod 755 /etc/init.d/disable-transparent-hugepages
sudo update-rc.d disable-transparent-hugepages defaults
然后重啟服務器(這部一定要提前做)
之后從頁面登錄開始把前面做的部分重新做一遍
卸載多余安裝包使用命令,具體如下圖所示:

圖中黃色三角形的部分為有警告,點開可以看到詳情。詳情部分Package對應的列為安裝包,后面host表示當前有多少台機器安裝了該安裝包,鼠標懸浮可以看到具體的服務器。然后到對應服務器上執行命令:
sudo yum remove 安裝包
然后點擊“Return Checks”。需要注意的是,如果對服務用途不了解,千萬不要輕易清理,否則可能導致系統異常。上圖中除了pure-ftpd、pure-ftpd-common、lrzsz服務外,其他基本都與系統有關。尤其zlibc服務一旦卸載,所有的ambari-agent會全部宕掉,導致部署無法繼續。
處理ntp服務警告,點開警告顯示:

機器上都沒有安裝ntp服務.
在線安裝:sudo yum install ntp
啟動:sudo service ntp start
關閉:sudo service ntp stop
點擊“close”關閉警告窗口,然后點擊“Next”繼續
服務安裝
選擇服務,進入如下頁面:


然后點擊“Next”繼續。這時會提示所選服務對Pig和Tez有依賴,要求添加,如下圖所示:

這時點擊“OK”即可,然后進入下一頁,為各個節點分配不同角色,如下圖:


為各服務器分配不同角色及服務,然后點擊“Next”繼續。
進入slaves和clients分配頁面:

選定個角色,點擊“Next”繼續。進入如下頁面:

圖中紅圈部分表示有異常,需要手工處理。

登錄MySQL庫,創建庫並分配權限,如下:

填充上圖中的Database Password,並點擊“Test Connection”
鏈接測試結束后,點擊最下方“Next”會有報錯如下:

打印集群配置信息如下:


然后點擊“Deploy”,進入安裝進度頁面,系統自動安裝部署剛才選擇的服務,具體顯示如下:

安裝狀態並不正常,有5處警告。接下來處理警告,點開warings entered查看:

紅色嘆號的地方是報異常的服務,點擊查看異常原因,如下:

在當前頁面無法處理告警異常,我們可以點擊OK關閉,回到“Install,Start and Test”頁面,點擊“Next”繼續。進入“Summary”頁面:

此處顯示有5處告警,且服務啟動失敗。異常可以之后再調,點擊“Complete”完成安裝。
異常解決
完成安裝過程后,進入HDP管理界面,如下圖所示:

圖中紅色部分均包含異常,下面依次解決各異常:
HDFS異常
點擊HDFS,進入頁面:

在圖中NameNode、SNameNode、DataNode都有異常。
首先點擊NameNode,進入界面:

選擇NameNode下的start,點擊啟動,彈出確認框,點擊“OK”,進入界面:

當啟動失敗,會顯示進度條為紅色。此時點擊三次跳轉即可進入啟動日志,如下:

紅色箭頭部分標注的就是錯誤位置。通過跟蹤,發現是由於我們設置的數據庫密碼是數字“123456”,正常情況下是字符串正常,此處被解析成int型報錯,解決方法,打開文件/var/lib/ambari-agent/cache/stacks/HDP/2.0.6/hooks/before-START/scripts/params.py,定位141行找到如下代碼塊:

統一改成:

保存。然后重新啟動NameNode成功。
同理,SNameNode、DataNode節點的服務器也都是同樣的問題,對應改一下,重新啟動就OK了。返回Services、HDFS界面如下:

紅箭頭處查看一下,因為問題剛剛處理完,有一些信息尚未刷新過來,會有一點延遲,延遲過后狀態顯示如下:

狀態正常,HDFS問題解決。
MapReduce2異常
在Services頁面點擊MapReduce2,進入頁面:

啟動“History Server”,啟動正常。

查看右上角“alters”,半分鍾左右自動變為正常。
YARN異常
在Services頁面點擊MapReduce2,進入頁面:

啟動各服務,查看“alerts”,結果顯示如下:

此為ResourceManager的Web訪問端口連接不了。查看ubt202上的ResourceManager日志,報錯:

Zookeeper異常,可以先解決完,再回來看ResourceManager。結果ResourceManager狀態也正常了。
Hive異常
點擊Services頁面的Hive,進入頁面:

啟動服務,啟動Hive MetaStore如下:

啟動結果顯示失敗,查看日志:

將文件mysql-connector-java-5.1.35-bin.jar上傳到ubt202服務器的/var/lib/ambari-server/resources目錄,重命名為mysql-jdbc-driver.jar,然后重新啟動Hive Metastore,成功。
其他兩個服務直接啟動后,Hive正常。
Hbase異常
點擊Services頁面進入Hbase服務:

啟動各服務之后Hbase狀態恢復正常,如下:

ZooKeeper異常
點擊Services頁面進入Zookeeper服務:

啟動完畢后狀態如下:

Storm異常
點擊Services頁面進入Storm服務

啟動各服務:

Storm恢復正常。
Ambari Metrics異常
點擊Services頁面進入Ambari Metrics服務

啟動各服務
Kafka異常
點擊Services頁面進入Kafka服務

啟動Kafka Broker,問題解決:

Spark異常
點擊Services頁面進入Spark服務

啟動各服務:

Spark恢復正常。
一會我們再依次解決。先配置HA,點擊“Services”、“HDFS”“Service Actions”、“Enable NameNode HA”

配置高可用HA
配置HDFS
點擊“Services”、“HDFS”“Service Actions”、“Enable NameNode HA”,進入如下頁面:

添加服務ID,點擊“Next”,繼續

選擇角色,點擊繼續

使用默認配置,然后繼續

按照說明執行相關命令,Next會由不可用變為可用狀態,點擊繼續

各組件字段配置完成,點擊繼續

按照說明執行命令,Next變為可用狀態,點擊繼續

等待執行完畢,點擊繼續

按說明執行命令,點擊繼續,彈窗

點擊“OK”確認,進入HA Setup界面

等待完成。點擊“Done”結束
配置YARN
點擊“Services”、“YARN”“Service Actions”、“Enable ResourceManager HA”,進入如下頁面:

點擊Next繼續,進入頁面

當前NameNode不可更改,選擇一台機器做備份節點,點擊繼續:

使用默認配置,點擊繼續:

待服務全部啟動,完成。
