Hortonworks Ambari 2.5 部署及管理指南

EREN
erens-tech-book
Published in
21 min readSep 10, 2017

※ 根據每個作業系統的不同,此文章的安裝步驟可能會有不同,如果文章內沒有你的作業系統,請參考官方文件。

官方文件(英):Apache Ambari 2.5.1.0 Installation

什麼是 HDInsight、Hadoop 技術堆疊和叢集? — Azure(繁中):https://docs.microsoft.com/zh-tw/azure/hdinsight/hdinsight-hadoop-manage-ambari

什麼是 Ambari?

Ambari 是由 Hortonworks 開發並贈予 Apache 的堆疊式大數據叢集管理工具。它主要針對叢集運行維護及管理人員,透過 Ambari 的 Web UI,管理員能在網頁介面上實現叢集的部署、啟動、監控、檢視及關閉等操作。

Ambari 採用 master/slave 架構,主節點執行 master 程序 AmbariServer,從節點執行 slave 程序 AmbariAgent。執行時,AmbariAgent 負責監控、管理本機上的元件,AmbariServer 負責收集、整理並顯示叢集中所有 AmbariAgent 發送的心跳資訊。

- 不只是Hadoop2.0:完整Ecosystem雲端全介紹,ISBN:9789863794332

Hortonworks Data Platform (HDP) 2.6 生態系

https://hortonworks.com/products/data-center/hdp/

Chapter 1. 準備開始

確認堆疊兼容性及系統最小要求

https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.1/bk_support-matrices/content/ch01.html

軟體要求

  • yum and rpm (RHEL/CentOS/Oracle Linux)
  • zypper and php_curl (SLES)
  • apt (Debian/Ubuntu)
  • scp, curl, unzip, tar, and wget
  • OpenSSL (v1.01, build 16 or later)
  • Python
  • For SLES 11: Python 2.6.x
  • For SLES 12: Python 2.7.x
  • For CentOS 7, Ubuntu 14, Ubuntu 16, and Debian 7: Python 2.7.x

JDK 版本要求

https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.1.0/bk_ambari-administration/content/ch_changing_the_jdk_version_on_an_existing_cluster.html

請以 root 身分登入 master 主機

安裝 JDK 8

# rpm -ivh /tmp/jdk-8u144-linux-x64.rpm

於 Master 主機上建立軟連結

# ln -s /usr/java/jdk1.8.0_144 /usr/java/java

於 Master 主機設定環境變數

# vi /etc/profile---------- 開啟檔案後寫下以下指令 ----------export JAVA_HOME=/usr/java/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin
-----------------------------------------

更新 /etc/profile 並檢查

# source /etc/profile# java -version

其他

檢查最大開啟行程數量

建議的最大開啟行程數量為10000或更多。要檢查設置的當前值,請在每個主機上執行以下的 shell:

# ulimit -Sn# ulimit -Hn

如果輸出不大於10000,請將其設置為合適的默認值:

# ulimit -n 10000

儲存的基本安裝目錄

  • NameNode data
  • DataNodes data
  • Secondary NameNode data
  • Oozie data
  • YARN data
  • ZooKeeper data, if you install ZooKeeper
  • Various log, pid, and db files, depending on your install type

設置不需密碼的 SSH

在 Master 生成一組ssh公私鑰,將 SSH 公鑰 (id_rsa.pub) 複製到目標主機的 root 用戶

# ssh-keygen

進入 ~/.ssh 目錄底下,會找到下列兩個公私鑰文件:

  • 公鑰:id_rsa.pub
  • 私鑰:id_rsa
  • 添加 Master 的 SSH 公鑰給目標主機的 authorized_keys
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

根據 SSH 版本,可能需要在目標主機上的 .ssh 目錄(to 700)和該目錄(to 600)中的 authorized_keys 文件中設置權限

# chmod 700 ~/.ssh# chmod 600 ~/.ssh/authorized_keys

確認 SSH 可以連線到叢集中的每個主機,且不需輸入密碼

## ssh root@<remote.target.host>## <remote.target.host> 表示每個主機的 hostname## Are you sure you want to continue connecting (yes/no)? Yes
  • 配置到其他叢集
