2013年10月6日 星期日

關於AWS Elaster MapReducer (EMR)



話說去年的這個時候參加了AWS 在台灣辦的一場workshop 寫了一篇文章 - [筆記] Technical Workshop: AWS DynamoDB and Elastic MapReduce ,但是也僅此於此,並沒有真的去使用AWS EMR。畢竟如果是為了做實驗,練習或寫程式,在自己電腦開一個VM就夠了,如果沒有真的要做啥大量運算跑到AWS上玩Hadoop感覺就會費浪不少錢,。

對於我的認知來說,AWS EMR 是job-oriented的Service ,適合的情境是把已經有明確要分析的資料存放(或將要存放)在S3,然後透過EMR去S3 撈取資料來分析,此時EMR的強項就是可以快速的幫你開啟一組設定好的Hadoop Cluster (如果想要加速?開啟的Instance數量由你決定),所以我們只需要專注於程式的撰寫,而不用擔心管理的問題。

但是如果是一組要長期間運行(Long Run Hadoop Cluster),要考慮的點可能就不只這些了,可能必須先了解搭配的作業系統是什麼?是哪一家的Hadoop (商業支持度)?是否有好的管理介面?....等問題。

這也難怪Neflix 自己打造了一套建立在EMR上面的Hadoop Cluster 管理介面Genie

source: viethip

HDInsight on Azure 的異軍突起



剛好今年Hadoop Taiwan 2013 微軟的Talk 用雲端實現巨量資料的商業智慧–HDInsight on Azure 引起了我的注意,主要是:

1. HDInsight 他使用的Hortonwork 的Distribution (雖然是Windows 版,用起來可能會不太順手~:P)
2. 在來他的設計就是For Long run Cluster  不像AWS是Job oriented

不過很可惜的是居然沒有把ambari 也包含在裡面,對於一個long run cluster 管理介面還是很重要的,目前他的管理介面看起來還是有點陽春

(有興趣的朋友可以看,資策會的蘇老師寫了一系列詳盡的介紹HDInsight Tutorial)

既然微軟的Azure 也朝這方向前進了,讓我不禁好奇算是領導品牌的AWS EMR 目前有沒有什麼進展?以及想要更加了解他的架構與規劃。


關於Hadoop 的版本


AWS EMR 主要有兩種Distribution 可以選用,一種是Community 版的Apache Hadoop,另一個則是MapR的版本(需要額外收費)。根據我的推測,MapR 應該就是用來彌補商業營運( Long run cluster )的版本。

不過再更深入研究MapR版本前,讓我們先看看到底EMR 所使用的Community 版本的內容吧,實驗方法如下:

先利用EMR介面隨便選一個Example Job(例如word count)開啟了一組Cluster,對於EMR的設定來說只有三種角色的Instance,內容配置如下:

1. Master (包含Name Node 和 Job Tracker)
2. Slave with Data (包含Data Node 和 Task Tracker)
3. Slave  without Data (只有Task Tracker )

而這三種角色分別擁有不同的Security Group ,Default 的設定只允許Master 可以透過SSh登入,其他Slave 的角色是不允許的 (不過可以自行透過Security Group 設定來開啟)。

透過SSH 登入 Master 後 (登入帳號:Hadoop),讓我非常驚訝,因為作業系統不是我們所熟悉的CentOS而是Debian:

debian squeeze
Linux ip-172-31-16-224 3.2.30-49.59.amzn1.i686 #1 SMP Wed Oct 3 19:55:00 UTC 2012 i686 GNU/Linux


而Hadoop 版本則是1.0.3 with YARN (這又是另我驚奇的一點),不過最讓我驚奇的則是EMR居然已經改用JDK 1.7了!?  (請參考:何時Hadoop 才能正式轉換至 JDK7 ?)

> java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) Client VM (build 23.25-b01, mixed mode)


真是處處驚奇啊....然後不管是設定檔放置的位置,與設定的方法與傳統熟悉的都不太一樣,所以很明顯的這就不是要讓你自己方便管理的設計,他們也不預期讓你近來亂搞~:P

所以我才大膽的假設MapR 版本才是真的設計來當做Long run Cluster的版本,畢竟官網上是這樣介紹MapR的:


  • Enhanced ease-of-use and reliability for Apache HBase applications
    • Instant Recovery
    • Zero HBase Administration
    • Continuous Low Latency
    • Full Data Protection with Snapshots
    • Business Continuity with Mirroring
  • Industry-standard interfaces
    • NFS
    • ODBC
  • Management
    • Deployment
    • MapR Control System (MCS)
    • CLI and REST API:

看樣子也得另外花時間好好玩玩看一下MapR 是不是如同他宣稱的這麼厲害~:P

另外想要更深入了解EMR的人也可以參考官方提供的Best Practices for Amazon EMR

Update:

The latest Amazon EMR AMI version contains the following pre-installed software:
  • Hadoop 1.0.3 
  • Java 1.7 
  • Perl 5.10.1 
  • Python 2.6.6 
  • R 2.11 
  • hbase-0.92.0 (開Hbase 必須要開VPC)  
  • hive-0.11.0   
  • pig-0.11.1.1  



張貼留言