Leo Yeh's Blog

SAS 系統管理 (115)

教學目標

初步了解如何解決 SAS 無法存取 Hadoop 平台中資料檔案問題的基本概念。

重點概念

首先當我們按照「SAS Visual Analytics 7.5: Installation and Configuration Guide (Distributed SAS LASR)」官方文件部署完成 SAS Visual Analytics 視覺化報表分析平台之後,基本上是無法直接使用「SAS Plug-ins for Hadoop」相關套件,而是需要按照另一份「Deploying the SAS High-Performance Analytics Infrastructure」官方文件中的章節中主要提供部署 SAS 高效能分析基礎架構的步驟進行安裝和設定,所謂 SAS 高效能分析基礎架構主要是 SAS LASR Analytic Server 的基礎,根節點主要部署在網格伺服器主機上,工作節點則部署在 Hadoop 叢集中的其它每台伺服器上,但是這個步驟是非必要的步驟,而非必要的步驟,其中主要包括以下內容,分別為:

  1. SAS High-Performance Analytics environment。(必要)
  2. SAS High-Performance Computing Management Console。(非必要)
  3. SAS Plug-ins for Hadoop。(非必要)

其中 SAS High-Performance Computing Management Console 主要是一種網站應用程式的工具,其將能夠減輕分散式運算環境中多台伺服器的管理負擔,至於 SAS Plug-ins for Hadoop 主要是一組 Jar 檔案和可執行檔案,其主要能夠讓 SAS LASR Analytic Server 與位於同一位置 HDFS 中的 SASHDAT 檔案一起使用。

接著有關 SAS Plug-ins for Hadoop 的相關安裝與設定,則需要參考「SAS High-Performance Analytics Infrastructure 3.9: Installation and Configuration Guide」官方文件,以利進行「Co-Located Hadoop」章節的相關設定,當我們使用 SAS Visual Analytics 時主要會依賴於 SAS 資料儲存,並且該資料儲存主要會與 Hadoop 分析叢集上的 SAS High-Performance Analytics 環境位於同一位置中。當我們透過「 SAS Plug-ins for Hadoop 」將能夠在 SAS High-Performance Analytics 環境中讓整個 HDFS 檔案系統均勻的寫入 SASHDAT 檔案區塊,這種均勻的寫入主要提供了 Hadoop 分析叢集中所有伺服器之間平衡的工作負載,並且能夠讓 SAS 分析程序非常快速地讀取 SASHDAT 資料表,請注意 SAS 9 SAS High-Performance Analytics infrastructure 和 SAS Viya 均使用相同的「SAS Plug-ins for Hadoop」,即使在 SAS 9 平台和 SAS Viya 平台皆能夠共享Hadoop 分析叢集的環境,所以需要安裝和設定最新的 Jar 檔案至「/opt/cloudera/parcels/CDH/lib/hadoop」目錄中,分別為「sas.cas.hadoop.jar」、「sas.grid.provider.yarn.jar」和「sas.lasr.hadoop.jar」函式庫檔案。

再來當我們執行從 Hadoop 載入資料至 LASR 的驗證程式碼時,將會發生「WARNING: The datanode running on XXX did not respond. No file blocks are written on that host.」和「ERROR: No Hadoop datanodes are available to perform the operation. Please inform the administrator of the Hadoop cluster that this makes loading data extremely difficult.」的錯誤訊息,此時請按照以下步驟進行確認,分別為:

  1. 確認相關 Jar 檔案皆已經放置正確的目錄中。
  2. 確認相關 HADOOP_CLASSPATH 和 JAVA_HOME 環境變數皆已經在 Hadoop 平台中設定正確。
  3. 確認 SAS 平台和 Hadoop 平台皆已經在變更設定之後,皆已經完成重新啟動所有相關伺服器。

