Leo Yeh's Blog

SAS Viya (2)

教學目標

初步了解如何部署 SAS Viya 3.2 中的 Visual Analytics 8.1 解決方案,以利進行商業分析之應用。

重點概念

部署 SAS Viya 3.2 中的 SAS Visual Analytics 8.1 解決方案主要有五大階段,分別為:

  1. 了解概念與架構。
  2. 確認基礎架構的需求。
  3. 進行作業系統的前置作業。
  4. 安裝 SAS 解決方案。
  5. 驗證應用程式和服務。

了解概念與架構

當我們要部署 Viya 3.2 則將會需要了解 Viya 3.2 架構和確認 Linux 伺服器符合最小需求的硬體規格,以及確認擁有 root 或 sudo 權限的使用者可以存取 Linux 伺服器,接著為了自動下載 SAS 解決方案相關的軟體,所以必須先確認 SAS 軟體訂單內容, 以及確認是否能夠從 Linux 伺服器存取外部網際網路,若無法存取則請確認是否可以存取本機 Yum 的儲存體,此外為了要能夠登入 SAS 解決方案進行線上網站操作,所以需要了解 LDAP 伺服器的安裝與設定,最後我們將會 Ansible 工具在 Linux 伺服器中進行自動化部署。

其中若是 SAS Visual Analytics 8.1 on Viya 3.2 的架構則主要分為三大部份,分別為雲端分析服務 (Cloud Analytic Service,CAS)、無狀態服務 (Stateless Services) 和有狀態服務 (Stateful Services)。一般來說在雲端分析服務,主要包括 Controller 和 Workers,無狀態服務包括網頁應用程式和微服務,以及有狀態服務包括第三方服務和程式設計服務。我們主要會透過 Ansible 工具透過設定的方式從 Yum 套件中自動安裝有狀態服務、無狀態服務、雲端分析服務 Controller 和雲端分析服務 Workers。

確認基礎架構的需求

環境配置

主機類型 主機名稱 IP 作業系統 CPU 記憶體 硬碟空間
CAS Controller sas-controller-1.company.com 196.168.0.1 Red Hat Enterprise Linux 7.x Intel Xeon CPU with 4 cores x86 architecture with a minimum speed of 2.6 GHz 64 GB of RAM Memory clock speed of 1600 MHz 2 x 300 GB 10,000 RPM
CAS Application sas-application-1.company.com 196.168.0.2 Red Hat Enterprise Linux 7.x Intel Xeon CPU with 4 cores x86 architecture with a minimum speed of 2.6 GHz 64 GB of RAM Memory clock speed of 1600 MHz 2 x 300 GB 10,000 RPM
CAS Worker sas-worker-1.company.com 196.168.0.3 Red Hat Enterprise Linux 7.x Intel Xeon CPU with 4 cores x86 architecture with a minimum speed of 2.6 GHz 64 GB of RAM Memory clock speed of 1600 MHz 2 x 300 GB 10,000 RPM

當我們要分散式部署 SAS Viya 3.2 將會需要確認作業系統、記憶體、CPU、硬碟空間、主機名稱和網路連線的情況,主要會透過下述指令在每一台伺服器進行確認。

確認作業系統

主要透過下述指令確認 Red Hat Enterprise Linux 作業系統的版本。

1
$ cat /etc/redhat-release

確認記憶體

主要透過下述指令確認記憶體的空間配置和使用情況。

1
$ free -g

確認 CPU 資訊

主要透過下述指令確認 CPU 資訊。

1
$ cat /proc/cpuinfo

確認硬碟空間

主要透過下述指令確認硬碟空間配置和使用情況。

1
$ df -h

確認主機名稱

主要透過下述指令確認主機名稱和 IP 位置。

1
$ hostname -f && hostname -i

進行作業系統的前置作業

確認 Repository

主要需先安裝 EPEL 套件,此外若是 Red Hat 無法正常使用 Yum 從 Repository 安裝套件,則建議採用 CentOS 的 Repository。

1
2
3
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum repolist
$ sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7

(注意:每台伺服器皆須確認 Repository。)

安裝 Ansible

請確認版本為 2.1 以上,最好為 2.2.1 版本,確保安裝過程中不會出錯。

1
2
3
$ sudo yum install  ansible
$ ansible --version
$ ansible localhost -m ping

若安裝過程有問題,則請透過下述指令安裝 Ansible 2.2.1,缺點在於每次重開機就要從 virtualenv deployment 重新安裝。

1
2
3
4
5
$ sudo yum install -y epel-release 
$ sudo yum install -y gcc automake openssl-devel python-devel libffi-devel
$ sudo yum install -y python-crypto python-paramiko python-keyczar python-setuptools python-pip python-six python-pip
$ sudo yum install -y python-virtualenv
$ mkdir work && cd work
1
2
3
4
$ virtualenv deployment 
$ source deployment/bin/activate pip install ansible==2.2.1
$ ansible --version
$ ansible localhost -m ping

建立使用者和群組

主要透過下述指令建立使用者和群組,每台伺服器中的使用者和群組 ID 必須一樣。
(注意:每台伺服器皆須建立使用者和群組。)

1
$ groupadd -g 8001 sas && useradd -u 8001 -g 80001 cas

建立 SSH 連線

主要透過下述指令建立伺服器清單。

1
$ vi /etc/gridhosts

1
2
3
192.168.0.1
192.168.0.2
192.168.0.3

接著透過下述指令建立免輸入密碼的 root 登入方式。

1
2
3
$ ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ for hst in `cat /etc/gridhosts`; do scp -r ~/.ssh/ $hst:~; done;

測試是否能夠直接透過 SSH 連線,無須輸入密碼。

1
2
3
$ ssh 192.168.0.1
$ ssh 192.168.0.2
$ ssh 192.168.0.3

安裝相關套件

主要透過下述指令安裝相關套件。
(注意:每台伺服器皆須安裝相關套件。)

1
2
3
4
5
6
7
8
9
10
11
12
$ sudo yum install java-1.8.0-openjdk
$ sudo yum install numactl
$ sudo yum install libXp.x86_64
$ sudo yum install libXp.i686
$ sudo yum install libXext
$ sudo yum install libXmu
$ sudo yum install libXtst
$ sudo yum install xterm
$ sudo yum install libpng
$ sudo yum install xorg-x11-xauth
$ sudo yum install sshpass
$ sudo yum update systemd

停用 SELinux

主要透過下述指令停用 SELinux 。
(注意:每台伺服器皆須停用 SELinux 。)

1
2
3
$ sudo sestatus 
$ sudo setenforce 0
$ sudo sed -i.bak -e 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

停用防火牆

主要透過下述指令停用防火牆。
(注意:每台伺服器皆須停用防火牆。)

1
2
3
4
5
6
$ sudo service iptables stop 
$ sudo chkconfig iptables off
$ sudo service ip6tables stop
$ sudo chkconfig ip6tables off
$ sudo service firewalld stop
$ sudo chkconfig firewalld off

設定限制

主要透過下述指令設定限制。
(注意:每台伺服器皆須設定限制。)

1
$ sudo vi  /etc/ security/limits.conf
1
2
3
*   -    nofile    20480
cas - nofile 20480
@sas - nofile 20480
1
$ sudo vi /etc/security/limits.d/20-nproc.conf
1
2
3
4
*     soft  nproc  65536
cas - nproc 65536
@sas - nproc 65536
root soft nproc unlimited

一般來說這些前置設定作業 SAS 官方皆會產生成 gel.pre-deployment.yml的 Ansible Playbook 搭配 inventory.ini 設定檔進行分散式自動化部署,省去許多時間。

安裝 SAS 解決方案

上傳 SAS Viya Playbook 壓縮檔

上傳 SAS 訂單中 sas_viya_playbook.tgz 檔案至 CAS Controller 伺服器,並且透過下述指令進行解壓縮。

1
$ tar xf sas_viya_playbook.tgz

修改 hosts 設定檔

主要透過下述指令設定 sas_viya_playbook 資料夾中 hosts 檔案。

1
$ vi hosts

1
2
3
sas-controller-1 ansible_ssh_host=sas-controller-1.company.com
sas-application-1 ansible_ssh_host=sas-application-1.company.com
sas-worker-1 ansible_ssh_host=sas-worker-1.company.com

可以參考官方安裝文件中,sas-visual 以 sas-application-1 為主,而 sas-stateful 則以 sas-controller-1 為主,此外記得將 sas-worker-1 加入至 [sas-casserver-worker] 設定中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
[AdminServices]
sas-application-1

[CASServices]
sas-controller-1

[CoreServices]
sas-controller-1

[DataServices]
sas-controller-1

[HomeServices]
sas-application-1

[ReportServices]
sas-application-1

[ReportViewerServices]
sas-application-1

[ThemeServices]
sas-application-1

[programming]
sas-application-1

[configuratn]
sas-controller-1

[consul]
sas-controller-1

[httpproxy]
sas-controller-1

[pgpoolc]
sas-controller-1

[rabbitmq]
sas-controller-1

[sasdatasvrc]
sas-controller-1

[sas-casserver-primary]
sas-controller-1

[sas-casserver-worker]
sas-worker-1

[viprESM]
sas-controller-1

[sas-all:children]
AdminServices
CASServices
CoreServices
DataServices
HomeServices
ReportServices
ReportViewerServices
ThemeServices
programming
configuratn
consul
httpproxy
pgpoolc
rabbitmq
sasdatasvrc
sas-casserver-primary
sas-casserver-worker
viprESM

修改 vars.yml 設定檔

主要透過下述指令修改 vars.yml 設定檔。

1
$ vi vars.yml

設定快取資料夾

1
2
3
4
5
6
7
8
9
CAS_CONFIGURATION:
env:
CAS_DISK_CACHE: /sas/temp
cfg:
#gcport: 0
#httpport: 8777
#port: 5570
#colocation: 'none'
colocation: 'hdfs'

設定 CAS Controller 伺服器。

1
2
3
4
5
6
7
8
9
10
11
12
13
INVOCATION_VARIABLES:
sas-controller-1:
pgpoolc:
- PCP_PORT: '5430'
PGPOOL_PORT: '5431'
SANMOUNT: '{{ SAS_CONFIG_ROOT }}/data/sasdatasvrc'
SERVICE_NAME: postgres
sasdatasvrc:
- NODE_NUMBER: '0'
NODE_TYPE: P
PG_PORT: '5432'
SANMOUNT: '{{ SAS_CONFIG_ROOT }}/data/sasdatasvrc'
SERVICE_NAME: postgres

設定 JAVA 和 HADOOP 設定。

1
2
3
4
5
CAS_SETTINGS:
1: JAVA_HOME=/usr/lib/jvm/jre-1.8.0
2: LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/lib/amd64/server
3: HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop
4: HADOOP_NAMENODE=controller01.company.com

評估系統

主要透過下述指令在開始安裝前,先進行系統的評估。

1
$ ansible-playbook -i hosts system-assessment.yml

開始安裝

主要透過下述指令開始安裝 SAS Viya 3.2。

1
ansible-playbook -i hosts site.yml

重設密碼

主要透過下述指令重設 sasboot 的使用者密碼。

1
2
$ grep sasboot /var/log/sas/viya/saslogon/default/sas-saslogon_*
Reset password for initial user sasboot using link: /SASLogon/reset_password? code=[password]

主要透過瀏覽器開啟 /SASLogon 進行密碼重設。

1
$ firefox http://sas-controller-1.company.com/SASLogon/reset_password?code=[password]

設定 LDAP 連線登入

主要透過瀏覽器開啟 /SASEnvironmentManager 設定 LDAP 連線登入,詳細設定步驟可以參考官方教學影片。

1
$ firefox http://sas-controller-1.company.com/SASEnvironmentManager/configuration

驗證應用程式和服務

確認服務狀態

主要透過下述指令確認 SAS Viya 服務運作的狀態。

1
$ sudo service sas-viya-all-services status

測試 SAS Environment Manager 伺服器

主要透過瀏覽器開啟 /SASEnvironmentManager 查看 SAS Viya 目前運作的情況。

1
$ firefox http://sas-controller-1.company.com/SASEnvironmentManager/configuration

測試 SAS Visual Analytics

主要透過瀏覽器開啟 /SASHome,接著點選 SAS Visual Analytics 進行匯入資料和建立報表的操作,詳細設定步驟可以參考官方教學影片。

1
$ firefox http://sas-controller-1.company.com/SASHome

(註: 若資料上傳有錯誤,可以試試看 $ chmod -R 777 /sas 指令。)

測試 SAS Studio

主要透過瀏覽器開啟 /SASStudio 進行執行程式的驗證,詳細設定步驟可以參考官方教學影片。

1
$ firefox http://sas-controller-1.company.com/SASStudio

總結 SAS Viya 3.2 的安裝與設定相較於 SAS 9.4 搭配 Ansible 更能夠進行自動化部署,更多資訊可以參考官方教學影片和官方文件,或者請洽 SAS 原廠顧問。

相關資源

⬅️ Go back