一、前言
目前Hadoop發行版非常多,所有這些發行版均是基於Apache Hadoop衍生出來的,之所以有這么多的版本,完全是由Apache Hadoop的開源協議決定的:任何人可以對其進行修改,並作為開源或商業產品發布/銷售。
Hortonworks這個名字源自兒童書中一只叫Horton的大象。雅虎主導Hadoop開發的副總裁,帶領二十幾個核心成員成立Hortonworks。
Hortonworks有兩款核心產品:HDP和HDF
Hortonworks沒有對產品收費,而是將這兩款產品完全開放,將核心技術放在Hadoop開源社區中,每個人都可以看到並使用這兩款產品
企業客戶自己開發難度較大的話,就會選擇合作。這就是Hortonworks的盈利模式,通過提供支持服務和后期維護,向企業級客戶收費。
支持服務主要是通過訂閱的方式,客戶需要就某些功能預定一年或者幾年的服務,提前付費。支持服務覆蓋整個周期,從最初的開發和POC階段,到中間的質量測試,直至產品交付。維護服務主要是對企業級客戶的培訓和一些咨詢業務。
二、相關文檔
Hortonworks集群的安裝過程說難不難說簡單也不簡單,中間稍有失誤基本就得重裝系統從頭來過,所以實施安裝前建議把官方的文檔都過一遍,對於后續順利完成集群安裝很有幫助。
三、集群規划
截止當前,Hortonworks官方最新版本是Ambari 2.6.0.0、HDP 2.6.3,不過從之前我曾多次嘗試安裝Ambari 2.6.0.0+HDP 2.6.3失敗的情況來看,基本確定最新版本存在BUG會導致無法順利完成安裝,初步定位BUG應該在包名稱不匹配上面。
介於上述情況,我這里選擇Ambari 2.5.2.0+HDP 2.6.2的組合經行安裝。

