Leo Yeh's Blog

SAS 系統管理 (111)

教學目標

初步了解 SAS 所提供 Hadoop 平台解決方案的基本概念。

重點概念

首先 Hadoop 平台在許多企業中已經應用非常成熟穩定,雖然 Hadoop 平台透過批次處理作業有很大的價值,但是其在支援企業用於管理日常營運的分析工作,並非最佳的選擇。此時我們就能夠透過 SAS 所提供 Hadoop 平台解決方案將強大的分析功能與 Hadoop 平台關鍵優勢進行整合,並且基於儲存和計算資源進行大規模的資料處理,我們能夠透過 SAS 管理和存取儲存在 Hadoop 平台中的資料,而這幾年在大數據應用領域即時查詢分析系統為最常見的應用情境,通常會有以下特點,分別為:

  1. 查詢網路延遲非常低 (以毫秒為單位)
  2. 查詢條件多維度 (支援 SQL 查詢語法)
  3. 查詢範圍非常大 (幾億筆資料)
  4. 查詢结果非常小 (幾十筆至幾千筆資料)
  5. 查詢同時處理要求非常高 (幾百個至幾千個同時處理)

而當企業導入 Hadoop 平台建立即時查詢分析系統,則主要會使用 HBase 、 Hive 、 Impala 、 …等服務元件,除此之外更建議透過 SAS Enterprise Guide 進行資料分析或 SAS Enterprise Miner 建立資料探勘的模型,而目前 SAS 9 主要支援 Cloudera CDH 6.0、Hortonworks HDP 3.0、Amazon Web Services EMR 5.13、Microsoft Azure HDInsight 3.6、… 等企業版本的 Hadoop 平台,當然針對不同的 Hadoop 平台所支援的功能也會有所不同,請參考官方網站。此外傳統的 SAS 處理涉及從資料來源中擷取資料,並且將其提供給SAS 伺服器進行處理,以及 SAS 更能夠直接與 Hadoop 平台協同作業,減少資料移動且確保資料安全,以利透過最佳方式解決特定的商業問題,而為了減少資料移動,SAS 將能夠直接在Hadoop 平台中處理資料,也就是 SAS 將程式碼直接傳送至 Hadoop 平台的節點中進行資料處理,此時 SAS 不是從資料來源中擷取資料,並且將資料提供給 SAS 伺服務,而是儲存在 Hadoop 平台中,以利進行分散式的資料處理。

接著所謂 Hadoop 主要是由 Apache Lucence 創辦人 Doug Cutting 所開發,起源於 2002 年的 Apache Nutch 開放原始碼的網路搜尋引擎專案,在 2003 年 Google 發表有關 GFS 分散式檔案系統的論文,在 2004 年 Google 發表 MapReduce 處理資料之程式模型的論文,而 Nutch 專案的開發人員皆在隔年將論文進行實作,並且在 2006 年開發人員由 Nutch 中抽離出一個獨立的 Lucene 子計畫,命名為 Hadoop,一直到 2008 年 Hadoop 已經成為 Apache 的頂級計畫,至於 Hadoop 已經被許多企業採用,並且 Hadoop 提供了許多服務元件,並且由相關服務元件所組成 Hadoop 生態系統,像是 HDFS 、 HBase 、Hive 、 Oozie 、 Pig 、 Sqoop 、 ZooKeeper 、 YARN 、Impala、 … 等服務元件。其中所謂 HDFS 主要是 Hadoop 的檔案系統,其主要是提供分散式資料儲存和處理,其具有容錯性和可擴展性,以及主要會將檔案管理為大小相等的區塊,並且在 Hadoop 平台中的機器上進行複製,HDFS 支援所有類型的資料檔案格式。所謂 Hbase 主要是 Hadoop 的資料庫,基於 Java 建置在 HDFS 上的一個非關聯性的分散式資料庫,並且能夠克服 HDFS 上隨機存取的缺點,其主要是透過所有節點的記憶體儲存雜湊表用於儲存索引,以利滿足即時查詢的需求。所謂 Hive 主要 Hadoop 的資料倉儲,其主要提供 SQL 查詢語言 HiveQL 用於資料查詢、分析和匯總。所謂 Impala 主要是 Cloudera 為了解決 Hive 查詢速度的問題所開發的查詢引擎。因此所有大量資料將能夠以任何檔案格式儲存在 HDFS 中,但是卻有無法快速隨機存取的缺點,此時我們就能夠透過 HBase 以鍵值儲存的方式進行快速隨機存取,但是卻有無法透過 SQL 進行查詢的缺點,此時我們就能夠透過 Hive 中的 hive-hbase-handler.jar 函式庫存取 HBase 中的資料表,但是卻有查詢速度的問題,此時我們就能夠使用 Impala 向儲存在 HDFS 和 HBase 中的資料發出 HiveQL 查詢,而無需移動或轉換資料,並且透過 Impala 以 SQL 查詢語法進行互動操作,將能夠不採用 MapReduce 處理資料的程式模型,而以更低的延遲回應時間處理資料的方法加快查詢速度,至於詳細運作原理,請參考 Cloudera 在 2015 年所發表的官方論文

