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

Hadoop和Spark在實驗室中部署與性能評估

2015-04-17 12:30:50薛志云張丹陽曹維焯
實驗室研究與探索 2015年11期
關鍵詞:實驗室

薛志云, 何 軍, 張丹陽, 曹維焯

(南京信息工程大學 電子與信息工程學院,江蘇 南京 210044)

?

·計算機技術應用·

Hadoop和Spark在實驗室中部署與性能評估

薛志云, 何 軍, 張丹陽, 曹維焯

(南京信息工程大學 電子與信息工程學院,江蘇 南京 210044)

隨著互聯網技術的發展,數據量成爆炸性增長趨勢,單機難以存儲、組織和分析這些海量數據。面對單機難以處理海量數據的現狀,建立分布式計算平臺對于今后科研工作和實驗教學具有重要的意義。就如何在實驗室環境下搭建分布式計算平臺做了詳細說明并對hadoop和spark的性能進行比較,包括Hadoop和Spark集群的安裝和部署,Spark集成開發環境的建立,同一組數據集在兩個平臺上進行Kmeans聚類的時間對比。對于建設分布式計算平臺具有一定的指導意義。

大數據; 分布式計算; Hadoop; YARN; Spark

0 引 言

隨著計算機技術的發展,互聯網已滲透到工作和生活的各個方面,互聯網所產生的數據量成爆炸性增長。如何高效地存儲、組織和分析這些海量數據成為現今的研究熱點。分布式計算概念是將一個大任務分布到大量通過網絡連接的計算機集群上,每個計算機處理一個或多個子任務,這些子任務可以同時被處理,共同協作來完成對大任務的計算。分布式計算開發和維護需要考慮的情形非常多變,使得分布式編程相對于傳統編程顯得更加復雜,分布式框架可以通過封裝分布式計算細節來解決這一問題,使得開發效率成倍提高。

Hadoop[1-3]是一種基于MapReduce[4-5]的分布式計算框架,它由MapReduce框架和HDFS文件系統組成。最初的Hadoop版本存在單節點故障問題,直至Hadoop 2.X版本,本平臺所用Hadoop版本為Hadoop2.2.0.。Spark[6-7]是用Scala編寫、基于RDD彈性分布式內存數據集的分布式計算框架。相較于Hadoop,Spark允許將MapReduce的中間結果存儲在內存中,省去大量的磁盤I/O操作,運行效率更高。Spark on YARN(Yet Another Resource Negotiator)模式可以將Spark作業提交到Hadoop集群上,由Hadoop集群對作業進行資源調配。

Hadoop和Spark可被配置在通用硬件上,將實驗室中閑置的PC機匯聚起來,形成一個分布式計算集群以便提供高性能的計算和海量數據的存儲[8-9]。本文將就如何在實驗室環境中搭建分布式計算平臺做了詳細的說明,包括實驗室機器的基本配置和拓撲結構,Hadoop和Spark集群的安裝部署以及Spark開發環境的建立。最后以Kmeans[10]為例,將Hadoop和Spark做性能對比。

1 Hadoop安裝部署

1.1 安裝環境準備

1.1.1 硬件環境

利用實驗室機房中閑置的PC機,通過集線器將PC機連接成局域網。本平臺先選用4臺PC機,由于Hadoop和Spark的可擴展性,可以很方便地添加新的結點到集群中。

每臺PC機器裝有虛擬機[11-12]并搭載Ubuntu 32 bit操作系統,配有4GB內存和20GB的存儲。設置虛擬機的網絡連接方式為橋接模式,并給虛擬機設置靜態IP,確保虛擬機之間可以相互ping通。這樣,就實現了機器之間的互聯。選定其中1臺PC機作為master(即為namenode),另外3臺作為slave(即為datanode)。

為了方便對集群的管理,在每臺PC機上建立Hadoop用戶,并給Hadoop用戶賦予root權限。將有關Hadoop和Spark的操作均放在Hadoop用戶下進行。

修改每臺機器的主機名,將其主機名依次修改為master、slave1、slave2和slave3。在每臺機器用gedit打開/etc/hosts文件,并修改文件內容。

$sudo gedit /etc/hosts

將其內容修改為:

