Leo Yeh's Blog

SAS Viya (13)

教學目標

初步了解如何解決無法連線至 Apache Hadoop 中 HDFS 的問題。

重點概念

首先當我們部署完成 SAS Viya 之後,一般來說,我們會從 CASLIB 關聯的實體來源載入至 In-Memory 資料表,此時我們會需要透過 SAS Environment Manager 進行資料的管理,主要有幾個任務,分別為:

  1. 檢查可用的 CASLIBS 和指定任何一個 CASLIB 載入資料表。
  2. 新增新的 CASLIBS。
  3. 載入和卸載資料表。
  4. 刪除載入和卸載資料表和 CASLIBS。
  5. 檢查伺服器的屬性和指定任何函式庫至伺服器,包括函式庫資料表和欄位。

其中在 SAS Viya 中有許多預先定義的 CASLIBS 函式庫之外,我們可以新增 CASLIBS 函式庫,並且指定為 HDFS 類型,此時就會發生 HDFS 連線的問題,為了解決此問題我們將會針對不同 Hadoop 平台的類型,像是 Apache 、 Cloudera 和 Hortonworks ,按照官方文件中附錄 E 的步驟進行設定,但是若我們針對 Apache Hadoop 類型的平台進行設定,則還是會發生一樣的問題,因為官方文件上針對 Apache Hadoop 平台設定的步驟需要進行確認與調整。

確認 vars.yml 設定檔

接著我們到底是哪些針對 Apache Hadoop 平台設定的步驟需要進行調整呢?請先確認 vars.yml 設定檔是否設定正確,主要需要檢查「CAS_CONFIGURATION」項目是否設定「colocation: ‘hdfs’」,以及「CAS_SETTINGS」項目是否設定正確的「HADOOP_HOME」和「HADOOP_NAMENODE」參數值。

確認 HDFS for CAS 外掛檔案

再來我們必須確認 HDFS for CAS 外掛檔案是否放置正確的目錄路徑位置,所有外掛檔案皆能夠在「/opt/sas/viya/home/SASFoundation/hdatplugins/」的目錄中找到,請參考下表。

檔案名稱 檔案路徑
SAS_VERSION $HADOOP_HOME/
sas.cas.hadoop.jar $HADOOP_HOME/share/hadoop/common/lib/
sas.grid.provider.yarn.jar $HADOOP_HOME/share/hadoop/common/lib/
sas.lasr.hadoop.jar $HADOOP_HOME/share/hadoop/common/lib/
sascasfd $HADOOP_HOME/bin/
sashdfsfd $HADOOP_HOME/bin/
start-namenode-cas-hadoop.sh $HADOOP_HOME/bin/
start-datanode-cas-hadoop.sh $HADOOP_HOME/bin/

其中三個 JAR 檔案在官方文件中是指定要放置於「$HADOOP_HOME/share/hadoop/sas」的目錄路徑中,但是當我們重新啟動 Apache Hadoop 平台時將會發現「Class Not Found」 的問題,所以我們可以放置「$HADOOP_HOME/share/hadoop/common/lib」路徑目錄中解決此問題。

確認 HDFS 設定檔

此外也務必再次確認「$HADOOP_HOME/etc/hadoop/hdfs-site.xml」設定檔是否設定正確。

重新啟動 Apache Hadoop 平台

最後雖然官方文件沒有說明要重新啟動 Apache Hadoop 平台中的 DFS 和 YARN 程式,請注意 NameNode 和 DataNode 皆需要重新啟動,但是我們最好重新啟動 Apache Hadoop 平台的 DFS 和 YARN 程式,並且透過「http://localhost:50070」確認 Apache Hadoop 平台是否正常執行,以及透過 SAS Environment Manager 確認 HDFS 類型的 CASLIBS 函式庫是否能夠正常的連線即可,至於是否能夠正常載入資料至 HDFS 中,或者從 HDFS 中載入資料至 CASLIBS 函式庫中又會是新的問題。

總結我們可以透過設定的方式解決無法連線至 Apache Hadoop 中 HDFS 的問題。

相關資源

⬅️ Go back