• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Ansible的數(shù)據(jù)倉庫自動化部署研究與實現(xiàn)

      2023-06-26 13:11:54熊超李滿劉曉莉秦黃劉曉娟
      無線互聯(lián)科技 2023年8期
      關(guān)鍵詞:數(shù)據(jù)倉庫

      熊超 李滿 劉曉莉 秦黃 劉曉娟

      摘要:隨著大數(shù)據(jù)時代到來,企業(yè)對數(shù)據(jù)倉庫的需求日益增加,一個企業(yè)通常需要部署和管理上千臺服務(wù)器,而數(shù)據(jù)倉庫涉及的配置非常復雜。隨著集群的組件逐漸增多,規(guī)模逐漸增大,傳統(tǒng)的運維方式將不再適用,不僅運維難度大,而且效率較低。因此,為了降低運維的難度,提高效率,文章提出一種通過Ansible來運維管理服務(wù)器的方式,利用Ansible的批量系統(tǒng)配置、批量程序部署、批量運行命令等功能,編寫Playbook并且集成到roles中,實現(xiàn)數(shù)據(jù)倉庫系統(tǒng)的快速部署,提高企業(yè)的工作效率。

      關(guān)鍵詞:Ansible;數(shù)據(jù)倉庫;自動部署;Hadoop

      中圖分類號:TP311 ?文獻標志碼:A

      0 引言

      數(shù)據(jù)倉庫是大數(shù)據(jù)背景下的存儲和分析系統(tǒng),能夠支持海量數(shù)據(jù)的存儲和分析,是各大IT企業(yè)的重要組件。中國互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)發(fā)布的第49次《中國互聯(lián)網(wǎng)絡(luò)發(fā)展狀況統(tǒng)計報告》顯示,截至2021年12月,中國網(wǎng)民規(guī)模達10.32億人,較2020年12月增長4 296萬人,互聯(lián)網(wǎng)普及率達73.0%。在如此龐大的網(wǎng)民數(shù)量下,每一天都會產(chǎn)生海量的數(shù)據(jù),而雙十一、618這種購物高峰期的前后一周內(nèi),各大互聯(lián)網(wǎng)企業(yè)的用戶產(chǎn)生的數(shù)據(jù)量和訂單都會激增,所以各大企業(yè)都會在這段時間內(nèi)臨時增加大量服務(wù)器。由于在數(shù)據(jù)倉庫集群中,每增刪一個服務(wù)器都需要對集群中所有節(jié)點進行修改,這就導致運維人員在高峰期將面臨大量的重復任務(wù)。傳統(tǒng)的shell腳本運維方式不僅效率低下,而且需要頻繁地修改和維護服務(wù)器,而Ansible自動化運維,不僅效率高,而且其中的template模塊能夠?qū)ε渲梦募M行動態(tài)修改,完美地解決了高峰期所帶來的大量重復任務(wù),減少了運維人員的工作量,提升了運維的效率[1-2]。

      1 Ansible的工作原理

      Ansible是基于Python的paramiko模塊開發(fā)的一款輕量級自動化運維工具(見圖1),不遵循Client/agents架構(gòu),基于模塊化工作,一共有3 387種模塊,其中包括Command和shell模塊,能夠代替shell腳本完成大部分的工作內(nèi)容。Ansible安裝完成之后會生成/etc/ansible/hosts主機清單文件,在執(zhí)行Ansible命令時,Ansible會訪問這個文件拿到相應(yīng)的所有主機地址,通過SSH來批量執(zhí)行模塊,并且Ansible對shell模塊還做了一些優(yōu)化。通過shell模塊遠程執(zhí)行本地腳本的時候,Ansible會自動將腳本拷貝到目標主機執(zhí)行,完成后還會自動刪除腳本文件,即使在執(zhí)行異常退出時,Ansible也會將遠程腳本刪除,避免了腳本文件堆積[3-4]。

      Ansible有Playbook的定義,Playbook是由一個或多個Play組成的列表。Play的主要功能是將預定義的一組主機,裝扮成事先通過Ansible中task定義好的角色。task實際是調(diào)用Ansible中的一個模塊,將多個Play組織在一個Playbook中,就可以按照一定的順序執(zhí)行預定義的動作。

      在整個數(shù)據(jù)倉庫集群中,如果需要增加或者減少服務(wù)器,就必須修改所有服務(wù)器的配置文件,大部分自動化運維工具對此沒有很好的解決方案,但是Ansible中的template就完美地解決了這個問題。通過Jinja2語言為每一個配置文件編寫一個模板,所有的服務(wù)器都根據(jù)這個模板進行配置。對于需要變動的部分,Jinja2也提供了循環(huán)和分支遍歷提前設(shè)置好的變量文件進行靈活改變,這樣工作人員只需要修改一個文件就可以對所有服務(wù)器的配置文件進行更改。

      但是在實際生產(chǎn)環(huán)境中,用一個Playbook來管理整個數(shù)據(jù)倉庫集群顯然是不合理的,如果僅僅需要更新某一個組件,就需要把整個集群都檢測一遍。因此,Ansible提出了role的定義,工作人員可以將某一個組件的安裝、配置、啟動設(shè)置成一個role,在批量部署和修改的時候通過調(diào)用這個role就能完成這一組件的部署。在需要部署、修改某一組件的時候,工作人員僅需要調(diào)用這一組件對應(yīng)的role,而不是重新部署和配置整個集群。

      在文件結(jié)構(gòu)上,每一個role都對應(yīng)一個文件夾,每一個文件夾都有tasks,files,templates,handlers,vars子文件夾等。其中最主要的就是tasks文件,里面放了很多yml文件,每一個文件都對應(yīng)一個操作,比如安裝、配置和啟動等。此外,文件夾中還有一個main.yml文件,main.yml文件決定了操作的執(zhí)行順序,將需要執(zhí)行的yml文件按照執(zhí)行順序從上到下依次聲明,在role執(zhí)行的時候就會按照順序調(diào)用對應(yīng)的yml文件,從而完成整個組件的部署和修改。

      2 數(shù)據(jù)倉庫集群部署規(guī)劃

      Ansible部署數(shù)據(jù)倉庫集群的過程非常靈活,只需要根據(jù)集群規(guī)劃(見表1),為每一個組件編寫role,再依次執(zhí)行就能完成整個集群的部署。

      為了方便統(tǒng)一管理,提前確定好組件壓縮包目錄、安裝目錄、變量文件以及對應(yīng)組件的壓縮包名稱和安裝名稱,如表2—3所示。

      3 Ansible自動化部署過程

      3.1 基礎(chǔ)環(huán)境配置

      關(guān)鍵配置主要包括:(1)配置SSH免密連接,需要Ansible節(jié)點對集群所有節(jié)點免密登錄。(2)Ansible節(jié)點安裝Ansible。(3)準備集群需要的所有組件的壓縮包。此外還需要完成系統(tǒng)的一些基礎(chǔ)配置,這些基礎(chǔ)配置也都可以通過Ansible來批量完成,例如:執(zhí)行ansible all -m shell -a “sed -i’s/SELINUX=.*/SELINUX=disabled’ /etc/selinux/config”,設(shè)置selinux永久關(guān)閉、執(zhí)行ansible all -m shell-a “systemctl stop firewalld”、ansible all -m shell-a “systemctl disable firewalld”關(guān)閉防火墻并關(guān)閉開機自動開啟,執(zhí)行ansible all -m copy -a “src=path to hosts dest=/etc/hosts”為所有主機添加主機映射等。

      3.2 編寫role并測試

      工作人員創(chuàng)建一個roles目錄,在該目錄中創(chuàng)建需要部署的組件的子目錄:Hadoop,zookeeper,Kafka,F(xiàn)lume,Hive,Sqoop,Spark,Hbase,并在每個子目錄中創(chuàng)建files,handlers,tasks,templates目錄。在編寫role之前創(chuàng)建一個全局的變量文件vars.yml,設(shè)置一個包括集群所有節(jié)點IP的數(shù)組和每個組件所在節(jié)點的IP,并且設(shè)置一些常用的變量,方便在需要的時候進行修改。組件的部署流程大致分為3個步驟——解壓、修改配置文件、啟動,分別對應(yīng)tasks目錄中的3個yml文件:install.yml,config.yml,start.yml。除此之外,還有配置文件的模板文件,Ansible通過模板文件來動態(tài)修改配置文件。

      4 Ansible部署和測試

      編寫好的role不能直接執(zhí)行,在Ansible架構(gòu)中只提供了單個模塊的執(zhí)行命令(ansible)和Playbook的執(zhí)行命令(ansible-playbook)。想要執(zhí)行role必須通過Playbook來調(diào)用role,示例如下:

      ---

      - hosts: all

      remote_user: xx

      vars_files:

      - /home/xx/ansible/roles/vars.yml

      - ...

      roles:

      - { role: hadoop ,tags: ['hadoop'] }

      - { role: spark-standalone ,tags: ['spark-standalone'] }

      - { role: zookeeper ,tags: ['zookeeper']}

      - { role: kafka ,tags: ['kafka'] }

      Playbook的核心元素包括Hosts(主機清單)、tasks(任務(wù)集)、Variables(內(nèi)置變量或者自定義變量)、roles(角色集)、tags(標簽)等。調(diào)用role的時候必須聲明hosts,roles,如果設(shè)置了外部變量文件則必須添加vars_files,引入變量文件,如果需要用到其他用戶執(zhí)行role,可以添加“remote_user: xx”指定連接的用戶,前提是當前用戶對目標主機能夠通過SSH免密登錄。

      在執(zhí)行Playbook之前,通常會在ansible-playbook命令后面加上“--syntax-check”或者“-C”對Playbook進行語法檢測和測試運行,當確認無誤后再真正執(zhí)行部署命令。在Playbook執(zhí)行過程中,藍色的部分表示該步驟跳過執(zhí)行,綠色的部分表示執(zhí)行成功并且不需要做改變的操作,黃色的部分表示執(zhí)行成功并且對目標主機做變更,紅色的部分表示執(zhí)行失敗。

      5 結(jié)語

      市面上有很多專門做數(shù)據(jù)倉庫運維和自動部署的集成工具,比如Ambari和CDH,雖然很方便,功能也比較多,但是不夠靈活。對于Ambari和CDH這種平臺級工具而言,想要進行組件更新非常復雜,必須重新編譯Ambari的源碼才能完成對單個組件的更新。就這一點而言,Ansible很好地解決了這個問題,不僅自身部署靈活,而且各個組件之間的角色互相獨立。不僅如此,Ansible是一個開源的工具,對于大數(shù)據(jù)的初學者而言這是一個不錯的選擇,而且Ansible的部署流程比較偏向底層,在部署過程中能夠讓初學者很清晰地了解到整個數(shù)倉的架構(gòu)。

      參考文獻

      [1]李沁蔓.基于Ansible的服務(wù)器自動化運維技術(shù)研究與實現(xiàn)[J].電子設(shè)計工程,2020(13):23-26,31.

      [2]范永合,楊澎濤,朱應(yīng)科,等.基于Ansible實現(xiàn)Zabbix自動部署[J].電腦知識與技術(shù),2019(35):260-261.

      [3]李湘林,向全,韋美雁,等.基于Ansible自動化運維系統(tǒng)批量部署LAMP架構(gòu)的設(shè)計與實現(xiàn)[J].大眾科技,2021(3):1-4.

      [4]趙創(chuàng)業(yè),唐亮亮,郭威,等.基于Ansible和Flume的海量數(shù)據(jù)自動化采集系統(tǒng)[J].電子設(shè)計工程,2020(3):47-51.

      (編輯 王雪芬)

      Research and implementation of data warehouse automation deployment based on Ansible

      Xiong? Chao, Li? Man*, Liu? Xiaoli, Qin? Huang, Liu? Xiaojuan

      (Guangzhou College of Technology and Business, Guangzhou 510000, China)

      Abstract:? As the big data era, the enterprise growing demand for data warehouse, an enterprise usually need to deploy and manage thousands of servers, which involves the configuration of the data warehouse is very complex, as the big data era, enterprise growing demand for data warehouse, an enterprise usually need to deploy and manage thousands of servers, which involves the configuration of the data warehouse is very complicated, As the components of the cluster gradually increase and the scale gradually increases, the traditional operation and maintenance methods will no longer be applicable, which is not only difficult to operate and maintain, but also inefficient. Therefore, in order to reduce the difficulty of operation and maintenance and increase the efficiency, this paper proposes a way to operate and maintain the server through Ansible. Using the functions of batch system configuration, batch program deployment and batch command running of Ansible, the Playbook is written and integrated into roles to realize the rapid deployment of the data warehouse system, increase the work efficiency of the enterprise.

      Key words: Ansible; the data warehouse; automatic deployment; Hadoop

      猜你喜歡
      數(shù)據(jù)倉庫
      基于數(shù)據(jù)倉庫的數(shù)據(jù)傾斜解決方案研究
      基于數(shù)據(jù)倉庫的住房城鄉(xiāng)建設(shè)信息系統(tǒng)整合研究
      頁巖氣工程大數(shù)據(jù)倉庫建設(shè)與管理系統(tǒng)開發(fā)
      錄井工程(2017年3期)2018-01-22 08:39:50
      分布式存儲系統(tǒng)在液晶面板制造數(shù)據(jù)倉庫中的設(shè)計
      電子制作(2016年15期)2017-01-15 13:39:15
      探析電力系統(tǒng)調(diào)度中數(shù)據(jù)倉庫技術(shù)的應(yīng)用
      基于數(shù)據(jù)倉庫的數(shù)據(jù)分析探索與實踐
      常山县| 建水县| 河东区| 寻甸| 海晏县| 江山市| 炉霍县| 旌德县| 北碚区| 浙江省| 东海县| 珠海市| 呈贡县| 紫云| 惠来县| 泰州市| 麦盖提县| 淳化县| 桐梓县| 宝丰县| 奎屯市| 额济纳旗| 翁牛特旗| 达孜县| 宜宾县| 东辽县| 滕州市| 石景山区| 永州市| 太保市| 徐州市| 青海省| 霞浦县| 桑植县| 宜兰县| 且末县| 秦皇岛市| 建湖县| 海安县| 富平县| 兴仁县|