loading

Resources

07Jun 2018

SOP - 封閉網路環境中安裝設定 CDH

SOP - 封閉網路環境中安裝設定 CDH

安裝設定CDH叢集

  • 1Objective
  • 2Definition
  • 3Scope
    • 3.1環境基本資訊
  • 4Planning before Work
    • 4.1CDH安裝環境用的硬體最低規格
    • 4.2硬碟分割規劃原則
      • 4.2.1硬碟分割實際規劃範例(HDD: 100 GB)
    • 4.3Cluster規劃原則
    • 4.4Hadoop角色服務配置原則
  • 5Hardware Preparation
    • 5.1設定封閉式網路環境
    • 5.2建置虛擬機器
      • 5.2.1基礎環境
      • 5.2.2設定可連接外部網路的主機
  • 6OS Installation
    • 6.1安裝作業系統
    • 6.2設定CDH環境需要的作業系統
      • 6.2.101. 網路介面檢查
      • 6.2.202. 所有主機與IP皆能互認
      • 6.2.303. 設定系統語系
      • 6.2.404. 移除 OpenJDK
      • 6.2.505. 關閉 SELinux 與 Linux Firewall
      • 6.2.606. NTP修改並啟動
      • 6.2.707. 關閉 IPv6功能
      • 6.2.808. 修改 CentOS Linux 參數 vm.swappiness Linux Kernel Parameter
      • 6.2.909. 增加 disable defrag 設定
      • 6.2.1010. 關閉虛擬網路卡
      • 6.2.1111. 確認修改皆正確後,請重新開機
  • 7Repo Server Buildup
    • 7.1Pre-requisite
      • 7.1.1Resource List
      • 7.1.2Environment Pre-check list
    • 7.2Repo Server Setup
      • 7.2.1將所有安裝檔案上傳到Repo Server
      • 7.2.2安裝HTTPD服務
      • 7.2.3安裝CREATEREPO程式
      • 7.2.4建置作業系統安裝檔儲存庫(OS Install Packages Repository)
      • 7.2.5建置ClouderaManagerService安裝檔儲存庫(CMS Packages Repository)
      • 7.2.6建置CDH Parcel檔儲存庫(CDH Parcel Repository)
      • 7.2.7(未裝過)建置工具安裝包儲存庫(Tool Package Repository)
      • 7.2.8最後Repo Server驗證
    • 7.3Repo Client Setup
      • 7.3.1設定客戶端使其正確使用「作業系統安裝檔儲存庫」
      • 7.3.2設定客戶端使其正確使用「CMS Repository」
      • 7.3.3Repo Client驗證
    • 7.4重新開機
  • 8External Database Installation (PostgreSQL)
    • 8.1確認需求的資料庫版本(PostgreSQL)
    • 8.2安裝PostgreSQL
    • 8.3設定PostgreSQL
    • 8.4新增DB
    • 8.5離開並重啟PostgreSQL
    • 8.6驗證
  • 9Cloudera Hadoop (CDH) Wizard Installation
    • 9.1安裝Oracle JDK
    • 9.2安裝CM Server & CM Agent
      • 9.2.1安裝 CM Server
      • 9.2.2安裝 CM Agent
      • 9.2.3設定並啟動 CM Server & CM Agent
      • 9.2.4驗證
    • 9.3CDH Wizard安裝畫面
  • 10Verification
    • 10.1基本驗證
    • 10.2功能性驗證
      • 10.2.1HDFS
      • 10.2.2YARN
      • 10.2.3Impala 
      • 10.2.4Hive
      • 10.2.5HBase
    • 10.3效能驗證
      • 10.3.1Network IO
      • 10.3.2Disk IO
      • 10.3.3HDFS
      • 10.3.4MapReduce

Objective

在封閉網路環境安裝設定CDH叢集。

Definition

  1. 封閉網路環境:無網際網路存取權限之環境。
  2. $表示可自訂的變數,無限制,其中XXX可代表任意字元。

Scope

安裝環境基本資訊

 

項目

說明

1

ESXi機器

Taipei

2

作業系統

CentOS 7.3 x86_64-Everything-1611

3

CDH網路環境

在封閉式網路環境

4

外部資料庫

Yes, PostgreSQL 9.2.18

(CentOS 7.3 built-in version)

5

Repo server

Yes (build on Master Host-01)

6

CDH version

5.7~5.14 

下載位置:https://archive.cloudera.com/cdh5/parcels/latest/

7

Cluster Number

Total 5 hosts

  1. 2 Master Host
  2. 3 Worker Host

 


Planning before Work

CDH 測試環境最低硬體規格

不適合用來執行真實的資料處理活動,建議作為練習環境建置使用。

   

Master Host

Worker Host

1

CPU

1

1

2

Memory

16 GB

16 GB

3

HDD

100 GB

100 GB

 

硬碟分割規劃原則

檔案系統掛載點

Partition 容量

Master Host

Worker Host

/boot

200 MB

swap

8 GB (測試環境)

/

最小容量必須>=20GB

/var

剩餘的60%

剩餘的40%

/tmp

剩餘的40%

剩餘的60%

硬碟分割實際規劃範例(HDD: 100 GB)

檔案系統掛載點

Partition 容量

Master Host

Worker Host

/boot

200 MB

swap

8 GB

/

40 GB

/var

31.2 GB

20.6 GB

/tmp

20.6 GB

31.2 GB

Cluster規劃原則

Host

hostname

Main service

Master Host-01