# scp ~/.ssh/authorized_keys root@slaver1:/root/.ssh/ 
# scp ~/.ssh/authorized_keys root@slaver2:/root/.ssh/

設立服務用戶帳戶

每個服務都需要一個用戶帳戶。Ambari 叢集安裝嚮導將創建新的並保留任何現有的用戶帳戶,並在配置 Hadoop 服務時使用這些帳戶。服務用戶帳戶創建適用於本地操作系統和 LDAP / AD 帳戶上的用戶帳戶。

在每個叢集的瀏覽器主機上啟用 NTP 同步時間

叢集間的時間要保持一致,稍微的不同步是可以容忍的。如果遇到一些奇怪的故障,可以檢查叢集的系統時間是否正確。

  • RHEL/CentOS/Oracle 6
# yum install -y ntp# chkconfig ntpd on# service ntpd start
  • RHEL/CentOS/Oracle 7
# yum install -y ntp# systemctl enable ntpd# service ntpd start
  • Ubuntu
# apt-get install ntp# update-rc.d ntp defaults# service ntpd start

檢查 DNS 和 NSCD

  • 必須為系統中的所有主機配置正向和反向 DNS
  • 編輯 /etc/hosts (包含每個主機的 IP地址和 FQDN hostname)
  • 1.2.3.4 <fully.qualified.domain.name>
# vi /etc/hosts------------ 開啟檔案後寫下以下指令 ------------## 建議不要刪除以下兩行,可能導致網路功能的程序失敗127.0.0.1 localhost.localdomain localhost:: 1 localhost6.localdomain6 localhost6192.168.88.134 master192.168.88.135 slaver1192.168.88.136 slaver2--------------------------------------------

Hadoop 嚴重依賴於 DNS,因此在正常操作期間執行許多 DNS 查找。為了減少 DNS 基礎設施的負載,強烈建議在運行 Linux 的叢集節點上使用名稱服務緩存守護程序 (NSCD)。此守護程序將緩存主機、用戶和組查找,並提供更好的分辨率性能,減少 DNS 基礎架構的負載。

設置 hostname (驗證 FQDN 完整網域名稱)

  • hostname <fully.qualified.domain.name>
# hostname master# hostname -f

編輯網絡配置文件

# vi /etc/sysconfig/network----------- 開啟檔案後寫下以下指令 -----------NETWORKING = YES# HOSTNAME = <fully.qualified.domain.name>HOSTNAME = master------------------------------------------

關閉 iptables 防火牆

  • RHEL/CentOS/Oracle Linux 6
# chkconfig iptables off# /etc/init.d/iptables stop# service iptables stop
  • RHEL/CentOS/Oracle Linux 7
# systemctl disable firewalld# service firewalld stop
  • Ubuntu
# sudo ufw disable# sudo iptables -X# sudo iptables -t nat -F# sudo iptables -t nat -X# sudo iptables -t mangle -F# sudo iptables -t mangle -X# sudo iptables -P INPUT ACCEPT# sudo iptables -P FORWARD ACCEPT# sudo iptables -P OUTPUT ACCEPT

可以在安裝完成後重新啟動 iptables。如果環境中的安全協議阻止禁用 iptables,則可以啟用 iptables,如果所有必要的 ports 都可用。

禁用 SELinux 和 PackageKit,並檢查 umask 值

  • 在每個叢集進用 SELlinux
# setenforce 0
  • 永久禁用 SELinux
# vi /etc/selinux/config----- 開啟檔案後寫下以下指令 -----SELINUX=disabled------------------------------
  • 在安裝 PackageKit 的 CentOS / RHEL 主機上編輯
# vi /etc/yum/pluginconf.d/refresh-packagekit.conf----- 開啟檔案後寫下以下指令 -----enabled=0------------------------------

默認情況下,Debian、SLES 或 Ubuntu 沒有啟用 PackageKit。

UMASK (檔案預設權限)

http://linux.vbird.org/linux_basic/0220filemanager.php#umask

大多數 Linux 發行版將 022 設置為默認 umask 值。0 umask 值為新文件或文件夾授予 755 的權限。027 授予 750 的權限。

