centos7安裝ambari教程 Linux 關於Transparent Hugepages的介紹 CentOS7minimal MySql的卸載及安裝

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 以及相關的大數據軟件更容易使用的一個工具。php

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

 

概念概述

  • 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.htmljava

 

 

原理簡介

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

 

 安裝

安裝須知:mysql

  • 全部操做都要使用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

 

 開始安裝:linux

  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下載失敗,須要手動下載安裝;點這裏 下載一個並安裝就能夠了sql

    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 指定集羣名apache

2.Select Version 選擇HDP版本。HDP版本對應的是一組生態組件的版本。根據本身須要的組件版本選擇一個便可。我選擇的是HDP-2.5bootstrap

下面的內容,使用公共資源庫便可(推薦把資源下載到本地,而後使用本地庫。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

 

 

 

 


參考:

相關文章
相關標籤/搜索