192.168.1.120 master

192.168.1.121 slave1

192.168.1.122 slave2

192.168.1.123 slave3

這樣,每個結點就擁有集群中每個結點與其IP對應的映射。

1.1.2 安裝JDK

Hadoop是用Java語言開發的分布式計算框架,所以集群中的每個結點需要安裝JDK。從官網上下載JDK的ubuntu版本jdk-8u25-linux-i586.tar.gz到桌面上,在/usr/loca/下新建java 文件夾,并將jdk-8u25-linux-i586.tar.gz從桌面復制到java文件夾下,解壓縮該文件:

$sudo scp -r jdk-8u25-linux-i586.tar.gz

/usr/local/java/

$sudo tar xzvf jdk-8u25-linux-i586.tar.gz

解壓完成后,打開~/.bashrc文件,配置java環境變量:

$sudo gedit ~/.bashrc

在該文檔末尾加上如下內容:

export

JAVA_HOME=/usr/local/java/jdk1.8.0_25

export PATH=JAVA_HOME/bin:PATH

運行以下命令使環境變量生效:

$source ~/.bashrc

1.1.3 配置ssh免密碼登陸

Hadoop集群在運行時需要通過ssh[13]免密碼服務來進行通信。Ubuntu自帶ssh客戶端,需要自行下載ssh服務器。在連網的情況下,輸入如下命令來安裝ssh服務器:

$sudo apt-get install openssh-server

$sudo apt-get update

使用ssh登陸到集群的另一結點時需要輸入結點的密碼,為方便通信避免每次輸密碼的麻煩,需要配置集群之間ssh免密碼登陸。具體操作過程如下:

(1) 生成公鑰和私鑰。在每個結點輸入以下命令,生成公鑰和私鑰:

$ssh-keygen -t rsa -P ""

提示選擇目錄時,直接按enter鍵即可。這樣,公鑰和私鑰直接在~/.ssh/目錄下。

(2) 登陸。以master和slave1結點為例,配置master與slave1間免密碼登陸,依次進行以下操作。

在master結點操作,將master的公鑰拷貝到slave結點上:

$scp id_rsa.pub Hadoop@slave1:~/

在slave結點操作,將拷貝過來的公鑰追加到authorized_keys中:

$cat id_rsa.pub >> authorized_keys

(3) 配置slave1。免密碼登陸master

在slave結點操作,將slave1的公鑰拷貝到master結點上:

$scp id_rsa.pub Hadoop@master:~/

在master結點操作,將拷貝過來的公鑰追加到authorized_keys中:

$cat id_rsa.pub >> authorized_keys

用同樣的方法可以實現master和集群中其他結點之間的免密碼登陸。

1.2 配置Hadoop文件

Hadoop版本比較多,本實驗平臺采用Hadoop2.2.0,該版本提出了YARN[14]的概念,穩定性較以前也有了提升,并可支持Spark作業。

從Hadoop官網下載Hadoop-2.2.0.tar.gz保存到master結點的桌面上,將其復制到/usr/local/目錄下并對其解壓縮,執行命令如下:

$sudo scp Hadoop-2.2.0.tar.gz /usr/local

$sudo tar xzvf Hadoop-2.2.0.tar.gz

將解壓縮生成的文件重命名為Hadoop:

$sudo mv Hadoop-2.2.0 Hadoop

將Hadoop文件夾的權限賦予Hadoop用戶:

Hadoop

下面需要對Hadoop中的文件進行配置,Hadoop2.2.0所需配置的文件都在/usr/local/Hadoop/etc/Hadoop目錄下

(1) 配置slaves。打開slaves文件并添加如下內容:slave1,slave2,slave3。

(2) 配置Hadoop-env.sh。修改JAVA_HOME的值:

export

JAVA_HOME=/usr/local/java/jdk1.8.0_25

(3) 配置yarn-env.sh。修改JAVA_HOME的值:

為便于分析,假設儲罐內LNG經BOG換熱后完全變為飽和態LNG,分析所需要的LNG過冷度。其中,LNG儲罐內壓力為0.3 MPa,對應飽和溫度為-146.6℃。

export

JAVA_HOME=/usr/local/java/jdk1.8.0_25