NameNode01

  1. Repo Server
  2. NTP Server
  3. CMS
  4. CM DB
  5. Hadoop master roles service
  6. Cloudera Management service

Master Host-02

NameNode02

  1. Hadoop master roles service
  2. Cloudera Management service

Worker Host-01

DataNode01

Hadoop worker roles service

Worker Host-02

DataNode02

Hadoop worker roles service

Worker Host-03

DataNode03

Hadoop worker roles service

Hadoop角色服務配置原則

Host

hostname

Hadoop/Cloudera Service Role

Master Host-01

NameNode01

  1. HDFS →  (SecondaryNameNode)
  2. ZooKeeper → (ZooKeeperServer)
  3. Oozie → (OozieServer)
  4. Hive → (Metastore Server)
  5. Cloudera Management service→ (Host Monitor, Service Monitor)

Master Host-02

NameNode02

  1. HDFS →  (NameNode , Balancer)
  2. YARN → (ResourceManager , JobHistoryServer)
  3. Hive → (HiveServer2)
  4. Hue → (Hue Server)
  5. Cloudera Management service→ (Activity Monitor, Alert Publisher, Event Server, Reports Manager)

Worker Host-01

DataNode01

  1. HDFS →  (DataNode)
  2. ZooKeeper → (ZooKeeperServer)
  3. YARN → (NodeManager)
  4. Hive → (Hive Gateway)

Worker Host-02

DataNode02

  1. HDFS →  (DataNode)
  2. ZooKeeper → (ZooKeeperServer)
  3. YARN → (NodeManager)
  4. Hive → (Hive Gateway)

Worker Host-03

DataNode03

  1. HDFS →  (DataNode)
  2. YARN → (NodeManager)
  3. Hive → (Hive Gateway)

Hardware Preparation

設定封閉式網路環境

  1. 登入ESXi主機『Taipei』
  2. 設定『資源集區』
    1. 在主機『$』之下建立『資源集區』:
      1. 名稱為『$
      2. CPU資源共用率為『正常/ 保留0 / 可擴充的保留/ 無限制』
      3. 記憶體資源共用率為『正常/ 保留0 / 可擴充的保留/ 無限制』
  3. 設定『封閉網路環境(vSwitch)』
    1. 在主機『$』之下,右側『組態』分頁之中,點選『硬體』區塊中的『網路功能』,而後並在右上角按『新增網路』
    2. 連線類型:『虛擬機器』
    3. 選擇『建立vSphere Standard Switch』並移除勾選所有網路卡,會在下面的預覽看到實體介面卡為『無介面卡』。
    4. 網路標籤輸入為『$
    5. 在『預覽』中確認其設定後按下『完成』
    6. 驗證:回到『組態』分頁,,點選『硬體』區塊中的『網路功能』,而後往下捲動並找到方才設定的vSwitch。

建置虛擬機器

  1. N:有N台虛擬機器需要被建置
  2. 硬體的規格(CPU / Memory / HDD)如上述章節『Planning before Work - CDH安裝測試環境用的硬體規格』

基礎環境

點選主機『$』並在其右側頁面中選擇『建立新的虛擬機器』,詳細設定如下,此動作在N台虛擬機上重複

  1. 組態:自訂
  2. 名稱:『$
  3. 儲存區:『datastore1』
  4. 虛擬機器版本:『8』(Note: 以當下最新的版本為主)
  5. 客體作業系統:『Linux』& 版本:『CentOS 4/5/6/7 (64-bit)』
  6. 虛擬通訊端數目:『1』& 每個虛擬通訊端的核心數目:『1』
  7. 記憶體大小: 16 GB
  8. 網路連線:『1』,NIC 1選擇『$』,介面卡:『E1000』
  9. SCSI控制器:『LSI Logic 平行』
  10. 磁碟:『建立新的虛擬硬碟』
  11. 磁碟大小:『100 GB』,磁碟佈建:『完整佈建消極式歸零』,位置:『與虛擬機器儲存一起』
  12. 虛擬裝置節點:『SCSI (0:0)』,模式:不勾獨立
  13. 再次檢視以上資訊,無誤後按下『完成』

設定可連接外部網路的主機

  1. 從ESXi Client上選擇一台主機當作跳板機,從外部直接連線。
  2. (使用Master Host的第一台當作範例)
  3. 在Master Host的第一台,選擇『編輯設定』,新增另一張網路卡
    1. 『網路標籤』選擇『${VM Network}』  (${VM Network} 為ESXi主機可以外連的網路名稱)
    2. 介面卡:『E1000』
  4. 按下『確定』即可

 


OS Installation

安裝作業系統

以下步驟所有虛擬機皆相同

  1. 當作業系統ISO檔上傳到ESXi的主機內資料夾存放
  2. 在所有虛擬機上掛載ISO檔
  3. 將所有虛擬機器開機
  4. 開機畫面中,選擇『Install CentOS Linux 7』
  5. 進入CentOS的安裝畫面,詳細設定如下(以下只列出有改的,其他使用預設)
    1. 語言:『English (US)』
    2. DATE&TIME:『Asia/ Taipei』
    3. SOFTWARE :『Local media』
    4. SOFTWARE SELECTION:『GNOME Desktop』
    5. INSTALLATION DESTINATION:在『Other Storage Options』下選擇『I will configure partitioning』
      1. 接著會進入硬碟分割的畫面,partitioning scheme選擇『Standard Partition』
      2. 硬碟分割容量請參考章節『Planning before Work - 硬碟分割規劃』,表格『硬碟分割實際規劃範例(HDD: 100 GB)』
        1. 裝置類型:『標準分割區』
        2. 檔案系統:『xfs』
        3. 更詳細的操作方式可參考鳥哥的硬碟分割操作
    6. 設定root帳號密碼:『$』&使用者帳號密碼:『$/ $』(勾選『Mark this user administrator』)
  6. 重開機
  7. 確認可以登入
  8. 關機,並卸載ISO檔

 

