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 組態或叢集調校。