操作系統我這里選擇CentOS 6.9(2.6.2的支持列表只到6.8,不過2.6.3的支持列表已經更新到6.9),JDK使用的Oracle 1.8,其余組件都是系統自帶或者yum安裝。
寫這篇的時候正好有個生產集群需要部署,故直接使用生產集群作為例子,如果僅僅是想安裝測試集群的話可以選擇1頭節點4數據節點的規划。
| 頭結點 | 備用頭結點 | 數據節點1 | 數據節點2 | 數據節點3 | |
| namenode | 是 | 是 | |||
| datanode | 是 | 是 | 是 | ||
| resourcemanager | 是 | 是 | |||
| journalnode | 是 | 是 | |||
| zookeeper | 是 | 是 | 是 |
四、系統安裝
除了需要注意系統語言和磁盤格式,其它注意事項官方文檔里面都有,自行查閱。
系統語言必須是en_US,否則添加節點安裝必備環境的時候就會卡在下圖的步驟。
頭結點的磁盤需要使用RAID 10,數據節點的磁盤不需要使用RAID,如果部分服務器走了RAID卡無法關閉,那么可以為每個磁盤做一個RAID 0。
磁盤格式官方建議使用ext3而不建議使用ext4,但是從各位運Hadoop維大佬實際運維經驗來看,使用ext4比ext3有利,具體怎么抉擇各位仁者見仁智者見智。
五、系統級別的基礎配置
為了后續能順利安裝Hortonworks集群安裝,完系統之后需要進行諸多系統層面的配置和調整,想要了解細節參見官方文檔
我這里提供一個基於各方資料匯集而成的自動配置腳本,針對Centos 6.9 Base Server安裝方式。
#!/usr/bin/env bash SetConfig() { #主機名 input_hostname=$1 #切換默認軟件源為阿里雲 tar -zcvf /etc/yum.repos.d/${starDate}_bak.tgz /etc/yum.repos.d/*.repo rm -rf /etc/yum.repos.d/*.repo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo rpm --import https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6 yum makecache #安裝YUM源優先級插件 yum install -y yum-priorities echo "[info] update yum repo end." #關閉IPV6 echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf echo "[info] disabled ipv6 end." #關閉桌面版網絡管理程序 service NetworkManager stop chkconfig NetworkManager off echo "[info] disabled NetworkManager end." #修改ulimit echo "* soft nofile 10000" >> /etc/security/limits.conf echo "* hard nofile 32832" >> /etc/security/limits.conf echo "* soft nproc 10000" >> /etc/security/limits.conf echo "* hard nproc 32832" >> /etc/security/limits.conf sed -i 's/1024/10000/g' /etc/security/limits.d/90-nproc.conf echo "* hard nproc 32832" >> /etc/security/limits.d/90-nproc.conf echo "[info] set ulimit end." #關閉iptables chkconfig iptables off /etc/init.d/iptables stop chkconfig ip6tables off /etc/init.d/ip6tables stop echo "[info] disabled iptables end." #關閉 SELinux setenforce 0 sed -i "/^SELINUX=/ c SELINUX=disabled" /etc/selinux/config echo "[info] disabled SELinux end." #關閉 PackageKit sed -i "/^enabled=/ c enabled=0" /etc/yum/pluginconf.d/refresh-packagekit.conf echo "[info] disabled PackageKit end." #關閉 HUP #sed -i "s/quiet/quiet transparent_hugepage=never/" /etc/grub.conf echo "" >> /etc/rc.local echo "echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag" >> /etc/rc.local echo "echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled" >> /etc/rc.local echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local echo "[info] disabled HUP end." #打開從節點時間同步(所有的主機都需要打開) sed -i "s/0.centos.pool.ntp.org iburst/time.pool.aliyun.com prefer/" /etc/ntp.conf chkconfig ntpd on service ntpd start echo "[info] enabled ntpd end." #設置net.core.somaxconn和vm.swappiness參數 echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf echo "vm.swappiness = 0" >> /etc/sysctl.conf #修改節點HostName名稱 echo "......InputHostName:${input_hostname}......" hostname ${input_hostname} sed -i "/^HOSTNAME=/ c HOSTNAME=${input_hostname}" /etc/sysconfig/network #寫入所有節點HostName到hosts文件 sed -i "1i\節點1IP地址 節點1hostname" /etc/hosts sed -i "1i\節點2IP地址 節點2hostname" /etc/hosts sed -i "1i\節點3IP地址 節點3hostname" /etc/hosts sed -i "1i\節點4IP地址 節點4hostname" /etc/hosts sed -i "1i\節點5IP地址 節點5hostname" /etc/hosts } #沒有參數 if [ x$1 == x ] ; then echo "[error] please enter the parameters." exit -1 fi SetConfig $1 reboot
使用方法:./666.sh 當前節點hostname
六、配置SSH免密登陸
通過Ambari安裝各節點的時候,需要讓運行Ambari的節點能SSH免驗證登陸到各節點(包括它本身)。
#登錄頭節點利用以下命令生成RSA密鑰 ssh-keygen -t rsa #登錄數據節點從頭節點復制秘鑰,並繼續執行后續操作(頭節點也需要執行此步驟) mkdir /root/.ssh scp root@頭結點hostname:/root/.ssh/id_rsa.pub /root/.ssh/ cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys #啟動公鑰登錄配置 sed -i "s/#PubkeyAuthentication/PubkeyAuthentication/" /etc/ssh/sshd_config sed -i "s/#AuthorizedKeysFile/AuthorizedKeysFile/" /etc/ssh/sshd_config service sshd restart
七、搭建本地源
由於部署Ambari+HDP過程中需要安裝大量組件,而且體積都比較大,因此選擇在頭節點搭建源服務器。
安裝Apache
yum install -y httpd
service httpd start
chkconfig httpd on
手動下載下面幾個壓縮包到 /var/www/html/ 目錄:
http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.5.2.0/ambari-2.5.2.0-centos6.tar.gz
http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.6.2.14/HDP-2.6.2.14-centos6-rpm.tar.gz
http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos6/HDP-UTILS-1.1.0.21-centos6.tar.gz
解壓縮
cd /var/www/html/
tar -zxvf ambari-2.5.2.0-centos6.tar.gz
tar -zxvf HDP-2.6.2.14-centos6-rpm.tar.gz
mkdir HDP-UTILS-1.1.0.21
tar -zxvf HDP-UTILS-1.1.0.21-centos6.tar.gz -C HDP-UTILS-1.1.0.21
配置repo源,把ambari.repo里面的源地址改成實際地址
cp /var/www/html/ambari/centos6/ambari.repo /etc/yum.repos.d/
vi /etc/yum.repos.d/ambari.repo
配置完成之后運行 yum repolist 檢查一下
准備工作到此結束,下一步就是安裝Ambari+HDP了。
相關文章
Hadoop 發行版本 Hortonworks 安裝詳解(一) 准備工作
Hadoop 發行版本 Hortonworks 安裝詳解(二) 安裝Ambari
