大數據乾貨分享:大數據集群的自動化運維實現思路

大數據乾貨分享:大數據集群的自動化運維實現思路

摘 要

IT公司的數據平臺是支撐大規模數據處理、數據決策支持的重要基礎設施,隨著大數據及人工智能技術的發展,大數據集群規模變得越來越大。然而,如何快速、高效的管理好成千上萬臺的大數據集群成為了很多大數據工程師的奮鬥目標,設計實現合理的自動化運維繫統將使大數據集群的管理事半功倍。

本文將從大數據集群面臨的挑戰、自動化運維繫統的設計原則、工具選擇等方面闡述大數據集群的自動化運維實現思路。

大數據集群面臨的挑戰

Hadoop生態系統組件:


大數據乾貨分享:大數據集群的自動化運維實現思路


1、服務器規模大

由於海量數據的存儲需求,大數據集群通常服務器規模比較大,例如,阿里巴巴雲梯Hadoop集群、騰訊TDW系統單個集群均超過5000臺的服務器,幾百臺至上千臺服務器規模的集群非常普遍,集群規模的增長對故障響應、跨機房容災等方面提出了更高的需求。

2、組件之間的依賴關係複雜

大數據集群通常需要部署多個框架,Hadoop生態系統包含了分佈式存儲、分佈式就算、NoSQL系統、實時計算、流式計算、數據倉庫等各個組件,以Hadoop本身為例,YARN及Hbase依賴HDFS系統,而HDFS系統又包括Namenode、SecondaryNamenode、Datanode等不同的角色,各個角色之間的啟動也有依賴順序關係。

3、 橫向/縱向擴展需求多

從橫向擴展來看,大數據集群通常需要隨著數據量的增長而進行集群的擴容,從縱向擴展來看,每個公司的不同產品、不同業務線需要部署多個不同的集群。

4、故障處理頻繁

由於集群規模大,服務器多,大數據集群的硬件故障、系統故障等問題發生頻繁,以我曾經負責的大數據集群來看,總計三千臺服務器,超過6萬塊硬盤,每週更換的損壞磁盤在40塊左右,這種故障頻率對傳統的故障處理流程帶來了挑戰,亟須建立自動化的故障處理方式來簡化工作量。

為什麼大數據平臺更適合自動化運維?

1、軟件體系高度標準化

目前,IT公司的的大數據平臺普遍採用Hadoop生態系統各個組件,開源產品的工具設計更注重通用性、標準化等方面的要求,因此,在軟件的自動構建(普遍採用Maven工具)、API、測試用例(普遍實現了單元測試)、指標監控(http接口)等均具比各類自研系統更加規範。

2、服務器配置高度收斂

儘管大數據集群的規模大,但是集群在達到一定規模後,服務器的配置趨向於收斂特性,即大量的服務器的硬件、系統、部署的軟件均是一致的,這就為自動化運維繫統的設計帶來了巨大優勢。

自動化運維繫統設計原則

1、標準化

自動化前提是標準化,在實現系統自動化之前,應該對操作流程進行一次完善的標準化

2、高可用

大數據系統往往都是高可用的系統,為了提升整個系統的穩定性和可用性,自動化運維繫統也需要設計成高可用,避免因為自動化運維繫統的故障導致大數據平臺出現無法服務的情況。

3、冪等性

簡單來說,冪等性指的是一個操作多次執行所產生的影響均與一次執行的影響相同。在大數據系統架構中,經常存在部分失敗的情況,需要多次運行相同的部署命令,這就需要系統在重複執行的情況下,不會出現異常。

4、可回滾

所有自動化操作均需涉及為可回滾,任何一種改變操作,都應該保留相應的數據、代碼、日誌,並做合理備份,保證在任何一個步驟出現問題的時候,自動化運維繫統可以實現回滾至之前的狀態。

5、高效率

大數據系統集群可以達到成千上萬臺服務器的規模,一次操作需要在短時間內完成所有服務器的覆蓋,因此自動化系統的運行效率需要提高,一般需設計可配置的併發運行數,達到對上線效率的要求。

實現路徑

典型的大數據平臺自動化運維繫統,應該包含OA系統(實現頁面操作、工作流管理)、CMDB(配置管理數據庫)、配置管理工具、堡壘機(中控機)、定時任務系統、持續集成系統等。

Hadoop自動化運維繫統典型架構:


大數據乾貨分享:大數據集群的自動化運維實現思路


自動化運維工具選擇

1、Ansible

Ansible是目前github上最受歡迎的開源自動化工具,使用Python語言開發,與Puppet、Slat等工具相比,Ansible無需在被管理的機器安裝agent,而是通過ssh進行管理,Ansible的更加的簡單易用並且功能強大。

2、Puppet

puppet是一種Linux、Unix平臺的集中配置管理系統,基於C / S架構,使用ruby語言,可管理配置文件、用戶、cron任務、軟件包、系統服務等。puppet把這些系統實體稱之為資源,puppet的設計目標是簡化對這些資源的管理以及妥善處理資源間的依賴關係。

3、SaltStack

SaltStack是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能。SaltStack基於Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建。

通過部署SaltStack環境,可以在實現:在成千上萬臺服務器上做到批量執行命令;根據不同業務特性進行配置集中化管理、分發文件、採集服務器數據、操作系統基礎及軟件包管理等。

綜上所述,Ansible是目前Devops業界非常活躍的工具,在使用和部署上也非常方便(僅需安裝控制端,無需部署agent),在小批量的集群上建議使用Ansible。如果集群規模較大(超過1000臺)且對運行速度要求更高,可以考慮Salt和Puppet(對Python做二次開發選用Salt,熟悉Ruby則可選擇Puppet)。

最後,小編這裡也整理了更多的大數據相關資料,可以分享給大家。

關注 轉發文章;後臺私信:“資料”。需要就來領取吧。

大數據乾貨分享:大數據集群的自動化運維實現思路

大數據乾貨分享:大數據集群的自動化運維實現思路

大數據乾貨分享:大數據集群的自動化運維實現思路


分享到:


相關文章: