999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用Docker容器技術構建大數據實驗室

2018-04-11 06:36:08劉亞軍
實驗室研究與探索 2018年2期
關鍵詞:實驗室

應 毅, 劉亞軍, 俞 琰

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

0 引 言

在大數據及云計算產業高速發展的背景下,國內外很多高校已經開始進行大數據人才的培養[1]。大數據是一個典型的交叉學科,涉及到數學/統計學、數據庫/數據挖掘、分布式系統、計算機編程等眾多領域,人才培養不僅關注理論知識的傳授,更注重工程能力的培養,教學過程中強調實驗及實踐課程。實踐教學質量的高低在很大程度上取決于實驗室的建設水平。

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

當前,高校建設大數據實驗室大致有3種方法:

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

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

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

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

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

1 Docker容器技術

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

1.1 Decker的技術優勢

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

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

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

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

1.2 Docker Hub和Registry

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

1.3 鏡像與容器

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

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

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

1.4 Deckerfile

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

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

(2) 以基礎鏡像為基礎,根據業務需求,編寫Dockerfile,使用“docker build”命令自動構建新的鏡像。

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

2 Hadoop的Docker化

以Ubuntu 14.04.4為基礎鏡像,采用Dockerfile方式制作Hadoop鏡像,關鍵步驟包括:

(1) 安裝JDK,OpenJDK 7。

(2) 安裝SSH,OpenSSH 2。

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

(4) 配置環境變量,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的核心內容如下:

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/

# 配置環境變量

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,比在傳統虛擬主機中安裝Linux小的多。

3 構建大數據實驗室

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

3.1 實驗室部署

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

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

(2) 獲取Hadoop鏡像,命令

docker pull hadoop:base

(3) 以bridge模式為Hadoop集群創建單獨的網絡,給它命名為“hadoop”,命令

docker network create—driver=bridge hadoop

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

3.2 運行Hadoop容器

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

(1) 運行容器。基于相同的hadoop:base鏡像運行多個容器。在啟動時,使用“—net=hadoop”選項,將所有容器放置在hadoop網絡中,它們可以通過容器名稱進行通信。

運行Master節點上的容器:

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

運行2個Slave節點上的容器:

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腳本,調用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

執行結果如圖3所示。

圖3runWC.sh腳本執行結果

3.4 配置開發環境[6]

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

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

4 鏡像的遷移

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

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

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

5 結 語

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

參考文獻(References):

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

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

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

[4]姚占雷,許鑫,葉德磊.云計算架構下經管類實驗教學環境搭建與應用實踐[J].現代教育技術,2013(7):111-116.

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

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

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

[8]強焜.基于Docker的舊機房虛擬化改造探討[J].科技創新與應用,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]汪愷,張功萱,周秀敏.基于容器虛擬化技術研究[J].計算機技術與發展,2015(8):138-141.

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

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

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

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

猜你喜歡
實驗室
電競實驗室
電子競技(2020年8期)2020-12-23 04:09:40
電競實驗室
電子競技(2020年7期)2020-10-12 10:45:48
電競實驗室
電子競技(2020年5期)2020-08-10 08:43:10
電競實驗室
電子競技(2020年4期)2020-07-13 09:18:06
電競實驗室
電子競技(2020年2期)2020-04-14 04:40:38
電競實驗室
電子競技(2020年11期)2020-02-07 02:49:36
電競實驗室
電子競技(2020年9期)2020-01-11 01:06:21
電競實驗室
電子競技(2020年10期)2020-01-11 01:06:06
電競實驗室
電子競技(2019年22期)2019-03-07 05:17:26
電競實驗室
電子競技(2019年21期)2019-02-24 06:55:52
主站蜘蛛池模板: 成人福利在线观看| 在线观看精品自拍视频| 五月婷婷综合在线视频| 国产白浆一区二区三区视频在线| 99性视频| 亚洲三级a| 超级碰免费视频91| 欧美亚洲欧美区| 日韩欧美中文字幕在线精品| 一级毛片在线免费看| 最新无码专区超级碰碰碰| 国产va免费精品观看| 国产美女在线观看| 人妻精品全国免费视频| 天天躁狠狠躁| 永久免费无码日韩视频| 视频二区亚洲精品| 欧美不卡在线视频| 亚洲日产2021三区在线| 日韩欧美国产精品| 91九色视频网| 国产日韩欧美在线视频免费观看 | 免费在线a视频| 国产精品真实对白精彩久久| 一本大道香蕉久中文在线播放| 国产在线观看一区精品| 亚洲AV无码不卡无码| 伊人色在线视频| 国产欧美日韩va另类在线播放| 国产女人在线视频| 国产清纯在线一区二区WWW| 国产三级成人| 国产打屁股免费区网站| 青青青亚洲精品国产| 亚洲色欲色欲www在线观看| 亚洲欧美另类中文字幕| 香蕉久久国产超碰青草| 久久综合五月婷婷| 国内精品视频区在线2021| 永久免费精品视频| 欧美午夜理伦三级在线观看| 欧美日韩激情在线| 久久一本精品久久久ー99| 日本人又色又爽的视频| 精品人妻一区二区三区蜜桃AⅤ | 亚洲欧美在线看片AI| 欧美a√在线| 亚洲色图狠狠干| 老司国产精品视频| 欧美色综合网站| 无码丝袜人妻| 日韩第九页| 91娇喘视频| 欧美 亚洲 日韩 国产| 国产91九色在线播放| 国产精品久久久免费视频| 熟妇丰满人妻| 国产va欧美va在线观看| 午夜精品久久久久久久2023| 欧美在线天堂| 久久精品这里只有国产中文精品| 亚洲男人天堂2020| 伊人激情久久综合中文字幕| 国产国模一区二区三区四区| 成人在线不卡视频| www.av男人.com| 亚洲成人黄色在线| 婷婷色在线视频| 在线日韩一区二区| 亚洲欧美激情小说另类| A级全黄试看30分钟小视频| 日本午夜网站| 91网站国产| 国产乱子伦无码精品小说| 3D动漫精品啪啪一区二区下载| 九九香蕉视频| 国产美女主播一级成人毛片| 亚洲精品自在线拍| 久久久久中文字幕精品视频| 欧美另类图片视频无弹跳第一页| 香蕉久久国产精品免| 亚洲AV人人澡人人双人|