Ambari、HDP 和 HDF 支持 umask 值為022 (功能上相當 0022)、027 (功能上相當 0027),必須在所有主機上設置這些值。

# umask 0022## 為所有交互式用戶永久更改umask# echo umask 0022 >> /etc/profile
  • HDP 建議關閉 Transparent Huge Pages,於 Master 主機上關閉
# echo never > /sys/kernel/mm/transparent_hugepage/enabled# echo never > /sys/kernel/mm/transparent_hugepage/defrag

Chapter 2. 使用本地資源

若是在沒有網路的環境下安裝 Ambari,請參考此文件:https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.1.0/bk_ambari-installation/content/ch_using-local-repos.html

Chapter 3. 使用公開資源

  • Ambari Repositories

https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.1.0/bk_ambari-installation/content/ambari_repositories.html

  • HDP 2.6 Repositories

https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.1.0/bk_ambari-installation/content/hdp_26_repositories.html

Chapter 4. 開始安裝 Ambari

  1. Download the Ambari repository
  2. Installing the Ambari Server
  3. Set Up the Ambari Server
  • 在 Master 上執行,並由 root 登入
  • 不要修改 ambari.repo 文件名。在 Agent 註冊期間,該文件可在 Ambari Server 主機上使用
  • 添加 CentOS 7 資源庫
# wget -nv http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.5.1.0/ambari.repo -O /etc/yum.repos.d/ambari.repo

其他作業系統請參考:https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.1.0/bk_ambari-installation/content/download_the_ambari_repo.html

  • 確認資源庫是否配置
# yum repolist
  • 安裝 Ambari Server
# yum install ambari-server
  • 調整 Ambari 記憶體(可選)
# vi /var/lib/ambari-server/ambari-env.sh---------------------- 開啟檔案後寫下以下指令 ----------------------AMBARI_JVM_ARGS -Xmx4096m -XX:PermSize=256m -XX:MaxPermSize=256m----------------------------------------------------------------
  • 設置 Ambari Server

https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.1.0/bk_ambari-installation/content/set_up_the_ambari_server.html

https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.1.0/bk_ambari-installation/content/setup_options.html

# ambari-server setup
  • 查看 log
# tail -F /var/log/yum.log
  • 啟動 Ambari Server
# ambari-server start

Chapter 5. 使用管理組件

https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.1.0/bk_ambari-installation/content/ch_working-with-mpacks.html

  1. Install the management pack.
  2. Update the repository URL in Ambari.
  3. Start the Ambari Server.
  4. Launch the Ambari Installation Wizard.

Chapter 6. 安裝、配置和部署叢集

啟動並登入 Ambari Server

# ambari-server start# ambari-server status# ambari-server stop
  • 在 Ambari Server 啟動時,Ambari 會啟動資料庫一致性檢查來檢查問題。如果發現任何問題,Ambari Server 會中止並顯示以下訊息:DB configs consistency check failed。
  • Ambari將有關數據庫一致性檢查結果的更多詳細信息寫入該 /var/log/ambari-server/ambari-server-check-database.log 文件。
  • 可以通過以下選項來跳過檢查,強制啟動 Ambari Server:
# ambari-server start — skip-database-check
  • 如果有資料庫問題,選擇跳過檢查,並在更正資料庫一致性問題之前不要對叢集群拓撲進行任何更改或執行升級。請聯繫 Hortonworks 部門並提供 ambari-server-check-database.log 幫助的輸出。

開啟瀏覽器進入網頁 http://<your.ambari.server>:8080

  • 預設帳號 / 密碼:admin / admin
  • admin 登入後,在 Web UI 上找到 Group Managment + User 點擊 Users 新增一個用戶,並使用此用戶重新登入

Launch Install Wizard

  • Name Your Cluster(叢集名稱不支援特殊符號、空格等)
  • Select Version
  • Install Options

Target Hosts:輸入 hostname,假如有多台叢集,一行輸入一台 hostname,也可以使用 host[01–10].domain 表示多台叢集。

Host Registration Information:選擇 ~/.ssh 目錄下的私鑰 id_rsa

