centos7安裝ambari教程


ambari版本 :2.4.2 (不過各版本安裝過程沒啥差異)

目錄:

  1. 為什么要用Ambari
  2. 概念概述
  3. 版本信息
  4. 原理簡介
  5. 安裝
  6. 創建集群
    1. 創建集群
    2. 手動修改配置
    3. NameNode HA
  7. 安裝SmartSense
  8. 二次開發
  9. Ambari的升級
  10. 相關錯誤

 

 

為什么要用Ambari 

Ambari 是 Apache Software Foundation 中的一個頂級項目。就 Ambari 的作用來說,就是創建、管理、監視 Hadoop 的整個生態圈產品(例如 Hive,Hbase,Sqoop,Zookeeper 等)。用一句話來說,Ambari 就是為了讓 Hadoop 以及相關的大數據軟件更容易使用的一個工具。

對於那些苦苦花費好幾天去安裝、調試 Hadoop 的初學者是最能體會到 Ambari 的方便之處的。而且,Ambari 現在所支持的平台組件也越來越多,例如流行的 Spark,Storm 等計算框架,以及資源調度平台 YARN 等,我們都能輕松地通過 Ambari 來進行部署。

 

概念概述

  • Stack :堆  版本號  一批Service的集合
  • Service:產品 如Hive,HBase等
  • Module:Service中的一部分
  • Alert:警告
  • Host:節點  可以理解為一個虛擬機
  • Ambari Agent:每個Host上的管理員
  • Ambari Server:通過與每個Agent保持通話,操控並了解所有信息(host、service等運行情況和資源狀態)並提供GUI
  • View:ambari通過框架 Ambari Views framework ,允許第三方對組件進行擴展,如hdfs的目錄管理等。目前支持Tez、Hive、Pig、Capacity Scheduler(YARN)、Files(HDFS)

 

版本情況

針對各版本的HortOnWork官方文檔: http://docs.hortonworks.com/HDPDocuments/Ambari/Ambari-2.4.2.0/index.html

 

 

原理簡介

Ambari 自身也是一個分布式架構的軟件,主要由兩部分組成:Ambari Server 和 Ambari Agent。簡單來說,用戶通過 Ambari Server 通知 Ambari Agent 安裝對應的軟件;Agent 會定時地發送各個機器每個軟件模塊的狀態給 Ambari Server,最終這些狀態信息會呈現在 Ambari 的 GUI,方便用戶了解到集群的各種狀態,並進行相應的維護。

 

 安裝

安裝須知:

  • 所有操作都要使用root用戶,且系統不要有其他用戶,ssh的密鑰也都是基於root用戶的。否則會出現問題【Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password) 
  • hostname都要使用FQDN格式,具體參照【配置】的第三步
  • 所有節點都安裝ntpd服務 可參考CentOS7 中使用NTP進行時間同步
  • 切記    一定要從空機裝起,尤其是以前搭過hadoop環境的。
  • ambari使用向導(僅僅是使用)
  • ambari只能管理一個集群
  • 再次說明 ambari版本:2.4.2.0;操作系統:CentOS7

 

 開始安裝:

  1. 在 hortonworks公共資源庫 選定一個ambari版本並復制對應的repo地址(這個網頁的內容加載很慢 要耐心等)。我選的是2.4.2 地址是http://s3.amazonaws.com/public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.4.2.0/ambari.repo。
  2. 使用wget下載到節點,或者下載到物理機后上傳到節點
    wget http://s3.amazonaws.com/public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.4.2.0/ambari.repo  #文件會下載到當前目錄
  3. 將ambari.repo文件拷貝到 /etc/yum.repos.d/ 目錄下
    mv ambari.repo /etc/yum.repos.d/
  4. 獲取該公共庫的所有源文件列表
    yum clean all
    yum list|grep ambari
  5. 開始安裝server
    yum install ambari-server
    ambari-server --version #查看版本

     如果依賴項postgresql下載失敗,需要手動下載安裝;點這里 下載一個並安裝就可以了

    wget ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/7.2/x86_64/updates/security/postgresql-libs-9.2.15-1.el7_2.x86_64.rpm;
    rpm -ivh postgresql-libs-9.2.15-1.el7_2.x86_64.rpm
  6. 安裝完成后,開始進行配置(全部用默認項 全程回車)。其中有一步 需要指定用戶賬號,要記住使用root
    ambari-server setup
  7. 配置完成就可以啟動了,然后  就可以用8080端口訪問管理頁面了
    ambari-server start
    ambari-server status #查看server啟動情況
    ambari-agent status #查看agent啟動情況 這個創建集群成功才能使用

 


 

