2013年4月9日 星期二

ApacheCon2013 - Mastering Sqoop for Data Transfer for Big Data

圖片來源:siliconweek


這個Talk同樣是由Cloudera 的工程師 Kathleen Ting 和 Arvind Prabhakar 來輪流報告 (我也不知道為啥他們同一份投影片要輪流穿插講),主講的題目是Mastering Sqoop for Data Transfer for Big Data,不過主要的內容是在講解Sqoop1 的缺陷,以及目前他們在發展的Sqoop2 預計怎麼改上Sqoop1的缺陷。

Sqoop的主要功能就是 SQL to Hadoop and vice versa,而Sqoop1的特色如下:
  • Base on connectors
    • Responsible for meta data lookup,and data transport
    • Majority of connection are JDBC based 
  • Connectors responsible for all supported functionality
    • Hbase import, Avro Support
也就是說Sqoop1 其實很單純只是一個Client side的工具,都必須在Local 執行,且需要Root的權限。此外如下圖所示



圖片來源:sqoop

而 Sqoop1 目前所遇到的挑戰:
  • 只使用原生的JDBC,沒有使用每個平台特定的Driver
    • 例如Oracle 的Driver 所提供的最佳化。
  • 安全問題 
    • 用明碼記錄帳號密碼,甚至把帳號密碼設定在Config File裡
  • Type mapping is not clearly :
  • Client needs access to Hadoop binaries configuration and database
  • JDBC model is enforced (這樣可能造成要符合Hadoop 模式會有問題)
  • Non-uniform funtonality
    • Difference connectors support different capability
  • Overlap / Duplicated functionality
    • Different connectors may implement same capabilities differently
上述的問題都是由 sqoop1 的歷史包袱所造成,因為一開始sqoop是設計給都是給power user 使用,主要用在內部系統有大量的資料在轉移的需求,所以就很少考慮到安全性問題。

為了解決這些問題,在Cloudera所主導開始了 Sqoop 2  (CDH4)的版本,這個版本主要的改變是多了一個Server 當中間者的架構,很多東西都儲存在Server 那邊,目標就是把sqoop從一個Tool變成一個Service,整個架構改成如下圖所示:

圖片來源:sqoop



圖片來源:ApacheCon 2013


Design goals
  • Ease of Use
    • Uniform functionality (不需要specific table?)
    • domain specific interactions 
  • Ease of Extension 
    • No low-level Hadoop knowledge needed
    • No functional overlap between connectors
  • Security and separation of Concerns
    • Role based access and use

主要的改進如下:(不過有些我也還不是很瞭解)


Sqoop提供兩種連線方式 (Connection vs Job meta):
  • Connection (distinct per database)
  • Job (distinct per table)
運作原理如下:
  1. Connectors register metadata
  2. Metadata enables creation of connections and jobs
  3. Connections and jobs stored in metadata repository
  4. Operator runs jobs that use appropriate connections
  5. Admin set policy for connection use

在當下我不太了解,所以有跟講者確認,她說 Connector 由admin 去產生, 工作由operator 拿這個connector 去工作,這樣就不用洩漏帳號密碼。

所以Security方面改善如下:

Support for secure access to external system via role-based access to connection objects
  • Administrator create/edit/delete connections
  • Operator use connection (session base?這點待確認)

Usability $ Extensibity:
  • Connections and jobs use domain specific inputs (Tables, Operations, etc) 
  • Domain isolation and thus easy to understand and use
  • Connectors work with intermediate Data format
  • Any downstream functionality needed is provide by swoop framework
所以新版的Sqoop還是有許多地方需要在研究了解~ (Sqoop2目前是1.99版~XD )

最後幫他們宣傳一下sqoop2 專案還很缺人,現在加入還蠻有機會變commiter唷~XD

Reference:
[1] Apache Sqoop: Highlights of Sqoop 2
[2] Sqoop2 apache wiki

張貼留言