(4) 修改該目錄下的四個.xml文件。其中將mapred-site.xml.template文件另存為mapred-site.xml文件。

打開core-site.xml進行編輯:

打開hdfs-site.xml進行編輯:

打開mapred-site.xml進行編輯:

mapreduce.framework.name

打開yarn-site.xml進行編輯:

yarn.resourcemanager.admin.address

最后,將Hadoop文件通過scp命令發送到各個slave結點。這樣,就完成了Hadoop集群的部署。

2 Spark集群搭建

2.1 安裝Scala

Spark是由Scala語言開發實現的,需要Scala運行環境的支持。首先將scala-2.10.4.tar.gz下載到master結點桌面上并將其復制到/usr/local/目錄下,并對其解壓縮:

$sudo scp scala-2.10.4.tar.gz /usr/local/

$sudo tar xzvf scala-2.10.4.tar.gz

解壓完成后,打開~/.bashrc文件,配置Scala環境變量,在該文檔末尾加上如下內容:

export SCALA_HOME=/usr/local/scala

export PATH=$PATH:$SCALA_HOME/bin

再source一下使環境變量生效,安裝scala跟之前安裝JDK相類似,這里不做詳細闡述。

2.2 配置Spark文件

實驗平臺選用Spark1.0.0版本,從Spark官網上下載已預先編譯好的spark-1.0.0-bin-Hadoop2.tar.gz,按照之前安裝Hadoop的步驟將Spark解壓縮至/usr/local/目錄下:

$sudo scp spark-1.0.0-bin-Hadoop2.tar.gz

/usr/local/

$sudo tar xzvf

spark-1.0.0-bin-Hadoop2.tar.gz

解壓縮好Spark之后需要配置Spark的文件,所需配置的文件均在/usr/local/spark/conf目錄下。

(1) 配置slaves。打開slaves文件并添加如下內容:slave1,slave2,slave3。

(2) 配置spark-env.sh。將spark-env.sh.template文件另存為spark-env.sh文件,打開spark-env.sh,在文件最頂端輸入以下內容:

export

JAVA_HOME=/usr/local/java/jdk1.8.0_25

export SCALA_HOME=/usr/local/scala

export HADOOP_CONF_DIR=

$HADOOP_HOME/etc/Hadoop

export SPARK_MASTER_IP=master

export SPARK_WORKER_MEMORY=2g

Spark在master結點上安裝完成之后,通過scp命令將spark發布到各個slave結點,至此Spark集群的安裝部署成功。

3 Spark on YARN運行與測試

YARN是第二代MapReduce,主要是為了解決第一代MapReduce擴展性差,不支持多計算框架而被提出,YARN可作為Spark資源調度的管理器。Spark on YARN資源管理調度如圖1所示。

圖1 Spark on YARN資源管理調度

3.1 啟動Hadoop集群

集群安裝配置成功之后,首先要格式化HDFS,在master結點的/usr/local/Hadoop目錄下輸入以下指令:

$bin/Hadoop namenode -format

格式化成功之后,通過Hadoop/sbin目錄下的一個腳本start-all.sh來啟動Hadoop集群的各個服務功能:

$sbin/start-all.sh

集群啟動成功之后,可以通過登錄web界面輸入:master:8088和master:50070來查看集群啟動和運行情況。

3.2 Spark-submit提交作業到YARN

Spark可以單獨運行,也可以運行在已有的集群上,如Amazon EC2、Apache Mesos、Hadoop YARN。采用YARN模式運行,其實就是把spark作為一個客戶端提交作業給YARN,用YARN來管理作業的資源調度。

Spark中可以通過Spark-submit將作業提交到Hadoop YARN,輸入以下指令,運行一個Demo計算π的值:

bin/spark-submit

--class

org.apache.spark.examples.SparkPi

--master yarn-cluster

lib/spark-examples*.jar 2

運行成功之后從Hadoop Web管理界面可以查看到作業被提交到了Haddop平臺上,并可查看運行狀態和結果。

4 Intellij IDEA集成開發環境

Spark運行環境搭建完成之后,為了方便對Spark應用程序的開發,使用Intellij IDEA來配置Spark開發環境。

4.1 Intellij IDEA的安裝