或者,你也可以使用 Ambari Agent,在每台機器執行以下指令:

# yum install ambari-agent# vi /etc/ambari-agent/conf/ambari-agent.ini----------- 開啟檔案後寫下以下指令 -----------[server]
hostname=<Your Ambari Server Hostname>
url_port=8440
secured_url_port=8441
------------------------------------------# ambari-agent start
  • Confirm Hosts
  • Choose Services

從 Ambari 2.5 開始,SmartSense 的部署是強制性的。

Apache Spark Component Guide

Apache Storm Component Guide

Apache Ambari Apache Storm Kerberos Configuration

Apache Kafka Component Guide

Apache Ambari Apache Kafka Kerberos Configuration

Installing and Configuring Apache Atlas

Installing Ranger Using Ambari

Installing Hue

Apache Solr Search Installation

Installing Ambari Log Search (Technical Preview)

Installing Druid (Technical Preview)

  • Assign Masters
  • Assign Slaves and Clients
  • Customize Services

根據安裝的項目,逐一修改含紅色警告的部分,多數警告都是要求設置密碼。

  • Review
  • Install, Start and Test
  • Complete

Chapter 7. Ambari 故障排除

https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.1.0/bk_ambari-troubleshooting/content/ch_ambari_troubleshooting.html

Ambari 重置

# ambari-server reset

如何完全移除 Ambari ?

https://community.hortonworks.com/questions/449/how-to-reset-ambari-admin-password.html

https://community.hortonworks.com/questions/1110/how-to-completely-remove-uninstall-ambari-and-hdp.html

Chatper 8. Ambari 管理

https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.2.0/bk_ambari-administration/content/ambari_admin_overview.html

Ambari 預設會創建一個 admin/admin 帳戶,它具備操作 Ambari 所有控制權,包括創建和管理所有的叢集、用戶和組。

術語(Terminology)

Ambari 管理員(Ambari Admin)

授予用戶管理 Ambari 的特定權限,具備 Ambari Admin 特權的用戶可以授予其他用戶此特權,亦可撤銷其特權。

帳戶(account)

用戶名、密碼及特權(privileges)。

叢集(cluster)

由 Ambari 管理並基於特定堆棧(Particular Stack)的 Hadoop 叢集的安裝設備。

用戶(user)

Ambari 上唯一的用戶。

用戶類型(user type)

分為本地(Local)和輕型目錄存取協定(LDAP)。本地用戶由 Ambari 資料庫所管理,並根據資料庫進行認證;如果有配置 LDAP 用戶,會將其匯入並與其同步。

LDAP(Lightweight Directory Access Protocol,輕量級目錄存取協定)是一種可以儲存所有用戶和群組的集中式目錄服務,通過 IP 協議提供訪問控制和維護分布式信息的目錄信息。

群組(group)

Ambari 用戶的唯一群組。

群組類型(group type)

分為本地(Local)和輕型目錄存取協定(LDAP)。本地群組由 Ambari 資料庫所管理;如果有配置 LDAP 群組,會將其匯入並與其同步。

主要(principal)

經過 Ambari 認證的用戶或群組。

檢視(view)

Ambari 可用的用戶介面元件(Interface Component)。

權限(permissions)

主要用戶或群組的特定檢視(view)。

資源(resource)

在 Ambari 上可用和受管理的資源。 Ambari 支援兩種類型的資源:叢集(cluster)和檢視(view),Ambari 管理員會為用戶和群組分配資源的權限。

角色(role)

分配給特定叢集上的主要用戶或群組。

特權(privilege)

權限(permission)或角色(role)和資源(resource)的主要映射。

例如,授予用戶 joe.operator 在叢集 DevCluster 叢集運算子(Cluster Operator)的角色(role)。

版本(version)

堆棧(Stack)版本,其中包括一群組安裝在叢集上的該版本資源庫。

Ambari 管理頁面

http://<your.ambari.server>:8080# 8080 是 Ambari Server 預設的 port# username/password = admin/admin

--

--

EREN
erens-tech-book

“I’m quite illiterate, but I read a lot. “ — J.D.Salinger, The Catcher in the Rye