設定CDH環境需要的作業系統

  1. 以下步驟不管是否為虛擬機或實體機,皆相同。
  2. 以下步驟皆使用root帳號。
  3. 以下步驟基本上為全部的機器皆要設定,除非有特別指名。

01. 網路介面檢查

關掉NetworkManager

CMD

systemctl disable NetworkManager.service ;
systemctl stop NetworkManager.service ;
chkconfig network on # 因為network不是標準的 systemd 的程序
 
# 驗證指令
systemctl is-active NetworkManager.service ;
systemctl is-enabled NetworkManager.service 

設定網路介面如下

  1. 修改網路卡設定檔(範本如下),路徑為/etc/sysconfig/network-scripts/

vi ifcfg-XXX (只有在對外跳板機需要設定)

DEVICE=ens34 # 不變
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no # 這個很重要,不然會怪怪的,明明有設定卻無效
IPADDR=192.168.1.111 # 此為連外網路的IP
NETMASK=255.255.255.0 
GATEWAY=192.168.1.1 # 連外網路的Gateway
DNS1=8.8.8.8 # 此為連外網路的DNS
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT=no

 

vi ifcfg-YYY (所有主機皆要設定)

DEVICE=ens32 # 不變
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no # 這個很重要,不然會怪怪的,明明有設定卻無效
IPADDR=$ # 此為內部IP,因為是封閉式網路,所以可以自行決定範圍
NETMASK=255.255.255.0
DNS1=$ # 指向Repo server,要用內部IP
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT=no

 

修改主機名稱檔案(/etc/sysconfig/network)

vi /etc/sysconfig/network

HOSTNAME=$

 

重啟服務

CMD

systemctl restart network

驗證

  1. 用指令ifconfig檢查所設定的IP是否正確
  2. 檢查"/etc/resolv.conf"
    1. Repo Server:確認DNS為8.8.8.8
    2. 其他主機:確認DNS為$

02. 所有主機與IP皆能互認

請在/etc/hosts加入所有主機與IP

(以下為範例)

vi /etc/hosts

2.2.2.1 namenode01
2.2.2.2 namenode02
2.2.2.3 datanode03
2.2.2.4 datanode04
2.2.2.5 datanode05

驗證

每台主機要互相可以ping的到,但是需要重開機才生效,最後再驗證

CMD

ping -c 10 $

03. 設定系統語系

CMD

export LANGUAGE=en_US.UTF-8 ;
export LANG=en_US.UTF-8 ;
export LC_ALL=en_US.UTF-8

驗證

CMD

locale

 

04. 移除OpenJDK