下載ideaIC-13.1.4b.tar.gz,并解壓縮到/usr/local/目錄下。進入idea/bin目錄,在終端輸入:./idea.sh打開Intellij IDEA的界面。需要進入Configure-->Plugins-->Install JetBrains plugin頁面下載和安裝scala插件,安裝完成后重啟IDEA。至此,IDEA可用于開發Scala程序,IDEA安裝成功。

4.2 Spark Kmeans運行

以Kmeans為例來說明spark源碼在IDEA中的執行步驟,以后可以在IDEA中開發Spark應用程序。首先新建一個Scala工程,為方便開發,新建時要選擇SBT,SBT完成之后會自動建立好一些目錄。此時右擊src目錄下的main下的scala,在彈出的“New”下選擇“Scala Class”,輸出文件名為Kmeans,Kind選為Object。

將Spark 中Kmeans的源碼拷貝到新建的工程中,此時代碼中有些變量不被識別,需要導入Spark-Hadoop對應的jar包。點擊編譯,此時系統會報沒有指定master URL等錯誤。需要配置Kmeans的執行環境,指定運行所需用到的參數。至此,Spark Kmeans運行成功。

5 Spark和Hadoop性能對比

集群搭建成功之后,準備了5組數據集在Hadoop和Spark平臺上做Kmeans運算。其中Kmeans在Spark平臺上的運行4.2中已做說明。Mahout[15-16]是基于Hadoop Mapreduce 的機器學習算法庫,Hadoop Kmeans已在Mahout中實現。將Mahout配置到集群中即可在Hadoop平臺上運行Kmeans。由于Mahout配置相對而言比較容易,這里不做詳細說明。

實驗后分別記下5組數據集在2個平臺的運行時間,并通過matlab畫出運行時間對比直方圖如圖2所示。我們可以看出Spark對于處理Kmeans算法的效率比Hadoop快100倍。

圖2 Kmeans運行時間對比

6 結 語

該實驗平臺分別搭建了Hadoop和Spark分布式計算平臺,可以被運用于大規模的數據計算。通過分別在兩個平臺上運行Kmeans算法,我們發現,Spark更適合用于需要迭代的機器學習算法,隨著數據集的增大,Spark的優勢更加明顯。

在今后工作中,可以在了解和掌握Spark編程機制的基礎上,在現有的平臺上做一些分布式開發,將傳統的單機版本的機器學習算法部署到分布式計算平臺

上,已解決單機無法承載大數據計算的問題。

[1] 陸嘉恒. Hadoop實戰[M].北京:機械工業出版社,2012.

[2] 周 品.Hadoop 云計算實戰[M]. 北京:清華大學出版社,2012.

[3] Shvachko Konstantin. The Hadoop distributed file system[C]//Mass Storage Systems and Technologies (MSST),2010,26th Symposium on IEEE:1-10.

[4] Dean J, Ghemawat S. MapReduce: simplified data processing on large clusters[J]. Communications of the ACM, 2008, 51(1):107-113.

[5] Dean J, Ghemawat S. MapReduce: a flexible data processing tool[J]. Communications of the ACM, 2010, 53(1): 72-77.

[6] Karau H. Fast Data Processing With Spark[M].Bermingham:Packt Publishing Ltd, 2013.

[7] Zaharia M, Chowdhury M, Das T,etal. Fast and interactive analytics over Hadoop data with Spark[J]. USENIX; login, 2012, 37(4): 45-51.

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

[9] 陳慧芬,盧慶武. 云計算在高校機房管理中的應用[J]. 實驗室研究與探索,2013,32(7):213-216.

[10] 何 清,李 寧,羅文娟,等.大數據下的機器學習算法綜述[J].模式識別與人工智能,2014, 27(4): 327-336.

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

[12] 郁書好,蘇守寶.VMware下的多操作系統實驗環境構建[J].實驗室研究與探索,2013,32(9):106-108.

[13] OpenSSL官網. http://www.openssh.com/. 2012

[14] 董西成.Hadoop技術內幕:深入解析YARN架構設計與實現原理[M].北京:機械工業出版社,2013.

[15] Owen S,Anil R,Dunning T,etal. Mahout in action[M]. New York: Manning Publications Co,2011.