其中我們能夠檢查「/etc/hadoop/conf/hadoop-env.sh」設定檔確認相關 HADOOP_CLASSPATH 和 JAVA_HOME 環境變數皆已經在 Hadoop 平台中設定正確,若是設定正確,則會在設定檔中看到「export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/hdatplugins/HDATHome/lib/*」和「export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera」的相關設定,更進一步確認「HADOOP_CLASSPATH」目錄中是否包括「sas.cas.hadoop.jar」、「sas.grid.provider.yarn.jar」和「sas.lasr.hadoop.jar」函式庫檔案。

驗證程式碼

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
LIBNAME VALIBLA SASIOLA  TAG=HPS  PORT=10011 HOST="<SAS LASR Server URL>"  SIGNER="http://<SAS 平台伺服器網址>:7980/SASLASRAuthorization" ;
LIBNAME HPS SASHDAT PATH="/hps" SERVER="<SAS Server URL>" INSTALL="/opt/sas/TKGrid_3.9/TKGrid/" ;
LIBNAME LOCALDATA BASE "<資料檔案儲存路徑>";
option set=GRIDHOST="<SAS LASR 分析伺服器網址>";
option set=GRIDINSTALLLOC="/opt/sas/TKGrid_3.9/TKGrid";


/* 刪除 LASR 分析伺服器中的表格 */
%MACRO T_LOADLASR(name);
%if %sysfunc(exist(valibla.&name.)) %then %do;
proc datasets lib=valibla;
delete &name.;
run;
%end;

/* 載入本地資料至 Hadoop 平台中 */

proc oliphant host ="<SAS LASR Server URL>"
install="/opt/sas/TKGrid_3.9/TKGrid"
logupdate;
add LOCALDATA.&name blocksize=32M path="/hps" copies=1 replace;
run;

/* 從 Hadoop 平台中載入資料至 LASR 伺服器中 */
proc lasr port=10011
data=HPS.&name add noclass;
performance host="<SAS LASR 分析伺服器網址>";
run;

%mend;

%T_LOADLASR(<SAS 資料表檔案名稱 (必須儲存在資料檔案儲存路徑中)>);

錯誤訊息

1
2
3
4
5
6
7
8
9
WARNING: The datanode running on XXX did not respond. No file blocks are written on that host.
WARNING: The datanode running on XXX did not respond. No file blocks are written on that host.
WARNING: The datanode running on XXX did not respond. No file blocks are written on that host.
ERROR: No Hadoop datanodes are available to perform the operation. Please inform the administrator of the Hadoop cluster that this
makes loading data extremely difficult.
ERROR: No Hadoop datanodes are available to perform the operation. Please inform the administrator of the Hadoop cluster that this
makes loading data extremely difficult.
ERROR: The server did not accept transmission of data to create or replace file '/hps/XXX'.
NOTE: The SAS System stopped processing this step because of errors.

最後如果我們部署 SAS Visual Analytics ,則必須在 Hadoop 平台中的 HDFS 檔案系統中建立兩個目錄,並具有以下權限。

在 HDFS 檔案系統中建立報表專屬目錄

1
2
3
4
hadoop fs -mkdir /hps
hadoop fs -mkdir /vapublic
hadoop fs -chmod 777 /hps
hadoop fs -chmod 1777 /vapublic

此外有關「Co-Located Hadoop」的相關安裝和設定,我們主要能夠按照以下標準流程進行安裝和設定,主要有五大步驟,分別為:

  1. 確保 Hadoop 目前版本符合要求。
  2. 將 SAS Plug-ins for Hadoop 相關套件複製至一個暫時的位置,並且將其進行解壓縮。
  3. 使用適當的 Hadoop 發佈方法部署 SAS Plug-ins for Hadoop 相關套件。
  4. 設定 Hadoop 平台中各種 HDFS 服務屬性。
  5. 重新啟動 Hadoop 平台中的 HDFS 服務和所有相依服務。

其中「SAS High-Performance Analytics Infrastructure」主要支援「Apache Hadoop」、「Cloudera Hadoop」、「Hortonworks Data Platform Hadoop」和「MapR Hadoop」,但是建議使用目前還是主流的「Cloudera Hadoop」,至於 SAS 和 Hadoop 是如何進行整合分析應用,則建議參考「SAS and Hadoop Technology: Overview」和「SAS and Hadoop Technology: Deployment Scenarios」這兩件官方文件。

相關資源

⬅️ Go back