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

        ?

        利用Docker容器技術(shù)構(gòu)建大數(shù)據(jù)實驗室

        2018-04-11 06:36:08劉亞軍
        實驗室研究與探索 2018年2期
        關(guān)鍵詞:鏡像虛擬化容器

        應(yīng) 毅, 劉亞軍, 俞 琰

        (1.三江學(xué)院 計算機科學(xué)與工程學(xué)院,南京 210012;2.東南大學(xué) 計算機科學(xué)與工程學(xué)院,南京 210096;3.南京工業(yè)大學(xué) 信息服務(wù)部,南京 210009)

        0 引 言

        在大數(shù)據(jù)及云計算產(chǎn)業(yè)高速發(fā)展的背景下,國內(nèi)外很多高校已經(jīng)開始進行大數(shù)據(jù)人才的培養(yǎng)[1]。大數(shù)據(jù)是一個典型的交叉學(xué)科,涉及到數(shù)學(xué)/統(tǒng)計學(xué)、數(shù)據(jù)庫/數(shù)據(jù)挖掘、分布式系統(tǒng)、計算機編程等眾多領(lǐng)域,人才培養(yǎng)不僅關(guān)注理論知識的傳授,更注重工程能力的培養(yǎng),教學(xué)過程中強調(diào)實驗及實踐課程。實踐教學(xué)質(zhì)量的高低在很大程度上取決于實驗室的建設(shè)水平。

        Apache Hadoop是由Java語言實現(xiàn)的開源大數(shù)據(jù)平臺,它集成了數(shù)據(jù)存儲、數(shù)據(jù)處理、系統(tǒng)管理等功能,形成了完善的生態(tài)圈(海量存儲、并行計算、分析/挖掘、NoSQL等),已經(jīng)成為大數(shù)據(jù)領(lǐng)域事實上的標準[2]。然而,Hadoop的集群性(一般至少3個節(jié)點)、配置復(fù)雜、只支持Linux操作系統(tǒng)等特點,對高校實驗室建設(shè)是一個新挑戰(zhàn)。

        當前,高校建設(shè)大數(shù)據(jù)實驗室大致有3種方法:

        (1) 直接在學(xué)生機上安裝Linux,在Linux上安裝Hadoop[3]。

        (2) 原有的機房環(huán)境不變,額外購置服務(wù)器/小型機等高性能硬件設(shè)備[4]。

        (3) 在Windows系統(tǒng)下安裝虛擬機軟件(VMWare、VirtualPC等),在虛擬機上安裝Linux,在Linux上安裝Hadoop[5]。

        受到資源限制,很多高校實驗室不單獨安裝Linux系統(tǒng),而且Linux學(xué)生機管理復(fù)雜,機房可復(fù)用性差。額外購置硬件對資金要求很高[6]。傳統(tǒng)的虛擬機技術(shù)[7]完整地安裝整個操作系統(tǒng),即使底層操作系統(tǒng)相同,幾個Guest OS之間也不能共享,對于Host OS的硬件資源利用率低,無法達到真實物理主機的水平。通常難以在一臺普通PC上虛擬出一個多節(jié)點集群。

        借助于LXC和AUFS技術(shù),Docker以幾乎沒有額外開銷的代價提供資源隔離的應(yīng)用運行環(huán)境,其秒級的啟動速度相比于虛擬機有了數(shù)量級的提高,而且資源占用極少,一臺普通服務(wù)器能運行數(shù)百個容器(Container)[8]。本文利用Docker容器技術(shù)在單臺Windows計算機上構(gòu)建多節(jié)點Hadoop集群。

        1 Docker容器技術(shù)

        Docker是dotCloud公司于2013年發(fā)布的輕量級容器引擎,基于Go語言開發(fā),遵循Apache 2.0開源協(xié)議。Docker的設(shè)計哲學(xué)是“Build, Ship, and Run Any App, Anywhere”[9](一處封裝,處處運行)。通過分層鏡像標準化和內(nèi)核虛擬化技術(shù),Docker可以將應(yīng)用軟件、依賴包和所需環(huán)境打包制作成鏡像(image),發(fā)布到任何一臺安裝有Docker引擎的計算機(Linux、Mac或Windows平臺)上運行。

        1.1 Decker的技術(shù)優(yōu)勢

        傳統(tǒng)的Xen、KVM以及VMWare都是一種平臺虛擬化技術(shù)[10],需要提供一個完善的硬件虛擬層,從而讓一個Guest OS完整地安裝在虛擬機中。一個完整的操作系統(tǒng)雖然功能強大,但也造成了很大的資源浪費。在實際使用中,有時用戶需要的僅僅是一些應(yīng)用軟件和高效的運行環(huán)境而非整個操作系統(tǒng)。

        遵循物盡其用的原則,Docker采用了LXC(Linux Containers)內(nèi)核虛擬化技術(shù)。LXC能夠在同一個服務(wù)器上同時支持數(shù)千臺仿真系統(tǒng)[11],它不提供指令解釋機制以及全虛擬化的其它復(fù)雜性,不需要完全對真實硬件進行模擬,省去了虛擬化層調(diào)度硬件的開銷,這使得Docker容器的資源利用率和執(zhí)行效率比傳統(tǒng)虛擬主機高,接近于真實物理機[12]。

        在文件系統(tǒng)方面,Docker使用了AUFS(Advanced multi-layered Unification Filesystem)技術(shù),它能實現(xiàn)容器對基礎(chǔ)鏡像的共享。運行容器時,最底層的操作系統(tǒng)鏡像被掛載為Readonly文件層,然后在此基礎(chǔ)上設(shè)置一個頂層的Writable文件層供容器寫入數(shù)據(jù)。利用這種層級結(jié)構(gòu),Docker不僅可以將多個具有層次關(guān)系的應(yīng)用服務(wù)疊加在一起,形成新的鏡像,還可以共享基礎(chǔ)鏡像,不必像傳統(tǒng)虛擬主機那樣重復(fù)安裝Guest OS。

        基于以上兩點,作為面向應(yīng)用的虛擬化技術(shù)[13],Docker很好地平衡了虛擬化的初衷和對資源的消耗,在啟動速度、磁盤占用、物理資源利用率、隔離度等方面具有很大優(yōu)勢。

        1.2 Docker Hub和Registry

        Docker Hub是Docker提供的官方鏡像服務(wù)網(wǎng)站,以公開或私有的方式存放了各種操作系統(tǒng)、中間件框架、數(shù)據(jù)庫服務(wù)、開發(fā)環(huán)境鏡像資源。Docker Registry組件提供了針對鏡像的存儲、搜索、上傳、下載等一系列API服務(wù)。任何組織和個人都可以在Docker Hub上獲取已發(fā)布的鏡像,也可以創(chuàng)建自己的鏡像并使用push命令上傳到資源倉庫,供其他人使用。

        1.3 鏡像與容器

        Docker中有兩個重要概念:鏡像和容器。

        鏡像類似于虛擬機模板。開發(fā)者從Docker Registry上獲取基礎(chǔ)鏡像,它一般是一個純凈的操作系統(tǒng),在此基礎(chǔ)上做修改,比如安裝軟件、進行配置,最后封裝成一個標準的、隔離的、輕量級環(huán)境。這種構(gòu)建鏡像的繼承關(guān)系可以是多層的。

        容器是從鏡像創(chuàng)建的運行實例,鏡像可以從Docker Registry上下載,也可以來自本地創(chuàng)建或本地緩存。在功能上,鏡像與一個完整的Linux系統(tǒng)基本一致,它有兩個不同的狀態(tài):運行態(tài)(Running)、退出態(tài)(Exited)。對容器而言,鏡像是只讀的。當Docker引擎運行容器時,會在鏡像之上增加一個可寫層,對正在運行的容器的一切操作都會永久地寫到容器的文件系統(tǒng)中,而不是鏡像中。也可以使用同一個鏡像啟動多個容器,這些容器在啟動后是相互隔離的。

        1.4 Deckerfile

        Docker提供了兩種制作鏡像的方式:

        (1) 使用基礎(chǔ)鏡像運行容器,在容器中安裝軟件和相關(guān)操作,退出后使用“docker commit”命令將容器封裝成一個新的鏡像;

        (2) 以基礎(chǔ)鏡像為基礎(chǔ),根據(jù)業(yè)務(wù)需求,編寫Dockerfile,使用“docker build”命令自動構(gòu)建新的鏡像。

        Dockerfile是基于DSL(Domain Specific Language)語法的腳本,由一條一條的指令組成,每條指令對應(yīng)一條Linux命令,Docker引擎負責(zé)指令的翻譯。與直接給出鏡像相比,Dockerfile腳本清晰地表明鏡像是怎樣生成的,當需要定制額外需求時,只要在Dockerfile上添加或修改指令即可。這種增量發(fā)布的能力,具有更好的靈活性、透明性、可重復(fù)性以及冪等性[14]。本文在制作Hadoop鏡像時,將會使用Dockerfile方式。

        2 Hadoop的Docker化

        以Ubuntu 14.04.4為基礎(chǔ)鏡像,采用Dockerfile方式制作Hadoop鏡像,關(guān)鍵步驟包括:

        (1) 安裝JDK,OpenJDK 7。

        (2) 安裝SSH,OpenSSH 2。

        (3) 下載、安裝Hadoop,版本選擇Hadoop 2.7.2。與1.x分支相比,Hadoop 2.x(YARN)是一個通用的計算框架管理平臺,不僅支持MapReduce,也支持其它計算引擎(如Spark)。

        (4) 配置環(huán)境變量,JAVA_HOME、HADOOP_HOME、PATH。

        (5) 配置SSH無密碼登錄。

        (6) 配置Hadoop。準備Hadoop的配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、hadoop-env.sh、slaves,并將它們拷貝至Hadoop的安裝目錄。

        (7) 格式化NameNode。

        制作流程如圖1所示。

        圖1Hadoop image制作流程

        Dockerfile的核心內(nèi)容如下:

        FROM ubuntu,14.04

        WORKDIR /root

        # 安裝OpenSSH、OpenJDK、Hadoop

        RUN apt-get update && apt-get install -y openssh-server openjdk-7-jdk wget

        RUN wget hadoop-2.7.2.tar.gz && tar -xzvf hadoop-2.7.2.tar.gz && mv hadoop-2.7.2 /usr/hadoop/

        # 配置環(huán)境變量

        ENV JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/

        ENV HADOOP_HOME=/usr/hadoop/

        ENV PATH=PATH:/usr/hadoop/bin:/usr/hadoop/sbin

        # 配置SSH無密碼登錄

        RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

        RUN cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

        RUN mv /tmp/ssh_config ~/.ssh/config

        # 配置Hadoop

        COPY config/* /tmp/

        RUN mv /tmp/hadoop-env.sh /usr/hadoop/etc/hadoop/hadoop-env.sh

        RUN mv /tmp/hdfs-site.xml HADOOP_HOME/etc/hadoop/hdfs-site.xml

        RUN mv /tmp/core-site.xml HADOOP_HOME/etc/hadoop/core-site.xml

        RUN mv /tmp/mapred-site.xml HADOOP_HOME/etc/hadoop/mapred-site.xml

        RUN mv /tmp/yarn-site.xml HADOOP_HOME/etc/hadoop/yarn-site.xml

        RUN mv /tmp/slaves HADOOP_HOME/etc/hadoop/slaves

        # 格式化NameNode

        RUN mkdir -p ~/hdfs/namenode

        RUN mkdir -p ~/hdfs/datanode

        RUN /usr/hadoop/bin/hdfs namenode -format

        最后使用“docker build”命令生成Hadoop鏡像,給它命名為“hadoop:base”(base其實是鏡像的tag),它的大小大約只有780M,比在傳統(tǒng)虛擬主機中安裝Linux小的多。

        3 構(gòu)建大數(shù)據(jù)實驗室

        利用分布式系統(tǒng)的優(yōu)勢,Hadoop是解決大數(shù)據(jù)問題的高效工具。依托進程級虛擬化技術(shù),Docker以應(yīng)用為中心,輕巧便捷,特別適合用于需要橫向擴展的應(yīng)用。運行封裝有Hadoop的Docker容器,可以快速地在單個PC上搭建Hadoop集群。

        3.1 實驗室部署

        由于準備在一臺機器上運行3個Docker容器(1個Master、2個Slave),所以選擇硬件較好的計算機機房,PC配置為:Intel i7-4770四核CPU(處理器必須支持硬件虛擬化)、8GB RAM、1TB硬盤(7200轉(zhuǎn)64M緩存)。操作系統(tǒng)為:Windows7 64位。部署過程只有3步:

        (1) 安裝DockerToolbox 1.13并啟動。Docker的Toolbox是一個能在Windows平臺上使用運行的輕量級虛擬機引擎。

        (2) 獲取Hadoop鏡像,命令

        docker pull hadoop:base

        (3) 以bridge模式為Hadoop集群創(chuàng)建單獨的網(wǎng)絡(luò),給它命名為“hadoop”,命令

        docker network create—driver=bridge hadoop

        單機部署完成后,可以通過噢易OSS等網(wǎng)絡(luò)同傳工具拷貝到每臺學(xué)生機上。由于Docker的資源隔離機制,每臺機器之間的Hadoop集群相互不干擾。

        3.2 運行Hadoop容器

        學(xué)生上機時,首先打開DockerToolbox,然后運行容器,啟動Hadoop集群。

        (1) 運行容器?;谙嗤膆adoop:base鏡像運行多個容器。在啟動時,使用“—net=hadoop”選項,將所有容器放置在hadoop網(wǎng)絡(luò)中,它們可以通過容器名稱進行通信。

        運行Master節(jié)點上的容器:

        docker run -itd —net=hadoop —name hadoop-master —hostname hadoop-master -p 50070:50070 -p 8088:8088 hadoop:base

        運行2個Slave節(jié)點上的容器:

        docker run -itd —net=hadoop —name hadoop-slave1 —hostname hadoop-slave1 hadoop:base

        docker run -itd —net=hadoop —name hadoop-slave2 —hostname hadoop-slave2 hadoop:base

        (2) 進入Master容器的root目錄:

        docker exec -it hadoop-master bash

        (3) 啟動Hadoop:

        HADOOP_HOME/sbin/start-dfs.sh

        HADOOP_HOME/sbin/start-yarn.sh

        Hadoop提供了NodeManager和ResourceManager的Web管理功能,地址分別為:http://MasterIP:50070/、http://MasterIP:8088/。

        Hadoop容器運行流程如圖2所示。

        3.3 測試Hadoop集群

        編寫一個runWC.sh腳本,調(diào)用Hadoop自帶的WordCount程序,測試Hadoop集群是否正常工作。

        圖2Hadoop Container運行流程

        runWC.sh腳本代碼如下:

        mkdir input

        echo "Hello Hadoop" >input/file1.txt

        echo "Hello Docker" >input/file2.txt

        hadoop fs -mkdir -p input

        hdfs dfs -put ./input/* input

        hadoop jar HADOOP_HOME/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.2-sources.jar org.apache.hadoop.examples.WordCount input output

        echo -e " WordCount output:"

        hdfs dfs -cat output/part-r-00000

        執(zhí)行結(jié)果如圖3所示。

        圖3runWC.sh腳本執(zhí)行結(jié)果

        3.4 配置開發(fā)環(huán)境[6]

        編程實驗課需要使用Eclipse進行Hadoop方面的程序開發(fā)。

        安裝Hadoop Eclipse插件:下載hadoop-eclipse-plugin-1.0.4.jar,將其放置在Eclipse安裝目錄的plugins文件夾內(nèi),重啟Eclipse。如果在打開透視圖對話框中能夠看到“Map/Reduce”選項,表明插件安裝成功。在“Map/Reduce”透視圖中,右鍵點擊“New Hadoop Location”,根據(jù)Hadoop的安裝情況,填寫正確的Map/Reduce、DFS配置信息。至此,Eclipse開發(fā)環(huán)境配置完畢,可以選擇“Map/Reduce Project”來開發(fā)并行應(yīng)用程序。

        4 鏡像的遷移

        以往,受時間因素和實驗環(huán)境的制約,學(xué)生只能在實驗課上做實驗。大數(shù)據(jù)課程的實驗比較復(fù)雜,有時光靠實驗課的時間是無法完成的。所以,很多學(xué)生有在自己計算機上安裝Hadoop集群的需求。Docker在這方面提供了便利。

        Docker具有標準的鏡像格式、標準的容器運行環(huán)境、標準的構(gòu)建方法。當需要在新環(huán)境部署應(yīng)用時,只需要到Docker Hub上下載所需的鏡像,啟動容器即可,極大的簡化了應(yīng)用程序的安裝和管理。

        所以,學(xué)生私人計算機上部署Hadoop集群和實驗室部署Hadoop集群的方法完全一致。

        5 結(jié) 語

        大數(shù)據(jù)實驗室是大數(shù)據(jù)人才培養(yǎng)不可或缺的重要部分,為實驗教學(xué)提供硬件支撐。通過在Windows平臺下安裝Docker軟件運行容器,實現(xiàn)了多節(jié)點Hadoop集群在單PC上的部署。一方面,保持眾多學(xué)生機的原有狀況不變,沒有給實驗室的維護增加負擔(dān);另一方面,不需要使用高性能硬件或購置新設(shè)備,節(jié)省了實驗室資金。該大數(shù)據(jù)實驗室已實際運行在網(wǎng)絡(luò)機房中,每次實驗課有50-60名學(xué)生同時上機,經(jīng)實踐證明運行穩(wěn)定、維護方便,可供大家在建設(shè)大數(shù)據(jù)實驗室時參考與借鑒。

        參考文獻(References):

        [1]何海地.美國大數(shù)據(jù)專業(yè)碩士研究生教育的背景、現(xiàn)狀、特色與啟示——全美23所知名大學(xué)數(shù)據(jù)分析碩士課程網(wǎng)站及相關(guān)信息分析研究[J].圖書與情報,2014(2):48-56.

        [2]孟小峰,慈祥. 大數(shù)據(jù)管理:概念、技術(shù)與挑戰(zhàn)[J]. 計算機研究與發(fā)展,2013(1):146-169.

        [3]蔣寧,李文,李鴻彬.基于Hadoop的云計算輔助教學(xué)平臺研究[J].中國遠程教育,2012(9):79-82.

        [4]姚占雷,許鑫,葉德磊.云計算架構(gòu)下經(jīng)管類實驗教學(xué)環(huán)境搭建與應(yīng)用實踐[J].現(xiàn)代教育技術(shù),2013(7):111-116.

        [5]孔藝權(quán).面向開源軟件的“云計算”仿真實驗設(shè)計[J].實驗技術(shù)與管理,2013(2):122-125.

        [6]付偉,嚴博,吳曉平.云計算實驗平臺建設(shè)關(guān)鍵技術(shù)研究[J].實驗室研究與探索,2013(11):78-81.

        [7]何增穎.虛擬機技術(shù)的實驗教學(xué)應(yīng)用[J].實驗科學(xué)與技術(shù),2010(1):80-82,87.

        [8]強焜.基于Docker的舊機房虛擬化改造探討[J].科技創(chuàng)新與應(yīng)用,2016(35):58.

        [9]Xie B, Sun G, Ma G. Docker based overlay network performance evaluation in large scale streaming system[C]// Advanced Information Management, Communicates, Electronic and Automation Control Conference (IMCEC), 2016 IEEE. IEEE, 2016: 366-369.

        [10]汪愷,張功萱,周秀敏.基于容器虛擬化技術(shù)研究[J].計算機技術(shù)與發(fā)展,2015(8):138-141.

        [11]金海,廖小飛.面向計算系統(tǒng)的虛擬化技術(shù)[J].中國基礎(chǔ)科學(xué),2008(6):12-18.

        [12]謝超群.Docker容器技術(shù)在高校數(shù)據(jù)中心的應(yīng)用[J].貴陽學(xué)院學(xué)報(自然科學(xué)版),2015(4):27-29.

        [13]伍陽.基于Docker的虛擬化技術(shù)研究[J].信息技術(shù),2016(1):121-123,128.

        [14]James Turnbull. 第一本Docker書[M]. 北京:人民郵電出版社, 2016.

        猜你喜歡
        鏡像虛擬化容器
        Different Containers不同的容器
        鏡像
        當代黨員(2020年20期)2020-11-06 04:17:52
        難以置信的事情
        基于OpenStack虛擬化網(wǎng)絡(luò)管理平臺的設(shè)計與實現(xiàn)
        電子制作(2019年10期)2019-06-17 11:45:10
        鏡像
        小康(2018年23期)2018-08-23 06:18:52
        對基于Docker的虛擬化技術(shù)的幾點探討
        電子制作(2018年14期)2018-08-21 01:38:20
        虛擬化技術(shù)在計算機技術(shù)創(chuàng)造中的應(yīng)用
        電子測試(2017年11期)2017-12-15 08:57:56
        存儲虛擬化還有優(yōu)勢嗎?
        取米
        鏡像
        小康(2015年4期)2015-03-31 14:57:40
        2021年最新久久久视精品爱| 无码人妻精品一区二区三区9厂 | 国产自拍在线观看视频 | 中文字幕高清不卡视频二区| 337p日本欧洲亚洲大胆| 国产mv在线天堂mv免费观看| 无码高潮久久一级一级喷水 | 精品亚洲麻豆1区2区3区| a级毛片免费观看在线| 精品人妻VA出轨中文字幕| 粗一硬一长一进一爽一a视频| av在线观看免费天堂| 熟女少妇在线视频播放| 亚洲AⅤ无码国精品中文字慕 | 91偷拍与自偷拍亚洲精品86| 国产网红主播无码精品| 亚洲国产精品自拍一区| 最新国产主播一区二区| 亚洲国产中文字幕视频| 一本色道久久99一综合| 乱人伦人妻中文字幕无码| 国产在线观看黄片视频免费| 欧洲熟妇色xxxx欧美老妇性| 精品人人妻人人澡人人爽牛牛| 在线你懂| 熟女肥臀白浆一区二区| 日韩av东京社区男人的天堂| 91亚洲无码在线观看| 色婷婷精久久品蜜臀av蜜桃| 久久成人成狠狠爱综合网| 亚洲国产精品嫩草影院久久| 亚洲第一区二区快射影院| 日本亚洲系列中文字幕| 69一区二三区好的精华| 国产精品九九九无码喷水| 国产大片在线观看91| 艳妇臀荡乳欲伦交换h在线观看| 成 人 色综合 综合网站| 午夜一区二区三区av| 日本激情网站中文字幕| 野花社区视频www官网|