[16] Giacomelli P. Apache Mahout Cookbook [M].Bermingham:Packt Publishing Ltd, 2013.

The Deployment and Performance Evaluation of Hadoop and Spark in Laboratory Environment

XUEZhi-yun,HEJun,ZHANGDang-yang,CAOWei-zhuo

(School of Electronic and Information Engineering, Nanjing University of Information Science and Technology, Nanjing 210044, China)

With the development of the Internet technology, data volume is streaming. A single machine cannot store, organize and analyze massive data. Facing to the current situation, it is meaningful to build distributed computing platform for further research and experimental teaching. This paper gives a detailed description of the establishment of distributed computing platform and makes a performance comparison between Hadoop and Spark. The comparison focuses on the time consuming, and includes the building of Hadoop and Spark platforms, establishing the Spark development environment, using an identical set of dataset to do Kmeans clustering. It will be helpful for someone who is going to construct distributed computing platform.

distributed computing; Hadoop; YARN; Spark

2015-03-30

國家自然科學基金項目(61203273);江蘇省自然科學基金項目(BK20141004);南京信息工程大學大學生實踐創新訓練計劃項目(201410300175)

薛志云(1990-),女,江蘇泰州人,碩士生,研究方向為大數據機器學習。E-mail:nuistxzy@163.com

何 軍(1978-),男,河南鄭州人,博士,講師,主要從事大數據機器學習和計算機視覺等方面的研究。

E-mail:jhe@nuist.edu.cn

TP 302.1

A

1006-7167(2015)11-0077-05

猜你喜歡
實驗室
電競實驗室
電子競技(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久久99视频| 中文字幕中文字字幕码一二区| 久久精品最新免费国产成人| 亚洲综合婷婷激情| 亚洲欧美在线综合图区| 国产精品刺激对白在线| 久久精品无码中文字幕| 久久亚洲国产最新网站| 久久综合五月| 欧美成人午夜视频| 亚洲国产日韩视频观看| 4虎影视国产在线观看精品| 亚洲成在人线av品善网好看| 免费女人18毛片a级毛片视频| 囯产av无码片毛片一级| 美女被狂躁www在线观看| 欧美在线天堂| 2048国产精品原创综合在线| 免费可以看的无遮挡av无码| 激情無極限的亚洲一区免费| 在线亚洲小视频| 久草视频精品| 亚洲午夜福利在线| 91啦中文字幕| 91麻豆国产在线| 99青青青精品视频在线| 国产精品久久精品| 九九久久精品国产av片囯产区| 一级成人欧美一区在线观看| www精品久久| 亚洲国产精品无码久久一线| 欧美α片免费观看| 欧美视频在线播放观看免费福利资源| 亚洲精品第一页不卡| 91网址在线播放| 欧美亚洲日韩中文| 久久久久青草线综合超碰| 精品少妇人妻av无码久久| 国产黄在线免费观看| 理论片一区| 国产色婷婷| 国产精品永久久久久| 99久久性生片| 日韩精品久久无码中文字幕色欲| 国产精品xxx| 91小视频在线观看免费版高清| 久久中文无码精品| 亚洲天堂视频在线播放| 国产91在线|中文| 亚洲va在线观看| 亚洲国产在一区二区三区| 91精品国产麻豆国产自产在线| 日韩欧美国产区| 亚洲天堂777| 国产麻豆aⅴ精品无码| 色婷婷亚洲综合五月| 综合网天天| 国产亚洲成AⅤ人片在线观看| 国产福利免费视频| 日韩视频精品在线| 国产精品视频系列专区| 久久狠狠色噜噜狠狠狠狠97视色| 亚洲第一页在线观看| 911亚洲精品| 欧美a在线| 久久窝窝国产精品午夜看片| 国精品91人妻无码一区二区三区| 国产乱人视频免费观看| 成人在线不卡| 国产亚洲高清在线精品99| 亚洲黄色成人| 91视频青青草| 色妞www精品视频一级下载| 狠狠色成人综合首页| 久久精品欧美一区二区| 免费无遮挡AV| 自偷自拍三级全三级视频 | 亚洲欧美日韩中文字幕一区二区三区 |