亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Docker容器的多節(jié)點Hadoop集群快速部署方案

        2022-10-20 03:40:58秦黃劉曉娟李滿劉曉莉
        現(xiàn)代信息科技 2022年13期
        關(guān)鍵詞:環(huán)境

        秦黃,劉曉娟,李滿,劉曉莉

        (廣州工商學院,廣東 廣州 518200)

        0 引 言

        近年來,大數(shù)據(jù)產(chǎn)業(yè)得到了大力發(fā)展,數(shù)據(jù)不再是一串冰冷的數(shù)字,越來越多的企業(yè)開始重視數(shù)據(jù),大學也開始普及數(shù)據(jù)科學和大數(shù)據(jù)專業(yè)。Hadoop 是Apache 開源基金會開發(fā)的分布式系統(tǒng),由HDFS 和YARM 組成。Hadoop 是采用Java 語言開發(fā)的分散計算平臺,適用于大數(shù)據(jù)領(lǐng)域的分布式存儲和計算,是當前廣泛使用的大數(shù)據(jù)計算工具。

        Hadoop 在大數(shù)據(jù)領(lǐng)域中具有舉足輕重的地位,是研究大數(shù)據(jù)技術(shù)的基石。從某種程度上說,一個人對Hadoop 基礎(chǔ)知識掌握的扎實與否決定其在大數(shù)據(jù)技術(shù)道路上能走多遠。在生成環(huán)境下或者是學習大數(shù)據(jù)的過程中,經(jīng)常會遇到因使用場景的不同而應(yīng)用不同集群配置的情況,若采用傳統(tǒng)的部署方式需要進行很多煩瑣重復(fù)的工作,會加大時間成本和生產(chǎn)成本。隨著數(shù)據(jù)量的不斷增大,原有DataNode 節(jié)點的容量已經(jīng)不能滿足數(shù)據(jù)存儲的需求,需要在原有集群基礎(chǔ)上動態(tài)添加新的數(shù)據(jù)節(jié)點,但是傳統(tǒng)的擴容方式過程煩瑣且容易出錯。

        為了實現(xiàn)Hadoop 集群上多節(jié)點的快速搭建和便捷的擴容縮容,在本文中我們提出一種基于Docker 容器快速構(gòu)建多節(jié)點Hadoop 集群的引入方案。

        1 容器虛擬化技術(shù)

        現(xiàn)有的虛擬化技術(shù)包含容器虛擬化與服務(wù)器虛擬化,二者的目標是相通的,目的都是為應(yīng)用程序建立一個孤立環(huán)境,但容器虛擬化技術(shù)與服務(wù)器虛擬化相比更為輕量。

        這是由于服務(wù)器虛擬化技術(shù)是從操作系統(tǒng)層下手,不像傳統(tǒng)的虛擬機技術(shù)那樣虛擬出一套硬件驅(qū)動后,在其上運行一個完整的操作系統(tǒng),對用戶來說相當于使用物理性質(zhì)的虛擬機。而容器虛擬化技術(shù)則不同,它與宿主機共用內(nèi)核,直接將一個應(yīng)用程序及其所運行的環(huán)境依賴打包成鏡像。為了與服務(wù)器虛擬化技術(shù)產(chǎn)生的虛擬機區(qū)分開來,容器技術(shù)產(chǎn)生的環(huán)境就稱為容器。容器技術(shù)的輕量,具體體現(xiàn)為所建立的容器用不上1 分鐘甚至幾秒鐘內(nèi)就可以啟用,遠比需要數(shù)分鐘甚至幾十分鐘才能開啟的傳統(tǒng)虛擬機來得快。

        容器提供了可以在分散且隔離的環(huán)境中運行和維護應(yīng)用程序的功能。因為應(yīng)用程序被制作成擁有完整架構(gòu)體系的鏡像并建立在獨立的容器中,在這種隔離和獨立空間的保證下,可以在給定的物理機器上同時運行多個容器。此外,容器是輕量級且獨立的,又包含運行應(yīng)用程序所需的所有內(nèi)容,因此用戶不需要依賴主機上安裝的內(nèi)容。用戶可以在工作時或生產(chǎn)環(huán)境下快速便捷地共享容器或移植鏡像,并確保與之共享的每一個用戶都能獲得相同環(huán)境下的相同容器或鏡像,有效解決了運行環(huán)境改變而帶來的各個組件之間的兼容性問題。

        綜上,利用Docker 可以實現(xiàn)對環(huán)境的快速構(gòu)建,避免了環(huán)境不一致和依賴沖突等問題。將所有的應(yīng)用、配置和依賴打包進容器中,以便在任何環(huán)境下都能夠有效運行。容器虛擬化技術(shù)藉由鏡像妥善解決了在線和離線環(huán)境的問題,保證生活周期中應(yīng)用或服務(wù)環(huán)境的標準化,非常有利于持續(xù)部署與測試。因此,容器虛擬化技術(shù)迅速成為新興的虛擬化方式,Docker 容器與以往的虛擬化方式相比具有顯著的優(yōu)勢。

        2 Docker 容器技術(shù)

        Docker 容器技術(shù)中包含三個重要組件,分別是鏡像、容器和倉庫。通常來說,鏡像用于創(chuàng)建容器,這與Java語言中的班級與實例的關(guān)系相似。鏡像是靜態(tài)定義,容器是執(zhí)行鏡像時的實體,可以創(chuàng)建、啟動、停止、刪除和暫停容器。在Docker 技術(shù)的原理中,容器表示具有完整的最后一個操作系統(tǒng)的應(yīng)用程序。Docker 容器完全使用沙箱機制,相互之間不會有任何接口,對資源的額外需求很低,運行時不需要專門的虛擬化管理程序,只需占用較小的存儲空間。

        Docker 的倉庫是集中存放鏡像文件的場所,倉庫中存放很多的鏡像,每個鏡像具有不同的標簽用于標注版本和其他信息。當需要在其他服務(wù)器上使用某個鏡像時,就可以直接從倉庫中獲取,也就是說倉庫可為鏡像提供存儲和分發(fā)的服務(wù)。

        2.1 Docker 環(huán)境安裝

        Docker 使用client-server 體系結(jié)構(gòu),Docker 客戶端可以與Docker 守護進程(即Docker 服務(wù)器)建立通信??蛻舳撕褪刈o進程可以在同一系統(tǒng)中運行??蛻舳艘部梢赃B接到遠程Docker 守護進程。Docker 客戶端和Docker 守護進程也可以使用JavaAPI,通過UNIX 插口或網(wǎng)絡(luò)接口實現(xiàn)通信和連接。

        CentOS 是最常用的Linux 操作系統(tǒng),本文使用CentOS7來演示如何搭建Docker 運行環(huán)境,搭建過程比較簡單,可分為以下三步:

        (1)條件準備。選擇Docker 支持的操作系統(tǒng),目前市面上絕大多數(shù)的操作系統(tǒng)Docker 都支持,這里選用的是CentOS 系統(tǒng)的7.9 版本。安裝Docker 引擎,需要具備一個穩(wěn)定的或長期支持的CentOS 版本,不支持測試或存檔版本。

        (2)完成安裝。Docker 的安裝方法有多種,包括yum安裝、rpm 包安裝、便捷非交互式腳本安裝等。

        啟動Docker 服務(wù)并查看服務(wù)狀態(tài),如圖1所示。

        圖1 啟動Docker 服務(wù)

        2.2 Docker 鏡像制作

        Docker 鏡像是Docker 的重要組成部分,一層一層地重疊而成,但鏡像卻是獨立的不可寫入的對象。鏡像內(nèi)是簡單的操作系統(tǒng)且較多使用Linux 操作系統(tǒng),還包括執(zhí)行應(yīng)用程序所需的文件和依賴性軟件包,同時也會根據(jù)不同的應(yīng)用場景疊加應(yīng)用程序。Docker 容器技術(shù)解決了普通虛擬機龐大臃腫的問題。鏡像可以理解為一種構(gòu)建時(build-time)結(jié)構(gòu),而容器可以理解為一種運行時(run-time)結(jié)構(gòu)。

        映像是一個只讀模板,其中包含有關(guān)創(chuàng)建Docker 容器的說明。通常情況下,一個映像是基于另一個映像而存在的,并且映像還具有一些額外的自定義層來實現(xiàn)具體的功能。用戶可以創(chuàng)建自己的映像,也可以使用其他人創(chuàng)建的鏡像,用戶可在Docker 的倉庫中找到其他開發(fā)者發(fā)布的映像。

        如圖2所示,所有的Docker 鏡像都起始于一個基礎(chǔ)鏡像層,在修改或增加新的內(nèi)容時,就會在當前鏡像層之上創(chuàng)建新的鏡像層,比如在centOS7 的鏡像里添加了JDK,那么就會在CentOS7 的基礎(chǔ)鏡像層上添加一個包含JDK 的鏡像層。鏡像運行時應(yīng)用了宿主機的Kernel 內(nèi)核,內(nèi)核的上一層一般是操作系統(tǒng)(比如CentOS、Ubuntu 等),再上一層是運行環(huán)境或應(yīng)用程序服務(wù)(如JDK、Apache 等)。

        圖2 Docker 分層鏡像

        使用docker run 命令從一個鏡像中創(chuàng)建啟動容器,一個鏡像可以創(chuàng)建為多個容器,一旦鏡像通過容器啟動后,二者之間就會產(chǎn)生一定的依賴關(guān)系,另外,容器啟動后,鏡像是無法被刪除的。Docker 鏡像可以從官方公共鏡像倉庫DockerHub 中獲取。鏡像倉庫是容器環(huán)境的重要組成部分,用于保存和管理鏡像文件。DockerHub 中有Docker 官方提供的鏡像和許多社區(qū)開發(fā)者貢獻的鏡像,必要時還可以根據(jù)需要自行定制鏡像。

        制作鏡像的方法主要有兩種:一種是打包鏡像生成的容器,另一種是使用鏡像文件制作鏡像。一般的生產(chǎn)環(huán)境中通常使用Dockerfile 文件來創(chuàng)建并定義用戶所需的應(yīng)用。Dockfile 是由Docker 程序解釋的腳本,Dockerfile 由對應(yīng)于Linux 下的命令構(gòu)成。

        使用Dockerfile 文件制作鏡像的主要流程是先創(chuàng)建一個Dockerfile,在Dockerfile 中自定義創(chuàng)建鏡像的組件,最后生成并測試映像。通過在Dockerfile 文件中輸入相應(yīng)的指令來配置用戶所需的環(huán)境和功能,Dockerfile 中的每條指令都會在映像中疊加一個層。更改Dockerfile 并重新生成映像時,只會重新生成已更改的層?;谶@樣的模式,Docker 與其他虛擬化技術(shù)相比更加快捷。

        在基于Docker 容器快速搭建多節(jié)點Hadoop 集群部署方案中,使用鏡像文件制作鏡像,鏡像層級結(jié)構(gòu)如圖3所示,基礎(chǔ)鏡像為Ubuntu14,在基礎(chǔ)鏡像的基礎(chǔ)上完成依賴包的配置(比如JDK、SSH、wget 等基礎(chǔ)服務(wù)以及環(huán)境變量、免密登錄的配置)。定義Dockerfile 時需要創(chuàng)建一個文件夾作為生成hadoop 鏡像的場所,生成鏡像所需的資源和鏡像文件Dockerfile 都存放在這個文件夾下,此文件夾可以任意命名,但是生成鏡像的文件必須命名為Dockerfile。

        圖3 鏡像層級結(jié)構(gòu)

        3 部署方案

        基于Docker 容器快速搭建多節(jié)點Hadoop 集群部署方案借助阿里云服務(wù)器來完成,利用Docker 容器模擬多節(jié)點,具體性能表如表1所示。

        表1 硬件信息

        集群搭建的軟件環(huán)境如表2所示。環(huán)境搭建完成后,利用設(shè)計好的Dockerfile 創(chuàng)建定制鏡像,再根據(jù)定制鏡像創(chuàng)建容器進行實際搭建。

        表2 組件版本信息

        本方案中Hadoop 集群結(jié)構(gòu)設(shè)計如圖4所示,包含一個主節(jié)點、2 個從節(jié)點,由于不涉及存儲性能要求,故本方案中的HDFS 采用默認副本數(shù),不進行額外修改。

        圖4 Hadoop 集群結(jié)構(gòu)

        3.1 集群部署

        本方案先在阿里云服務(wù)器上搭建好集群間的虛擬網(wǎng)絡(luò),并通過定制鏡像完成1 個主節(jié)點容器和2 個從節(jié)點容器的創(chuàng)建,然后進入主節(jié)點容器,通過腳本啟動Hadoop 集群,通過訪問Hadoop 集群的主節(jié)點50070 即可查看集群情況。需要注意的是,根據(jù)容器啟動時的端口映射規(guī)則,此時主節(jié)點的50070 會映射宿主機的50070 端口,因此實際上是通過訪問宿主機的50070 端口來獲取集群情況,如圖5所示,集群狀態(tài)是活躍的。

        圖5 集群情況

        3.2 集群測試

        WordCount 可以說是最簡單的MapReduce 程序,多節(jié)點Hadoop 集群部署完成后,以詞頻統(tǒng)計WordCount 為例,對集群進行測試,驗證集群運行情況。

        以詞頻統(tǒng)計WordCount 為例,對集群進行測試,詳情為:

        (1)WordCount 的過程如圖6所示,按照mapreduce編程規(guī)范分別編寫Mapper、Reducer,完成詞頻統(tǒng)計。

        圖6 MapReduce 程序工作流程

        (2)在完成必要的準備工作之后執(zhí)行WordCount 程序,程序運行情況如圖7所示。

        圖7 WordCount 程序運行情況

        (3)監(jiān)控WordCount 程序運行時硬件資源使用情況。由前文可知WordCount 程序是MapRecuce 程序,需要消耗計算資源,因此圖8CPU 使用情況符合測試預(yù)期。

        圖8 CPU 使用情況

        WordCount 程序的目的是通過MapReduce 計算框架詞頻統(tǒng)計,需要占用較多內(nèi)存,所以如圖9所示的內(nèi)存使用情況符合測試預(yù)期。

        圖9 內(nèi)存使用情況

        如圖10所示,系統(tǒng)負載量跟活躍進程數(shù)量有直接關(guān)系,因此在WordCount 程序運行期間系統(tǒng)負載呈明顯上升趨勢是符合測試預(yù)期的。

        圖10 系統(tǒng)負載情況

        (4)通過瀏覽器監(jiān)控界面查看統(tǒng)計結(jié)果,如圖11所示。

        圖11 統(tǒng)計結(jié)果

        4 結(jié) 論

        傳統(tǒng)的應(yīng)用程序開發(fā)完成后,需要準備很多的設(shè)置說明文檔以幫助其他開發(fā)人員進一步開發(fā),而Docker 的封裝和隔離特性讓煩瑣的部署配置工作變得簡單。鏡像中引入各種復(fù)雜的安裝配置環(huán)境,且Docker 虛擬出一套完整的操作系統(tǒng),所以兼容性問題得到保障,同時也大大節(jié)省了部署配置和測試驗證時間,在生產(chǎn)環(huán)境下省去很多成本,極大地提高了開發(fā)測試效率。容器是輕量級的操作系統(tǒng),在物理機器的系統(tǒng)上操作,不需要像虛擬機那樣翻譯指令,直接使用物理機器的CPU 命令即可。

        Docker 的應(yīng)用也明顯改善了學習和生產(chǎn)環(huán)境,生產(chǎn)環(huán)境下的一些配置是極其煩瑣的,如果需要將應(yīng)用服務(wù)環(huán)境移植到另一臺機器,就要反復(fù)地進行配置和調(diào)試,這樣會消耗大量的時間和人力,對企業(yè)來說將是一筆不小的投入。Docker 技術(shù)完美地解決了這個問題,同時開發(fā)人員還可以利用Docker 來解決協(xié)作編碼時環(huán)境不兼容的問題,Docker 之所以發(fā)展如此迅速,也是因為它提供了系統(tǒng)平滑移植、容器虛擬化技術(shù)的標準化解決方案。

        猜你喜歡
        環(huán)境
        長期鍛煉創(chuàng)造體內(nèi)抑癌環(huán)境
        一種用于自主學習的虛擬仿真環(huán)境
        孕期遠離容易致畸的環(huán)境
        不能改變環(huán)境,那就改變心境
        環(huán)境與保護
        環(huán)境
        孕期遠離容易致畸的環(huán)境
        高等院校環(huán)境類公選課的實踐和探討
        掌握“三個三” 兜底環(huán)境信訪百分百
        我國環(huán)境會計初探
        中國商論(2016年33期)2016-03-01 01:59:38
        国产精品乱子伦一区二区三区| 国产精品户外野外| 日韩人妻中文字幕专区| 亚洲女同一区二区| 国产熟妇搡bbbb搡bb七区| 成人在线免费视频亚洲| 亚洲小少妇一区二区三区| 亚洲一区二区三区中国| 国产激情电影综合在线看| 午夜高清福利| 国产一区二区三区av香蕉| 亚洲av综合av一区| 久久精品国产色蜜蜜麻豆| 欧洲亚洲综合| 亚洲一区二区三区偷拍自拍| 精品国内日本一区二区| 国产女厕偷窥系列在线视频| 欧美日韩亚洲国产千人斩| 国产麻豆一区二区三区在线播放| 青青草亚洲视频社区在线播放观看| 丰满人妻熟妇乱又伦精品软件 | 国产成人综合亚洲国产| 久久久亚洲熟妇熟女av| 精品国产乱码久久久久久影片| 综合无码一区二区三区四区五区| 丰满少妇又爽又紧又丰满动态视频| 国产自拍视频在线观看网站| 欧美日韩一区二区综合| 91啦视频在线观看| 新视觉亚洲三区二区一区理伦| 玩弄放荡人妇系列av在线网站| 推油少妇久久99久久99久久| 日本肥老熟妇在线观看| 人妻一区二区三区av| 三年在线观看免费大全下载 | 国产丝袜长腿美臀在线观看| 欧美老熟妇喷水| 国产欧美成人| 久久综合老鸭窝色综合久久| 一 级做人爱全视频在线看| 每天更新的免费av片在线观看|