創建集群:

創建集群

安裝成功后,就需要在WEBUI中創建集群了。點擊【Launch Install Wizard】

 

1.GetStarted 指定集群名

2.Select Version 選擇HDP版本。HDP版本對應的是一組生態組件的版本。根據自己需要的組件版本選擇一個即可。我選擇的是HDP-2.5

下面的內容,使用公共資源庫即可(推薦把資源下載到本地,然后使用本地庫。Public Repo的話需要很長時間)。【Skip ……】這個也不用選,進入下一步。

 

 

 

 3.Install Options 安裝配置。這一步要謹慎

Target Hosts要指定Hosts列表,這個hostname的格式必須是Fully Qualified Domain Name (FQDN),簡單點說,必須是一個域名的格式,如下圖所示。

這里輸入的hostname必須與/etc/hosts一致。同時,每個節點的hostname與/etc/hosts中的設定也必須要一致。

Host Registration Information  這里要選擇使用私鑰,並上傳作為Ambari的主機的私鑰,當然也可以直接粘貼私鑰的內容(建議使用文件,因為拷貝的內容會有格式問題) 注:id_dsa是私鑰,id_dsa.pub 是公鑰。UserAccount使用root 端口不用改

 

4.Confirm Hosts

 從上一步過來后,在這一步會自動節點注冊,並會顯示進度及注冊狀況

可以點擊①查看有哪些注冊過程中缺少的內容

 

一般來講這里最可能出現的就是時間沒有同步(ntpd),以及THP的設置。

具體解決:

安裝啟動ntpd

yum -y install ntpd
ntpdate time.nist.gov
service ntpd start
chkconfig ntpd on

 

禁用THP(參考 Linux 關於Transparent Hugepages的介紹)

echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

 

 

 

5.Choose Services 選擇集群中需要安裝的服務

有些服務是必須得,或者是被依賴的,如果沒選的 點擊下一步的時候會有提示。

 

6.Assign Masters 給各節點組件分配資源,這個自己看着來就行

 

 

7.Assign Slaves and Clients  配置從節點和客戶端。注意最后一列的Client指的是各種客戶端,而不是某一種。

 

 

8.Customize Service 服務的自定義設置

這一步里大部分都可以使用默認項,少部分需要改動和設置,如Hive和Oozie需要指定數據庫密碼等

紅色數字標志表示這一項有需要手動設置的內容。

此外,如果Hive和Oozie使用Mysql的話,還需要先安裝MySql,然后創建hive,oozie用戶並賦予權限,當然  還有hive、oozie數據庫

具體操作可參考 CentOS7minimal MySql的卸載及安裝

還要在ambari server通過以下命令設置驅動(如果沒有執行這一句的話  測試hive或oozie數據庫連接時會出現錯誤 coercing to Unicode: need string or buffer, NoneType found )

ambari-server setup --jdbc-db=mysql --jdbc-driver=[/path/to/mysql/mysql-connector-java.jar]

如果有不合適的參數,是無法進入下一步的,點擊下一步的時候系統會提示需要改成的值。

 

9.Review 提供一個總結的安裝列表,供用戶審閱並提供打印功能

10.Install,Start and Test 開始安裝和測試。這一步會花費較長時間,因為需要在線下載安裝各種組件。

這一步可能會失敗多次,不過不要慌  這基本是網絡因素,不斷重試就可以了

 

11.Summary  安裝情況總覽

我的NameNode沒有啟動成功,所以有警告,暫不知道是否有影響

 

手動修改服務配置

集群創建完了也還是有很多要手動修改的地方(如hive、oozie的元數據存儲數據庫)

這些紅彤彤的標志 都是啟動失敗的服務。

最開始HDFS那一項也是紅的,找了一下午的錯誤,最終發現是因為之前的系統變量 $HADOOP_HOME 沒有刪掉 導致路徑出現問題

明明已經unset過了  結果一重啟機器又出現,並且還找不到在哪里設置的。沒辦法,只能設了一個軟鏈接搞定。

 


 

又過了半天  終於弄好了  太不容易了

看到上方的紅數字消失,無比激動

  

NameNode HA

 默認安裝的集群 NameNode是單點的,我們自然要給升級為HA

1.如果啟動了HBase的話,我們要先關閉HBase服務

2.HDFS->Service Actions -> Enable NameNode HA

3.Get Started 指定service ID

4.Select Hosts  選擇作為備用NameNode以及作為JournalNode的host

5.Review 確認上一步的設定。配置不用改動,直接下一步

 

