跳轉到主要內容
公司博客上

開源數據磚在埃德蒙茲集成工具

分享這篇文章

這篇文章從肖恩·艾略特、數據工程技術主管和山姆•舒斯特,主管工程師在埃德蒙。


磚是什麼以及如何對埃德蒙茲有用嗎?

是一個基於雲計算,全麵管理,大數據和分析處理平台,利用Apache火花Beplay体育安卓版本TM和JVM。磚統一分析平台的大賣點是它結合大數據和機器學習。Beplay体育安卓版本

磚降低了門檻和/或時間需要處理大量的數據在幾個方麵:

  1. 磚的筆記本
  2. 集群和創造就業
  3. 通曉多種語言的編程

最後,磚是由活躍的Apache火花的提交者包括許多最初的創造者。正因為如此,埃德蒙茲不僅可以獲得良好的火花的支持,而且最新的版本和框架提供的功能。

磚的筆記本

磚筆記本類似Jupyter筆記本和本質上是一個與一個很好的Web UI REPL火花。他們允許快速開發周期、交互式測試代碼,甚至tb的數據集的可視化(或超出!)範圍內。通過Web UI代碼編程或者你可以從IDE運行jar或雞蛋(注:直接連接到一個IDE的承諾在工作通過一個功能叫做磚連接目前私人預覽)。與最新進展使筆記本電腦的標準在數據工程組織,我們很興奮地看到這種可能性是“筆記本優先”的方法。

簡單的集群和創造就業

磚有一個易於使用的接口來創建集群運行互動和安排工作。這就消除了許多操作障礙我們的內部票係統發出請求,可以很容易地天隻需要幾分鍾。其他的解決方案,比如EMR,正朝著這個方向通過亞馬遜控製台,但他們仍有很長的路要走之前磚一樣容易使用。很大一部分是磚的更好的UI體驗允許用戶沒有太多軟件背景快速撞到地麵集群上運行自己的火花。它甚至提供了易於配置伸縮和auto-termination如此珍貴美元能得救。磚獨有的另一個好處是,他們能提供最新版本的火花以及優越的火花和調優的支持。作為一個公司,我們都努力寫新數據工程項目使用火花框架,這對我們來說是一個重要的考慮因素。

通曉多種語言的編程

磚給自由選擇從五個流行的編程語言以達到結果(注意,使用Java JAR形式)。語言支持筆記本包括Scala, Python, R, SQL和減價。這打開了訪問一個廣泛的背景的人。不再必須是一個Scala或Java專家開發一個可伸縮的分布式編程的工作經驗。

進化在磚

與大多數軟件棧一樣,軟件工程師需要一套工具,圖書館,和過程,允許他們遵循軟件工程最佳實踐。我們沒有什麼不同,需要堅實的方式開發和部署productionalized代碼磚運行時環境。所以,為什麼不預先建立這樣一個係統呢?當我們介紹磚在埃德蒙茲,我們專注於采用框架允許容易說服用戶數據磚可以扮演重要的角色在他們的工作。這意味著有一個強調實現最快的速度。

你可能想知道為什麼我們要研究所政策可能快的速度是一直被視為最重要的因素之一,公司技術的健康。在技術與幾乎所有的東西,有權衡考慮。有絕對沒有有效的檢查和一些標準磚環境意味著每個項目,部署到磚生產技術債務。這債務加起來的時間和降低了團隊的部署周期的速度也是所有用戶的磚。我們需要解決需求在四類:

  • 環境標準
    • 追蹤productionalized工作輕鬆的工作名稱
    • 使透明S3數據位置或表位置輕鬆地確定哪些表是productionalized
    • 確保測試發生在QA和不在生產
  • 源控製
    • 確保代碼寫的方式由一個工程師團隊易於維護。
    • 建立一個執行單元測試的方法
  • 體係結構和庫
    • 建立特定的標準在創造就業機會的進一步簡化磚的創建和維護工作。
  • 操作
    • 建立一個過程來檢查集群的創建
    • 擴展方法之外的“部署”生產調度的筆記本

所以我們建立了什麼呢?

首先,我想喊,我們不是第一個團隊試圖解決這個問題。我們的廣告解決方案團隊已經開發出一種強大的Python的解決方案。這包括同步筆記本與磚的腳本,以及標準化工作空間布局,允許等邏輯分離的工作流服務、配置管理、和當地開發測試。我們稱這個過程為JVM創建我們的框架時項目。

這個項目的目的是擴大我們的能力在磚也滿足以下附加要求:

  • 理想情況下,框架可以使用由JVM語言項目和non-JVM語言項目
  • 理想情況下,框架將處理兒童和筆記本項目
  • 使用現有工具盡可能廣泛應用在公司(如Maven,主要人物(我們內部部署UI),和Jenkins)

這是我們建立:

  • Java REST客戶端(OSS !)
    • 我們隻選擇實現功能和資源,我們需要對我們的構建係統,但建立一個代碼庫,允許額外的功能。我們實現的功能:
      • 集群的資源
      • Dbfs資源
      • 工作資源
      • 圖書館資源
      • 工作區資源
  • Maven插件(OSS !)
    • s3上傳代碼嗎
    • 可以附加/分離圖書館集群
      • 如有需要,足夠聰明重新啟動集群。
    • 可以創建/編輯磚的工作嗎
      • 使用一個模板模型,允許變量注入以及智能缺省值。
    • 可以啟動/停止磚的工作嗎
    • 導出/導入筆記本嗎
    • 可以驗證某些作業屬性,以確保他們遵循標準
  • 磚常見的庫(閉源)
    • 可以獲得應用程序和環境通過不同來源特定運行時屬性嗎
    • 能發出波陣麵指標
    • 可以提交和監控通過Oozie磚的工作嗎
  • 主要人物(我們內部部署UI)集成(閉源)
    • 可以部署一個特定版本的磚工作通過主要人物

它大概是什麼樣子的呢?

高水平這對我們帶來什麼?

  • 環境標準
    • Maven插件驗證工作名稱來跟蹤productionalized工作
    • Maven插件幫助我們段QA /刺激到各自的磚實例
  • 源控製
    • 所有代碼(包括兒童和筆記本來源)必須放到一個Git存儲庫。
  • 體係結構和庫
    • 其他標準建立在創建和維護數據磚工作
  • 操作
    • 創建集群是手工做的,沒有了
      • 建立了一個代碼評審過程通過創建集群描述gitlab項目的一部分。
      • 集群/工作是通過插件自動創建
    • “部署”生產隻是手工編輯筆記
      • 自動部署到生產可再生的方式通過詹金斯/主要人物

為什麼我們開源客戶端和Maven插件嗎?

在埃德蒙茲,我們相信開源技術。貢獻我們所做的將希望允許他人改善與磚的它們是如何工作的,我們希望貢獻者能夠報答他們。你感興趣嗎?將請求提交給一個“良好的第一問題”,在這裏。

你有興趣解決大數據問題或構建工具為軟件工程師和數據科學家嗎?如果是這樣,看看我們空缺職位!

未來的工作

交互式集群管理,我們計劃將功能添加到maven插件,以適應用戶想自動化交互式地創建集群和編纂的管理。

  • 環境屬性和公共圖書館,我們計劃讓這些庫,開發內部使用,一般我們可以開源這個工作。
  • 磚Maven插件API清理——目前API有一些有機成長的痛苦和不一致的設計。2.0.0發布我們的目標之一是讓api更加用戶友好。
  • 移動筆記本第一——這是一個雄心勃勃的目標,將尋求讓筆記本所有工作的切入點。Python庫的形式雞蛋和Scala罐子仍將被用來包含公共功能,但所有工作特定代碼將包含在一個筆記本上。整合我們的工作流與數據磚連接使筆記本電腦的發展會更容易和消除需要花精力同步本地筆記本代碼與數據磚。相反,時間可以花在集成測試的一部分部署管道筆記本工作。

免費試著磚
看到所有公司博客上的帖子
Baidu
map