檢查現有OpenJDK套件 (若一定要使用Open JDK, 請參考:http://www.athemaster.com/resources/57)

CMD

rpm -qa | grep jdk

移除指令(以下範例指令,實際上要以找到的套件名稱為準)

CMD

yum remove -y java-*-openjdk-* ;
yum remove -y copy-jdk-configs-*

驗證

用以下指令檢查,確認沒有OpenJDK套件被找到

CMD

rpm -qa | grep jdk

05. 關閉 SELinux 與Linux Firewall

檢查

用以下指令確認Firewall服務的狀態,預設應該為啟動

CMD

systemctl is-active firewalld

檢查檔案/etc/sysconfig/selinux,預設為enforcing

cat /etc/sysconfig/selinux

SELINUX=enforcing

關閉SELinux

CMD

sed -i 's/^SELINUX.*/SELINUX=disabled/' /etc/selinux/config

關閉Linux Firewall

CMD

systemctl stop firewalld ;
systemctl disable firewalld

驗證

以下指令確認Firewall服務沒有被啟動

CMD

systemctl is-active firewalld ;
systemctl is-enabled firewalld 

檢查檔案/etc/sysconfig/selinux,為disable

cat /etc/sysconfig/selinux

SELINUX=disabled

06. NTP修改並啟動

  1. 目的:選一台主機當ntp server,其他台(NTP Client)則指到ntp server。
  2. NTP Server上也要設置NTP Client

檢查

以下指令確認NTP服務的狀態

CMD

systemctl is-active ntpd

在NTP Server上修改/etc/ntp.conf,內容如下

vi /etc/ntp.conf

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
 
server 127.127.1.0
fudge  127.127.1.0 stratum 8

在NTP Client上修改/etc/ntp.conf,內容如下

vi /etc/ntp.conf

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
 
server $

 

重啟服務

CMD

systemctl enable ntpd ;
systemctl start ntpd

驗證

1.以下指令確認NTP服務有被啟動

CMD

systemctl status ntpd ;
 
# 也可以用以下兩個指令檢查
systemctl is-active ntpd ;
systemctl is-enabled ntpd 

2.檢查NTP,應該會看到同步的資訊,範例如下

CMD

[kenlin@namenode01 ~]$ ntpstat
synchronised to local net at stratum 9
   time correct to within 11 ms
   polling server every 64 s

3.另一種方式檢查NTP,指令為ntpq -p

3.1 NTP Server端會看到類似以下的資訊,remote為LOCAL

CMD: ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================

*LOCAL(0)        .LOCL.                         8    l    62       64        377          0.000        0.000          0.000

 

3.2 NTP Client端會看到類似以下的資訊,remote為$

CMD: ntq -p

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*namenode01      LOCAL(0)         9 u  102 1024  377    0.180   -0.002   0.026

 

07. 關閉IPv6功能

檢查

(預設應為0)

cat /proc/sys/net/ipv6/conf/all/disable_ipv6 ;
cat /proc/sys/net/ipv6/conf/default/disable_ipv6

 

vi /etc/sysctl.conf

應為找不到,預設無此設定

 

關閉IPv6設定

CMD

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 ;
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6 ;
echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf ;
echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf ;
sed -i 's/^udp6/#udp6/' /etc/netconfig ;
sed -i 's/^tcp6/#tcp6/' /etc/netconfig

 

驗證

應為1

cat /proc/sys/net/ipv6/conf/all/disable_ipv6 ;
cat /proc/sys/net/ipv6/conf/default/disable_ipv6

 

cat /etc/netconfig

udp6 & tcp6那兩行被標註掉

 

vi /etc/sysctl.conf

# 新增了以下兩行
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

08. 修改CentOS Linux 參數vm.swappiness Linux Kernel Parameter

檢查

(預設應為1)

cat /proc/sys/vm/swappiness

 

(預設應為1)

sysctl -a |grep vm.swappiness

 

vi /etc/sysctl.conf

應為找不到,預設無此設定

修改參數

CMD

sysctl -w vm.swappiness=0 ;
echo 0 > /proc/sys/vm/swappiness ;
echo "vm.swappiness=0" >> /etc/sysctl.conf

驗證

應為0

cat /proc/sys/vm/swappiness

 

應為0

sysctl -a |grep vm.swappiness

 

vi /etc/sysctl.conf

vm.swappiness=0

09. 增加disable defrag 設定

根據Cloudera Hadoop的建議,只需要關閉THP defrag即可,因為會影響到效能跟工作負載,請參考 Optimizing Performance in CDH

 

檢查

cat /sys/kernel/mm/transparent_hugepage/defrag

[always] madvise never

 

disable defrag 設定

CMD

echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag

 

在開機時關閉此設定

CMD

chmod +x /etc/rc.d/rc.local ;
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local

 

驗證

cat /sys/kernel/mm/transparent_hugepage/defrag

always madvise [never]

 

cat /etc/rc.local

#確認有以下這行
echo never > /sys/kernel/mm/transparent_hugepage/defrag

 

10. 關閉虛擬網路卡

  1. CentOS 7之後的版本建議執行,因為CentOS 7之後的版本預設會開啟虛擬網路卡,則會造成CDH安裝後的警訊。
  2. CentOS在選擇『KVM and/or "Gnome Boxes" 』可能會安裝虛擬網卡,目的可以做為路由器使用NAT不同網段,但不在我們需求內因此可關閉。

關掉虛擬介面

virsh net-destroy default ;
virsh net-undefine default

驗證

使用指令ifconfig查看,虛擬網路卡(virbr0-nic.2)被拿掉。

 

11. 確認修改皆正確後,請重新開機

清除快取

CMD

yum clean all

 

重開機

reboot

 

驗證

  1. 再次確認以上設定是否正確
  2. 每台主機名稱要正確並且要互相可以ping的到,但是需要重開機才生效

CMD

ping -c 5 $

Repo Server Buildup

  1. 自行下載套件(CMS版本建議比較CDH新,因為升級不用停服務,再有license的情況下)
  2. 選擇一台當Repo Server,Repo Client全部皆要設定(包括Server那台)
  3. createrepo是一個主要工具

Pre-requisite

Resource List

實際安裝版本需參考專案資源列表(Project Resource List)

  1. OS安裝資源
    1. 安裝光碟或ISO檔
  2. CMS安裝資源
    1. 下載點語法: http://archive-primary.cloudera.com/cm5/repo-as-tarball/$/cm$-$.tar.gz
    2. 範例:http://archive-primary.cloudera.com/cm5/repo-as-tarball/5.7.0/cm5.7.0-centos7.tar.gz
  3. CDH安裝資源
    1. 下載檔:CDH Parcel和CDH Parcel的Json檔
    2. 下載點語法:
      1. http://archive-primary.cloudera.com/cdh5/parcels/$/CDH-$.cdh$-$.parcel
      2. http://archive-primary.cloudera.com/cdh5/parcels/$/manifest.json
    3. 範例:
      1. http://archive-primary.cloudera.com/cdh5/parcels/5.7.0/CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel
      2. http://archive-primary.cloudera.com/cdh5/parcels/5.7.0/manifest.json
  4. 工具安裝包資源(若是有需要的才要下載)
    1. JDK for CM,
    2. DB for CM
      1. MySQL
      2. Oracle
      3. PostgreSQL

Environment Pre-check list

每一台機器都必須具備以下條件:

  1. 需已安裝OpenSSH。
  2. 關閉防火牆服務。(步驟請參考章節- "OS Installation" , 子章節"設定CDH環境需要的作業系統",第五節"關閉 SELinux 與Linux Firewall")
  3. 關閉SELinux。(步驟請參考章節 - "OS Installation" , 子章節 "設定CDH環境需要的作業系統",第五節"關閉 SELinux 與 Linux Firewall")
  4. 網路設定正確。例:網卡,HOSTNAME,Network Config等。
  5. 停用所有yum.repos.d之設定檔,指令如下

cd /etc/yum.repos.d

mkdir -p /etc/yum.repos.d/old_repo

mv -v *.repo old_repo/

ls -la /etc/yum.repos.d/ # 檢查所有repo檔是否都在"old_repo"資料夾內

Repo Server Setup

將所有安裝檔案上傳到Repo Server

1. 在Repo Server上建立資料匣

CMD

mkdir -p /tmp/res

2.上傳所有於「Resource list」之檔案(CMS安裝資源 / CDH 安裝資源 / 工具安裝包資源)到Repo Server,指令為

CMD

scp -rp $ root@$:/tmp/res/ 

3.掛載OS安裝資源 (以虛擬機器為例)

3.1 確認光碟ISO的路徑

CMD

df -h

3.2 範例:ISO檔案在"/run/media/kenlin/CentOS 7 x86_64"

Sample Result

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        40G  2.9G   38G   8% /
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G  100K  7.8G   1% /dev/shm
tmpfs           7.8G   17M  7.8G   1% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda3        32G   12G   21G  36% /var
/dev/sda6        21G  793M   20G   4% /tmp
/dev/sda1       197M  147M   51M  75% /boot
tmpfs           1.6G   20K  1.6G   1% /run/user/1000
/dev/sr0        7.8G  7.8G     0 100% /run/media/kenlin/CentOS 7 x86_64

 

安裝HTTPD服務

1.檢查有無安裝 (如已安裝,請跳至「確認HTTP已安裝/設定完成/啟動無誤」步驟)

CMD

systemctl status httpd

2.安裝HTTPD,移至$/Packages目錄,爾後使用RPM安裝相關套件。使用以下指令

此為範例,版本要依當時情況而定

cd $/Packages ;
rpm -ivh apr-1.4.8-3.el7.x86_64.rpm ;
rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm ;
rpm -ivh apr-util-ldap-1.5.2-6.el7.x86_64.rpm ;
rpm -ivh httpd-tools-2.4.6-45.el7.centos.x86_64.rpm ;
rpm -ivh mailcap-2.1.41-2.el7.noarch.rpm ;
rpm -ivh httpd-2.4.6-45.el7.centos.x86_64.rpm

 

3.設定於開機時啟動httpd服務

CMD

systemctl enable httpd

4.啟動httpd服務

CMD

systemctl start httpd

5.確定服務已啟動

CMD

systemctl status httpd 
 
# 也可以分別用以下兩個指令查看
systemctl is-active httpd ;
systemctl is-enabled httpd

 

安裝CREATEREPO程式

1.檢查服務有無安裝

CMD

rpm -qa|grep createrepo

2.若無,請安裝

CMD

cd $/Packages/
rpm -ivh createrepo-*.rpm

3.檢查是否安裝成功跟版本

CMD

createrepo --version

 

建置作業系統安裝檔儲存庫(OS Install Packages Repository)

1.建立儲存庫檔案路徑。 

CMD

mkdir $

2.複製OS安裝資源從至目的路徑(儲存庫檔案路徑)。

CMD

cp -rfv $/* $

3.設定目的路徑內檔案存取權限。

CMD

chmod -R 777 $

4.設定目的路徑內檔案擁有者及群組。

CMD

	chown -R root:root $

5.查是否完整複製至目的地

CMD

diff -r $ $

6.檢查檔案權限、擁有者、群組

CMD

ls -la $

7.確認「作業系統安裝檔儲存庫」設定完成

CMD

wget http://127.0.0.1/centoscd/

建置ClouderaManagerService安裝檔儲存庫(CMS Packages Repository)

1.建立儲存庫檔案路徑 

CMD

mkdir -p $

2.移至CM安裝壓縮檔之所在檔案位置。

CMD

cd $

3.解壓縮此檔至目的路徑(儲存庫檔案路徑)。

CMD

tar zxvf $ -C $

4.設定目的路徑內檔案存取權限。

CMD

chmod -R ugo+rX $

5.設定目的路徑內檔案擁有者及群組。

CMD

chown -R root:root $

6.建立Repo

CMD

createrepo $

7.檢查檔案權限、擁有者、群組

CMD

ls -la $

8.確認「ClouderaManagerService安裝檔儲存庫」設定完成

CMD

wget http://127.0.0.1/cm5/

 

建置CDH Parcel檔儲存庫(CDH Parcel Repository)

1.建立儲存庫檔案路徑 

CMD

mkdir -p $

2.移至CDH安裝資源檔之所在檔案位置。

CMD

cd $

3.移動CDH PARCEL及MENIFEST檔案至目的路徑(儲存庫檔案路徑)。

CMD

mv $ $ $

4.設定檔案存取權限。

CMD

chmod -R ugo+rX $

5.設定檔案擁有者及群組。

CMD

chown -R root:root $

6.檢查檔案權限、擁有者、群組

CMD

ls -la $

7.確認「CDH Parcel檔儲存庫」設定完成

CMD

wget http://127.0.0.1/cdh5/

 

(未裝過)建置工具安裝包儲存庫(Tool Package Repository)

1.建立儲存庫檔案路徑 

CMD

mkdir -p $.

2.移至CDH安裝資源檔之所在檔案位置。

CMD

cd $

3.移動Tooll儲存庫檔案路徑

CMD

mv $ $

4.設定檔案存取權限。

CMD

chmod -R ugo+rX $

5.設定檔案擁有者及群組。

CMD

chown -R root:root $

6.檢查檔案權限、擁有者、群組

CMD

ls -la $

7.確認「CDH Parcel檔儲存庫」設定完成

CMD

wget http://127.0.0.1/tools/

 

最後Repo Server驗證

透過瀏覽器連結Repo路徑,並且可以看到檔案目錄

URL

http://${Reop IP}/centoscd
http://${Reop IP}/cm5
http://${Reop IP}/cdh5
http://${Repo IP}/tools

 

Repo Client Setup

設定客戶端使其正確使用「作業系統安裝檔儲存庫」

1.建立相對應之「.repo」檔

CMD

cd /etc/yum.repos.d
vi $

1.1 內容為

$

[CentOSCD] 
name=CentOSCD 
baseurl=http://$/centoscd/ # 要為內部IP
enabled=1 
gpgcheck=0

 

2.確認客戶端設定正確

CMD

yum clean all
yum repolist

 

設定客戶端使其正確使用「CMS Repository」

1.建立相對應之「.repo」檔

CMD

cd /etc/yum.repos.d

vi $

1.1 內容為

$
[cm]
name=cm
baseurl=http://$/cm5/ # 要為內部IP
enabled=1
gpgcheck=0

 

2.確認客戶端設定正確

CMD

yum clean all
yum repolist     

 

Repo Client驗證

會顯示各Repo的套件數量,CentOS約有9000多個,而CM為21個

(以下是範例)

Sample Result

[kenlin@namenode01 ~]$ yum repolist
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
repo id                                                       repo name                                                     status
!CentOSCD                                                     CentOSCD                                                      9,363
!cm                                                           cm                                                               21
repolist: 9,384

 

重新開機

  1. Repo Server關機
  2. 移除光碟/ISO檔案
  3. 將Repo Server開機

 


External Database Installation (PostgreSQL)

  1. 此章節步驟不管在虛擬機或實體機上皆相同。
  2. 外部資料庫建議安裝在跟CM Server同一台(Utility Host or Master Host),以減少除錯的複雜性。(高可用性優先者,可以安裝到其他Host)
  3. 以下步驟在Master Host-01上執行

確認需求的資料庫版本(PostgreSQL)

1.查詢官方文件(CDH 5 and Cloudera Manager 5 Requirements and Supported Versions),確認待安裝的CDH版本跟資料庫的版本是否支援

2.原則上優先確認作業系統對應的版本。

CMD

yum info postgresql

3.若是符合要求就使用。

 

安裝PostgreSQL

CMD

sudo yum install -y postgresql-server

 

設定PostgreSQL

1.初始化

CMD

postgresql-setup initdb

2.編輯/var/lib/pgsql/data/pg_hba.conf

vi /var/lib/pgsql/data/pg_hba.conf

#host    all             all             127.0.0.1/32            ident
#host    all             all             ::1/128                 ident
host all all 0.0.0.0/0 md5

3.編輯/var/lib/pgsql/data/postgresql.conf

vi /var/lib/pgsql/data/postgresql.conf

listen_addresses = '*' 
shared_buffers = 256MB
wal_buffers = 8MB
checkpoint_segments = 16
checkpoint_completion_target = 0.9

4.設定開機後開啟PostgreSQL

CMD

systemctl enable postgresql

5.重啟PostgreSQL


CMD

systemctl restart postgresql

 

新增DB

1.進入DB

CMD

sudo -u postgres psql    

2.新增以下各服務的使用者跟資料庫 (role, password, DB)

CMD

postgres=# create role scm login password 'scm';
postgres=# create database scm owner scm encoding 'UTF-8';
 
postgres=# create role amon login password 'amon_password';
postgres=# create database amon owner amon encoding 'UTF-8';
 
postgres=# create role rman login password 'rman_password';
postgres=# create database rman owner rman encoding 'UTF-8';
 
postgres=# create role hive login password 'hive_password';
postgres=# create database metastore owner hive encoding 'UTF-8';
 
postgres=# create role sentry login password 'sentry_password';
postgres=# create database sentry owner sentry encoding 'UTF-8';
 
postgres=# create role nav login password 'nav_password';
postgres=# create database nav owner nav encoding 'UTF-8';
 
postgres=# create role navms login password 'navms_password';
postgres=# create database navms owner navms encoding 'UTF-8';

 

3.新增METASTORE DB的設定

CMD

postgres=# ALTER DATABASE METASTORE SET standard_conforming_strings = off;

4.建立Hue服務的使用者跟資料庫 (role, password, DB)

CMD

postgres=# create database hue;
postgres=# c hue;
postgres=# create user hue with password 'hue_password';
postgres=# grant all privileges on database hue to hue;

5.建立Oozie服務的使用者跟資料庫 (role, password, DB)

CMD

postgres=# CREATE ROLE oozie LOGIN ENCRYPTED PASSWORD 'oozie' NOSUPERUSER INHERIT CREATEDB NOCREATEROLE;
postgres=# CREATE DATABASE "oozie" WITH OWNER = oozie ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1;

 

離開並重啟PostgreSQL

CMD

postgres=# q;
$ systemctl restart postgresql

驗證

1.登入資料庫

CMD

sudo -u postgres psql

2.檢查各使用者是否有被建立 (以下是範例)

CMD

postgres=# du
                             List of roles
Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
amon      |                                                | {}
hive      |                                                | {}
hue       |                                                | {}
nav       |                                                | {}
navms     |                                                | {}
oozie     | Create DB                                      | {}
postgres  | Superuser, Create role, Create DB, Replication | {}
rman      |                                                | {}
scm       |                                                | {}
sentry    |                                                | {}

 

3.檢查各資料庫是否有被建立 (以下是範例)

CMD

postgres=# l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
amon      | amon     | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
hue       | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres         +
           |          |          |             |             | postgres=CTc/postgres+
           |          |          |             |             | hue=CTc/postgres
metastore | hive     | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
nav       | nav      | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
navms     | navms    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
oozie     | oozie    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
rman      | rman     | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
scm       | scm      | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
sentry    | sentry   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(12 rows)

Cloudera Hadoop (CDH) Wizard Installation

  1. 此章節步驟不管在虛擬機或實體機上皆相同。
  2. 如前述,CM Server 建議安裝在Utility Host or Master Host (namenode standby)
  3. 為保險起見,CM Agent也會在此步驟安裝,因為在CDH Wizard也會安裝。 
  4. 以下步驟
    1. CM Server在一台Master Host上
    2. CM Agent在所有主機上

安裝Oracle JDK

1.查看Oracle JDK的安裝版本,應為使用作業系統內建的版本。

CMD

yum search oracle-j2sdk

2.安裝Oracle JDK (以下是範例,實際上必須依照上述找到的版本安裝)

CMD

yum install -y $

3.驗證:確認Oracle JDK已被安裝,且版本要update$,表示為安裝CM repo版本。

Sample Result

[kenlin@namenode01 ~]$ rpm -qa |grep oracle-j2sdk
oracle-j2sdk1.7-1.7.0+update67-1.x86_64

 

安裝CM Server & CM Agent

安裝CM Server

1.安裝Cloudera Manager Server

CMD

yum install -y cloudera-manager-daemons cloudera-manager-server

2.確認Cloudera Manager & Cloudera Agent已被安裝

All Master Host & Worker Host

rpm -qa|grep cloudera

 

安裝CM Agent

1.安裝Clouera Manager Agent,會連帶有一推相關套件被安裝

CMD

yum install -y cloudera-manager-agent cloudera-manager-daemons

2.確認Cloudera Manager & Cloudera Agent已被安裝

All Master Host & Worker Host

rpm -qa|grep cloudera

 

設定並啟動CM Server & CM Agent

1.在Master  host 上,將CM DB與CM Server連結,指令如下:

CMD

/usr/share/cmf/schema/scm_prepare_database.sh postgresql scm scm scm

2.在Master Host上,啟動CM Server

CMD

service cloudera-scm-server start

3.在所有機器上,啟動CM Agent

CMD

service cloudera-scm-agent start

驗證

1.在Master Host上,檢查CM Server是否有成功被啟動:

CMD

service cloudera-scm-server status

2.在所有機器上,檢查CM Agent是否有成功被啟動:

CMD

service cloudera-scm-agent status

 

CDH Wizard安裝畫面

  1. 登入Web Wizard安裝畫面
    1. URL → http://$:7180
    2. 帳號/ 密碼:admin / admin
  2. EULA畫面,按下『Continue』
  3. Edition畫面,選擇版本『Cloudera Enterprise Dat Hub Edition Trial』
  4. 感謝畫面,按下『Continue』
  5. 選擇hostname
    1. 請輸入所有機器的hostname並且按下搜尋
    2. 確認所搜尋到的host是否為正確,勾選後按下『Continue』
  6. 設定Repo
    1. 選擇『Choose Method』後面的『More Option』,進入到另外一個畫面,在『Remote Parcel Repository URLs』中第一個位置中加入私人Repo Server 『http://${Reop IP}/cdh5/parcel/$』(注意:要為私有網路IP)
    2. 回到設定頁面,在『Select the specifc relase of the Cloudera mangager Agent you want to install on your hosts』中選擇『Custom Repository』,輸入『http://${Reop IP}/cm5』
  7. JDK安裝畫面,勾選『Install Oracle Java SE Development Kit(JDK)』,按下『continue』
  8. Enable Single User Mode畫面,不要勾選,按下『Continue』
  9. 『Provide SSH login credentials』畫面,輸入$& $,建議用root帳號,按下『Continue』
  10. 開始安裝,等待裝完,並確認皆安裝正確(綠色),按下『Continue』
  11. 『Installing Selected Parcels』畫面,等待安裝完畢後,按下『Continue』
  12. 『Inspect hosts for corretness』畫面,確認皆為綠色,,按下『Finish』
  13. 『Choose the CDH 5 services that you want to install on your cluster』,選擇『core hadoop』,按下『Continue』
    • 在此選擇『core hadoop』,但服務的選擇會依每個客戶每個環境有所不同,請依需求選擇安裝。
  14. 『Customize Role Assignments』,請依據章節『Scope - Cluster實際規劃範例』,按下『continue』
    • 以上是範例,服務的設定會依每個客戶每個環境有所不同,請依需求選擇安裝。
  15. 『Database Setup』畫面,輸入各資料庫的帳號密碼,按『test connection』確認連線成功後,按下『continue』
  16. 『Review Changes』畫面,以上確認各個資訊正確,按下『Continue』
  17. 『First Run Command』畫面確認他跑完且正確(綠勾勾),,按下『Continue』
  18. 結束安裝畫面,按下『Finish』

 


Verification

  1. 此章節步驟不管在虛擬機或實體機上皆相同。
  2.  要測試以下功能,必須在有服務的主機上。
    1. 例如:YARN服務安裝在Master Host-02  / All Worker Host上,就要在Master Host-02/ All Worker Host上測試。不能在沒有安裝YARN服務的Master Host-01上測試。

基本驗證

會到Web管理主畫面 (http://$:7180),檢查是否有亮紅燈的情況。

  1. 若有,請一個個查看並解決
  2. 若無,恭喜你,安裝成功 。可以開始進行功能性與效能性驗證

功能性驗證

HDFS

CMD

								$ echo "This is a test for HDFS' operation." > /tmp/test.txt
								$ cat /tmp/test.txt
								$ sudo -u hdfs hadoop fs -ls /
								$ sudo -u hdfs hadoop fs -put /tmp/test.txt /tmp
								$ mv /tmp/test.txt /tmp/test_org.txt
								$ sudo -u hdfs hadoop fs -get /tmp/test.txt /tmp
								$ cat /tmp/test.txt

驗證:1和7的檔案內容相同

YARN

CMD

sudo -u hdfs hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100

Impala 

1.進入 impala-shell 

CMD

$ sudo -u hdfs impala-shell
$ connect ${Impala Daemon};

2.建立 table

CMD

create table test(id int, name string);

3.插入資料到 table

CMD

insert into table test values(1, "athemaster");

4. 檢查 table

CMD

select * from test;

5. 刪除 table

CMD

drop table test;

 

Hive

1.進入 Hive shell 

CMD

$ beeline
beeline>!connect jdbc:hive2://$:$ $ $

[小秘笈 Tip]

$ → 安裝Hive服務那台機器的IP

$ → 10000

$ → hdfs

$ → (null)

2. 建立 table

CMD

$ create table test(id int, name string);

3. 插入資料到 table

CMD

 insert into table test values(1, "athemaster");

4.檢查 table

CMD

select * from test;

5.刪除 table

CMD

drop table test;

 

HBase

1.進入 HBase shell 

CMD

$ hbase shell

2.建立 table

CMD

create 'Contacts', 'Personal', 'Office'

3.插入資料到 table

CMD

$ put 'Contacts','1000','Personal:Name','John Dole'
$ put 'Contacts','1000','Personal:Phone','1-425-000-0001'
$ put 'Contacts','1000','Office:Phone','1-425-000-0002'
$ put 'Contacts','1000','Office:Address','1111 San Gabriel Dr.'
$ scan 'Contacts'

4.讀取 data

CMD

	$ get 'Contacts','1000'

5.刪除 table

CMD

$ disable 'Contacts'
$ drop 'Contacts'

 

效能驗證

Network IO

1.下載netperf.tar.gz並上傳到Master Host上/tmp

範例

 scp -rp netperf.tar.gz kenlin@192.168.1.111:/tmp/

2.從Master Host傳檔案到另外一台Worker Host

3.解壓縮到/tmp

CMD

cd /tmp
tar zxvf netperf.tar.gz 

4.移動/tmp/netperf-2.7.0/usr_bin//usr/local/bin

CMD

sudo mv -v /tmp/netperf-2.7.0/usr_bin/* /usr/local/bin/

5.Master Host當Server,執行以下指令啟動server

CMD

netserver -4 -L $ -p 60000

6.Worker Host當Client,執行如下

CMD

[root@datanode04 ~]# netperf -H $ -p 60000 -l 60 -t TCP_STREAM

 

[netperf指令解釋]

-H host:指定遠端運行netserver的host IP地址。
-l testlen:指定測試的時間長度(秒)
-t testname:指定進行的測試類型,包括TCP_STREAM,UDP_STREAM?等等。

TCP_STREAM: 從client到server採用TCP傳輸的速度。

UDP_STREAM: 從client到server採用UDP傳輸的速度。

 

Disk IO

1.Linux硬碟寫入速度測試

CMD

time dd if=/dev/zero of=/var/test bs=2k count=1000000

2.Linux硬碟讀取速度測試

CMD

time dd if=/var/test of=/dev/null bs=2k

3.移除測試資料

CMD

rm -rfv /var/test

 

HDFS

1.打包CDH Percal檔

CMD

cd /var/www/html/cdh5/parcels/5.7
cp -rfv CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel-1
tar cvf /tmp/test CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel-1
chmod 777 /tmp/test

2.執行驗證,指令如下

CMD

time cat test
time sudo -u hdfs hadoop fs -ls /
time sudo -u hdfs hadoop fs -put /tmp/test /tmp
time mv -v /tmp/test /tmp/test_org
time sudo -u hdfs hadoop fs -get /tmp/test /tmp
time diff /tmp/test /tmp/test_org

3.還原環境

CMD

rm -rfv /tmp/test*
rm -rfv /var/www/html/cdh5/parcels/5.7/CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel-1

 

MapReduce

CMD

sudo -u hdfs hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100

關於 Athemaster

炬識科技股份有限公司 (AthemasterCO., Ltd.)融合商業軟體與開源技術,滿足客戶在企業數據儲存、處理與分析上現在與未來的需求。企業級Hadoop解決方案領導廠商  Cloudera Inc. 的市場行銷戰略合作夥伴、亞太技術服務合作夥伴、銀級代理商。

Back to list.
Prev
將 CDH 5.8.3 原先配置的 Oracle JDK 1.7 置換為 Open JDK 1.7
將 CDH 5.8.3 原先配置的 Oracle JDK 1.7 置換為 Open JDK 1.7
Next
發佈:Cloudera Data Science Workbench Release 1.4
發佈:Cloudera Data Science Workbench Release 1.4