6.Create Checkpoint

 

這一步的操作需要手動完成(啟用Safe mode)。

如圖所示,在NameNode所在Host先后執行兩條命令

sudo su hdfs -l -c 'hdfs dfsadmin -safemode enter'

sudo su hdfs -l -c 'hdfs dfsadmin -saveNamespace'

執行成功之后 Next 會自動變得可點擊

7.Configure Components 開始重新配置各個組件服務

 

8.Manual Steps Required  又是一個需要手動的環節

 9.Start Components 啟動各組件

 

10.Manual Steps Required: Initialize NameNode HA Metadata  手動初始化NameNode HA的元數據

在主NameNode上執行

sudo su hdfs -l -c 'hdfs zkfc -formatZK'

 

在備用NameNode上執行

sudo su hdfs -l -c 'hdfs namenode -bootstrapStandby'

 

 

11. Finalize HA Setup 啟動最終配置

 

 


 

 安裝SmartSence

啟動后發現會有一個SmartSence服務,並且一直是啟動不成功。查看錯誤顯示 【Please configure a vaid SmartSense ID to proceed.

SmartSence是 HORTONWORKS 公司的一款增值服務產品,為hadoop集群提供指導幫助,SmartSence是無法像Ambari其他服務一樣安裝的。

而這個SmartSenseID需要安裝之后才會由官方提供。

具體安裝參考 https://docs.hortonworks.com/HDPDocuments/SS1/SmartSense-1.1.0/bk_smartsense_admin/content/ch01s02s05s01.html

 

Ambari的升級

參考官網 http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.2.0/bk_ambari-upgrade/content/ambari_upgrade_guide.html

具體還沒有做過線上Ambari的升級,有機會升級的話補上這一節

 

 

相關錯誤:

1.ambari啟動后,hbase服務正常,但是之后時不時的掛掉一兩個節點,去掛掉的節點上查看日志

內容如下

2016-12-12 10:47:03,487 WARN [regionserver/slave1.sardoop.com/192.168.0.37:16020] wal.ProtobufLogWriter: Failed to write trailer, non-fatal, continuing...
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException): No lease on /apps/hbase/data/oldWALs/Node1%2C16020%2C1481510498265.default.1481510529594 (inode 25442): File is not open for writing. Holder DFSClient_NONMAPREDUCE_1762492244_1 does not have any open files.
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkLease(FSNamesystem.java:3536)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalDatanode(FSNamesystem.java:3436)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getAdditionalDatanode(NameNodeRpcServer.java:877)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getAdditionalDatanode(ClientNamenodeProtocolServerSideTranslatorPB.java:523)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:640)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2313)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2309)

解決方法:

到Ambari的HBase服務下修改配置hbase-env.sh兩處

修改前:

export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70  -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}} $JDK_DEPENDED_OPTS"

修改后:

export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:MaxTenuringThreshold=3 -XX:SurvivorRatio=8 -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:InitiatingHeapOccupancyPercent=75 -XX:NewRatio=39 -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}} $JDK_DEPENDED_OPTS"

 

修改前:

export HBASE_OPTS="$HBASE_OPTS -XX:+UseConcMarkSweepGC -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log -Djava.io.tmpdir={{java_io_tmpdir}}"

修改后:

export HBASE_OPTS="$HBASE_OPTS -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log -Djava.io.tmpdir={{java_io_tmpdir}}"

 

 

2.HDFS的權限問題

在Ambari上安裝好集群之后  自然要使用,無論是在頁面上往查看目錄,還是在命令行操作文件或目錄,經常會出現如下問題:

【Permission denied: user=dr.who, access=READ_EXECUTE, inode="/tmp/hive":ambari-qa:hdfs:drwx-wx-wx】

黑體部分依次是 HDFS目錄、目錄擁有者、目錄擁有者所在組。

解決方式有兩種:

①修改目錄權限

sudo -u hdfs hadoop dfs -chmod [-R] 755 /user/hdfs     #紅字部分是指該命令的執行用戶,這里使用目錄所有者

 

這種方式破壞了原有的權限設計,個人不建議

②使用對應的用戶去執行命令,如

sudo -u hdfs hadoop dfs -ls /user/hive   #即 根據目錄的權限,選擇使用對應的用戶

 

要注意的是,如果要上傳文件,最好先用  su someuser  登錄,然后再執行(這樣路徑才不會出錯,否則會找不到路徑)

 

其實還有另外一種添加超級權限用戶組的方式,感興趣可參考 HDFS Permissions: Overcoming The "Permission Denied" AccessControlException

 

 

 

 


參考:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM