小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Zeppelin: 讓大數據插上機器學習的翅膀

 昵稱42427018 2019-06-21

導語:在數字化、智能化的時代,通過機器學習(Machine Learning)能夠強有力的補充 Hadoop 大數據系統(tǒng)的數據處理能力,充分挖掘大數據的核心價值,一款好的算法開發(fā)平臺能夠讓企業(yè)事半功倍,快速的進行算法實驗和生產使用,Apache Zeppelin 就是這樣一個兼具了 Hadoop 大數據處理和 機器學習/深度學習算法交互式開發(fā)的開源系統(tǒng)。

Apache Zeppelin 是一個可以進行大數據可視化分析的交互式開發(fā)系統(tǒng),在 Zeppelin 中還可以完成機器學習的數據預處理、算法開發(fā)和調試、算法作業(yè)調度的工作,同時,Zeppelin 還提供了單機 Docker、分布式、K8s、Yarn 四種系統(tǒng)運行模式,以適應各類團隊的需求。本文主要從作者工作經驗出發(fā),總結 Zeppelin 的相關實踐經驗。

網易杭州研究院數據科學中心機器學習開發(fā)組負責人 劉勛

Apache Zeppelin Committer,Apache Hadoop Contributor,多年商業(yè)軟件和大數據領域開發(fā)工作經驗,現從事網易猛犸大數據平臺Hadoop和機器學習平臺相關開發(fā)工作。

劉勛在PinCAP Infra Meetup的演講

(以下文字約3000字,預計閱讀需5分鐘)

1
初識Zeppelin

Apache Zeppelin 是一個可以進行大數據可視化分析的交互式開發(fā)系統(tǒng),可以承擔數據接入、數據發(fā)現、數據分析、數據可視化、數據協(xié)作等任務,其前端提供豐富的可視化圖形庫,不限于SparkSQL,后端支持HBase、Flink 等大數據系統(tǒng)以插件擴展的方式,并支持Spark、Python、JDBC、Markdown、Shell 等各種常用Interpreter,這使得開發(fā)者可以方便地使用SQL 在 Zeppelin 中做數據開發(fā)。

對于機器學習算法工程師來說,他們可以在 Zeppelin 中可以完成機器學習的數據預處理、算法開發(fā)和調試、算法作業(yè)調度的工作,包括當前在各類任務中表現突出的深度學習算法,因為 Zeppelin 的最新的版本中增加了對TensorFlow、PyTorch 等主流深度學習框架的支持,此外,Zeppelin將來還會提供算法的模型 Serving 服務、Workflow 工作流編排等新特性,使得 Zeppelin可以完全覆蓋機器學習的全流程工作。

而在平臺部署和運維方面,Zeppelin還提供了單機 Docker、分布式、K8s、Yarn 四種系統(tǒng)運行模式,無論你是小規(guī)模的開發(fā)團隊,還是 Hadoop 技術棧的大數據團隊、K8s 技術棧的云計算團隊,Zeppelin 都可以讓數據科學團隊輕松的進行部署和使用 Zeppelin豐富的數據和算法的開發(fā)能力。

2
Zeppelin在機器學習領域的應用

Zeppelin 整體架構如圖所示,底層基礎設施支持HDFS、S3、Docker、CPU、GPU 等;分布式資源管理支持Kubernetes、YARN 和Zeppelin 物理集群的運行模式,分別對應各種場景的不同需求;計算引擎層支持,支持TensorFlow、PyTorch 深度學習開發(fā)及Python、R、Scala 傳統(tǒng)算法開發(fā),可接入大數據的批處理/流計算框架;最上面的交互開發(fā)層支持通過可視化的方式使用大數據引擎和開發(fā)各種算法。

對于機器學習任務,最核心的毋庸置疑是 ML 庫,然而從整個機器學習平臺處理流程來看,ML 庫所占的比重其實不大,其余的部分,包括配置、數據收集、數據校驗、特征抽取、分析工具、流程管理工具、資源管理、監(jiān)控等環(huán)節(jié),也都是這個綜合性系統(tǒng)應當解決的問題。

此外,在機器學習算法運行之前,我們需要做數據預處理、特征工程、數據清洗,然后才能做(通過機器學習框架)訓練模型,而訓練出來的模型需要存儲,然后對外提供在線服務,完成預測分析。同時,模型的數據庫管理、服務的監(jiān)控、動態(tài)擴縮容等,是其穩(wěn)定運行的保障。從整個工作流來看,工程量非常龐大。好消息是,Zeppelin 社區(qū)逐步完成了對機器學習平臺工作流的滲透,提供了較為完整的可視化交互的支持。

首先,在數據預處理和特征工程方面,從數據導入、數據處理、數據探索、數據抽樣到數據訓練,Zeppelin 已經實現了全覆蓋:數據導入支持 HDFS、S3和RDNMS,數據聚合加工處理支持 Hive、Spark,數據探索是 Zeppelin 的強項之一,數據抽樣、模型訓練和A/B測試則支持Spark。

其次,在模型訓練方面,包括邏輯回歸(LR)、梯度提升樹(GDBT)等傳統(tǒng)機器學習模型,以及等卷積神經網絡(CNN)、循環(huán)神經網絡(RNN)、長短期記憶網絡(LSTM)等常用于圖像、語音、視頻的深度學習模型,Zeppelin 都支持各種主流的庫,針對前者如Python 庫、Spark MLlib、XGBoost,針對后者包括TensorFlow、PyTorch、MXNet等。由于機器學習從業(yè)者常用語言包括Python、Scala、R 等,各種環(huán)境、版本的沖突是一個很大的挑戰(zhàn),Zeppelin 采用 Docker 的部署解決了這個問題。

再次,在模型在線服務方面,模型的管理支持 Hadoop,模型部署支持 Hadoop 和 Kubernetes,模型庫的批處理采用 Spark,增量更新則采用性能更好的 Flink 流計算(以保持模型與時俱進)。

此外,在生態(tài)方面,Zeppelin還和 Hadoop Submarine 做了集成,后者是 Hadoop 社區(qū)開發(fā)的一款機器學習引擎,旨在解決機器學習算法在Kubernetes / YARN 平臺上的批量作業(yè)處理。二者的集成,可以將 Zeppelin 從支持單任務開發(fā)擴展到了支持分布式任務調度的場景。

3
Zeppelin的新特性

為了支持機器學習工作負載,Zeppelin社區(qū)開發(fā)出了很多相關的特性,包括Zeppelin 集群模式(Cluster Mode)、Zeppelin Cluster Docker、Zeppelin On Yarn、多集群支持、動態(tài)配置、模型預測與增量訓練、可視化調參和 Zeppelin WorkFlow 等重要特性。

Zeppelin 集群模式(Cluster Mode)。非集群模式,即只有一個 ZeppelinServer,解釋器可以運行在這個Server 上,但若算法工程師數量很多,用戶對服務可用性的要求可能無法滿足。集群模式下,我們可以同時啟動多個Zeppelin Server,基于Raft 算法選主(Master)、同步,共同對外提供服務。用戶通過 Nginx 反向代理域名訪問這些 Zeppelin 服務。同時,集群模式還提供了 Cluster 元數據管理的能力,集群中所有的 Zeppelin Server 的運行狀況,以及所有的解釋器進程,都會記錄在元數據中,用戶可以通過Nginx 配置訪問不同的 Server,創(chuàng)建不同的解釋器。解釋器進程可以在集群中自動尋找資源最為富余的 Server 來運行,而當某個 Server 掛了且難以恢復,用戶仍然可以通過元數據啟動另外一個 Server,繼續(xù)未完成的工作。Zeppelin 集群模式只需在參數中配置3個服務器的列表,并將其啟動,即可自動組建 Zeppelin 集群,不需要借助 ZooKeeper。通過專門的集群管理頁面,用戶可以清晰看到集群中的服務器、解釋器的數量和運行狀態(tài)。

本機 Docker。無論是單機模式還是集群模式,用戶都可以在本機 Docker 上創(chuàng)建解釋器進程。通過集群模式 Docker,用戶不需要 Yarn 或者 Kubernetes,即可創(chuàng)建 Zeppelin 集群,提供高可用服務,核心功能和Zeppelin On Yarn/ Kubernetes 并無二致,而且部署和維護也很簡單,無需復雜的網絡配置。

Zeppelin On Yarn。Zeppelin 的解釋器可以創(chuàng)建在 Yarn 的運行環(huán)境中,支持Yarn 2.7及以上的版本。Zeppelin 容器的維護需要模擬終端,Zeppelin 支持通過shell 命令進入 Docker 進行維護,如安裝所需的 Python 庫、修改環(huán)境變量等。

多 Hadoop 集群。Zeppelin 支持通過配置,即指定不同的 Hadoop / Spark Conf 文件,即可用一個 Zeppelin 集群,去連接所有的 Hadoop 集群,而無需為所有 Hadoop 集群分別創(chuàng)建多個 Zeppelin 服務,從而簡化管理和維護的復雜度,同時保證服務的可靠性。

動態(tài)配置。Zeppelin 提供服務接口,用戶可以連接到自己的 KDC 或者 LDAP 認證系統(tǒng),獲取所需的信息,以便完成在不同的 Hadoop 集群上的操作。

模型預測與增量訓練。Zeppelin 支持通過 Spark 或者 Flink 的解釋器,使用批處理或者流處理的方式,把用戶新產生的數據結合后臺的模型訓練服務進行增量訓練,并把訓練出來的新模型保存到模型庫中。

可視化調參。不同的機器學習框架有不同的參數配置,甚至不同的算法參數都不同,傳統(tǒng)命令行的方式容易配置出錯,Zeppelin 基于其前端可視化展示能力,將支持針對每個算法自行設置一個參數調整界面,和模型一起發(fā)布,模型使用者可以使用該可視化界面,根據需要動態(tài)地調整參數。

Zeppelin WorkFlow。用戶可以在按照 Zeppelin 提供的一種類似 Azkaban 的數據格式,編寫 Node 之間的依賴,下方形成一個可視化的 WorkFlow 圖,通過拖拽的方式可以編排整個工作流,設置每個節(jié)點的動作。結合參數的配置,用戶可以編寫一個復雜的 Zeppelin 工作流,在右邊設置觸發(fā)的條件,如按時間點、Rest 接口手動觸發(fā),或者按照周期性時間、數據變化來設置。

4
總結

Apache Zeppelin 覆蓋機器學習全流程,讓數據科學工作者能夠以可視化的方式,方便地編寫機器學習算法、調參和進行機器學習任務管理。針對大數據任務的特點,Zeppelin 也做了分布式的優(yōu)化。同時,Zeppelin 還能與其他 Apache 大數據生態(tài)項目也能很好地集成,可以更好地滿足不同團隊的需求。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多