Skip to main content

EMR

Overview

  • 可以使用此服務快速執行應用程式的資料密集型任務 例如,Web 索引編列、資料探勘、日誌檔案分析、機器學習、財務分析、科學模擬及生物資訊學研究等
  • 採用Apache Hadoop作為分散處理引擎
  • 有效率地存放和處理從 GB 到 PB 級資料大小的大型資料集
  • Cluster Step
    • 是使用者定義的處理單位,大約對應到一個操作資料的演算法
    • 以 Java、Ruby、Perl、Python、PHP、R 或 C++ 編寫,並以 Java Jar 或串流程式的方式實作的 Hadoop MapReduce 應用程式
  • Cluster States及其意義
    • STARTING – 叢集佈建、啟動和設定 EC2 執行個體 BOOTSTRAPPING – 叢集上正在執行引導操作
    • RUNNING – 目前正在執行叢集步驟
    • WAITING – 叢集目前作用中,但沒有要執行的步驟
    • TERMINATING – 叢集正在執行關閉程序
    • TERMINATED – 叢集已關閉,且沒有發生錯誤
    • TERMINATED_WITH_ERRORS – 叢集已關閉,但發生錯誤
  • Step States及其意義
    • PENDING – 步驟正在等待執行
    • RUNNING – 步驟目前正在執行
    • COMPLETED – 步驟已成功完成
    • CANCELLED – 步驟已在執行前取消,因為之前的步驟故障或叢集在執行該步驟前已終止
    • FAILED – 步驟在執行時發生故障
  • Stop Cluster
    • 主控台中選擇叢集並按一下 "Terminate" 按鈕
    • 使用 TerminateJobFlows API
    • 終止正在執行的叢集,則 Amazon S3 中尚未保存的任何結果都將遺失,而且所有 Amazon EC2 執行個體都會關閉
  • 支援多個叢集同時操作,即使您已在執行一或多個叢集,還是可以隨時建立新的叢集
  • 可以在執行中的叢集新增Step,在任務執行之後可以透過 AddJobFlowSteps API 選擇性地新增更多Step
  • Cluster執行完成後,可以註冊SNS Topic
  • Cluster可以支援3-party plugin

EMR Notebook

  • EMR Notebooks 根據 Jupyter Notebook 提供受管的環境,允許資料科學家、分析師及開發人員使用 EMR 叢集準備和視覺化資料、與同儕協作、建置應用程式以及執行互動分析
  • 需要登入 AWS 管理主控台才能使用
  • 筆記本檔案會以 ipynb 格式儲存到S3
  • 支援語言有:PySpark、SparkR、SparkSQL、Spark (Scala) 和 Python 核心
  • 關閉筆記本編輯器不會影響叢集上正在執行的任何程式碼
  • 版控可以透過Git實現 (Reference),目前支援:Github, Bitbucket, AWS CodeCommit
  • EMR Notebook的權限要透過預先在Cluster加tag實現,Notebook透過tag來限制可以存取的Cluster
  • 一個Notebook同時只能被一個User打開
  • 目前不支援受 Kerberos 保護的 EMR 叢集

Debug

  • 有兩種方式做偵錯:
    • 透過主控台的Debug按鈕
    • SSH進Cluster的EC2機器
  • 可以偵錯 Amazon EMR 目前支援的所有叢集類型,包括自訂 jar、串流、Hive 和 Pig
  • 跟Amazon SimpleDB的關係
    • AWS使用SimpleDB儲存Hadoop jobs, tasks, or task attempts
    • 如果不訂閱SimpleDB,將只能瀏覽Cluster steps和Step logs;而Jobs, Tasks跟Task Attempts會無法偵錯
  • 在SimpleDB刪除除錯紀錄是允許的

Presto (PrestoDB)

  • 開放原始碼分散式 SQL 查詢引擎,可對任何規模的資料進行快速的分析查詢
  • 可以使用 Amazon EMR 在最短的時間內啟動 Presto 叢集,無須進行節點佈建、叢集設定、Presto 組態或叢集調校。