再來 Hadoop 平台設定檔案主要是與 Hadoop 平台連線的關鍵,設定檔案主要定義如何連線至 Hadoop 平台,並提供系統相關資訊,預設的 Hadoop 平台設定主要有兩種類型,分別為預設檔案和特定於站點檔案,像是 core-site.xml、hdfs-site.xml、hive-site.xml、mapred-site.xml 和 yarn-site.xml,請注意部份 SAS 技術要求需執行步驟以使 Hadoop 平台設定檔案能夠提供 SAS 客戶端進行存取。至於 Jar 檔案是 Java 類別的壓縮檔檔案,而我們需要將 Hadoop 發行的 Jar 檔案部署至 SAS 客戶端中,以利 SAS 能夠作為客戶端連線到 Hadoop 平台,請注意如果更新 Hadoop 平台,則還需要在 SAS 客戶端上更新 Jar 檔案,在許多情況下,如果SAS 程式執行 Hadoop 平台相關存取操作失敗,將可能是因為缺少 Jar 檔案或版本對應不正確。此外 SAS Plug-ins for Hadoop 主要是一組 Jar 檔案和可執行檔案,其能夠使 SAS LASR Analytic Server 和 SAS High-Performance Analytics 環境的其他應用程式在與 Hadoop 平台相同環境中使用儲存在 HDFS 檔案系統中的 SASHDAT 檔案。

最後 SAS 與 Hadoop 平台整合的技術主要能夠將 SAS 強大的分析功能整合至 Hadoop 平台中,並且跨越整個資料到決策的生命週期,我們將能夠透過 SAS 存取和管理 Hadoop 平台中的資料,探索資料並且開發模型,以及在 Hadoop 平台中執行分析模型。此外我們主要能夠透過 SAS/ACCESS Interface to Hadoop 連線至 Hadoop 平台,並且從 Hadoop 叢集存取資料,同時我們也能夠使 SAS 程式中 DATA STEP 分析 Hadoop 平台中的資料,主要透過 FILENAME 敘述從 HDFS 檔案系統中讀取資料,並且將資料寫入 HDFS 檔案系統中,以及透過 PROC HADOOP 送出 HDFS 指令,更進行一步我們能夠透過 SAS/ACCESS Interface to Impala 直接透過 SQL 語法存取 Cloudera Impala 查詢引擎,此外 SAS High-Performance Analytics 將提供支援 Hadoop 平台高度可擴展的記憶體基礎架構,像是SAS High-Performance Data Mining 主要提供高效能的資料探勘程序,能夠讓我們使用 SAS Enterprise Miner 客戶端軟體中描述性,預測性和機器學習方法分析大量的資料應用於建模技術,像是迴歸模型、隨機森林、支持向量機、神經網路、… 等,以及與資料準備,資料探索和評分功能互相整合應用。

相關資源

⬅️ Go back