倪星宇
(上海交通大學(xué) 電子信息與電氣工程學(xué)院, 上海 200240)
在智能化生產(chǎn)的時(shí)代,企業(yè)急需尋求合適的分布式解決方案[1]來(lái)應(yīng)對(duì)不斷擴(kuò)大和更新的業(yè)務(wù),管理日趨復(fù)雜的異構(gòu)環(huán)境,實(shí)現(xiàn)各種設(shè)備、網(wǎng)絡(luò)環(huán)境等之間的集成。在工業(yè)生產(chǎn)中,如汽輪機(jī)廠、核電廠等,在大數(shù)據(jù)環(huán)境下,分布式架構(gòu)還可用于故障診斷、遠(yuǎn)程運(yùn)維、遠(yuǎn)程配置等。
云計(jì)算[2]是分布式計(jì)算的一種發(fā)展,現(xiàn)在企業(yè)推出了如阿里云、騰訊云等商業(yè)云平臺(tái),而Hadoop是Apache的一個(gè)開(kāi)源分布式框架,為了承接智能算法的實(shí)現(xiàn),以此為基礎(chǔ)設(shè)計(jì)一個(gè)云計(jì)算平臺(tái)。
Hadoop[3-5]是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的開(kāi)源軟件框架,主要由HDFS、MapReduce等組件組成,這兩個(gè)組件是最重要的也是最基礎(chǔ)的。
HDFS:高容錯(cuò)性的分布式文件系統(tǒng)。采用主/從結(jié)構(gòu),可以被廣泛的部署于廉價(jià)的PC之上,用于存儲(chǔ)海量數(shù)據(jù)。
MapReduce:執(zhí)行框架。是分布式并行數(shù)據(jù)處理的編程模型,用來(lái)執(zhí)行上層MapReduce程序。
實(shí)驗(yàn)環(huán)境為一個(gè)分布式集群,所有的服務(wù)器均使用的是Ubuntu16.04系統(tǒng),一共三臺(tái)計(jì)算機(jī),主機(jī)名分別為master,slaver1,slaver2。在構(gòu)建集群之前,由于Hadoop需要JDK作為支持,在系統(tǒng)安裝完畢之后,需要安裝最新版本的JDK,輸入sudo gedit/etc/profile配置所有的用戶(hù)環(huán)境變量,更改環(huán)境變量之后,輸入source/etc/profile 使得命令(環(huán)境變量)立即生效。重啟計(jì)算機(jī),終端下java -version檢查Java環(huán)境搭建情況,如圖1所示。
圖1 JDK信息
2.1.1 配置hosts文件
輸入ifconfig可以查詢(xún)各服務(wù)器的IP地址,輸入sudo gedit /etc/hosts,將三臺(tái)服務(wù)器的IP地址和主機(jī)名添加進(jìn)去(三臺(tái)服務(wù)器都需要配置)。
配置hosts文件是為了服務(wù)器之間可以進(jìn)行通信,可以ping通,如圖2所示。
圖2 hosts文件
2.1.2 配置ssh及master免密登錄
安裝ssh(輸入sudo apt-get install ssh),包括openssh-server和openssh-client(三臺(tái)服務(wù)器都需要安裝)。
在master上操作如下。
輸入ssh-keygen -t rsa安裝完成,生成id_rsa(密鑰)和id_rsa.pub(公鑰)兩個(gè)文件;
將id_rsa.pub添加到authorized_keys(輸入cp id_rsa.pub authorized_keys),authorized_keys存放所有公鑰,這時(shí)就可以免密訪(fǎng)問(wèn)localhost (ssh localhost)。
在slaver1上操作如下。
將在master主機(jī)上生成的id_rsa.pub通過(guò)命令
scp hadoop@master: ~/.ssh/id_rsa.pub ~/.ssh/slaver1_rsa.pub
復(fù)制到slaver1主機(jī)上,并命名為slaver1_rsa.pub。
對(duì)slaver2進(jìn)行相同的復(fù)制命令。
從master得到的密鑰加入到認(rèn)證,對(duì)slaver2主機(jī)進(jìn)行相同的操作。
cat ~/.ssh/slaver1_rsa.pub >> ~/.ssh/authorized_keys
現(xiàn)在就可以在master上對(duì)slaver1和slaver2進(jìn)行免密登錄,如圖3所示。
圖3 master免密登錄驗(yàn)證
使用的Hadoop版本的是hadoop-2.7.7,這里只需要將master主機(jī)的Hadoop配置好,再?gòu)?fù)制到另外兩臺(tái)slaver上即可。在這之前需要做的準(zhǔn)備是修改profile文件,配置好環(huán)境變量,需要在三臺(tái)服務(wù)器上操作,不可使用復(fù)制命令,需單獨(dú)操作,如圖4所示。
圖4 profile文件
2.2.1 配置slaves文件
slaves文件保存的是集群中slave的主機(jī)名,需進(jìn)行修改,如圖5所示。
圖5 slaves文件
2.2.2 配置hadoop-env.sh
hadoop-env.sh:添加Java安裝的地址即可,如圖6所示。
圖6 hadoop-env.sh文件
2.2.3 配置core-site.xml
core-site.xml文件中fs.default.name將master主機(jī)設(shè)置為namenode,hadoop.tmp.dir配置了Hadoop的一個(gè)臨時(shí)目錄,用來(lái)存儲(chǔ)每一次運(yùn)行的job的信息,如圖7所示。
圖7 core-site.xml文件
2.2.4 配置hdfs-site.xml
文件中dfs.replication 是設(shè)置文件副本數(shù)的,集群有兩個(gè)datanode,因此此處設(shè)置副本數(shù)為2,如圖8所示。
圖8 hdfs-site.xml文件
2.2.5 配置mapred-site.xml
設(shè)置master主機(jī)在9001端口執(zhí)行jobtracker,如圖9所示。
2.2.6 Hadoop啟動(dòng)驗(yàn)證
通過(guò)命令
scp -r /home/hadoop/Hadoop/hadoop-2.7.7 hadoop@slaver1:/home/hadoop/Hadoop
scp -r /home/hadoop/Hadoop/hadoop-2.7.7 hadoop@slaver2:/home/hadoop/Hadoop
拷貝到兩臺(tái)slaver的相同路徑中。
在master節(jié)點(diǎn)上輸入hadoop namenode -format,格式化NameNode。
在sbin目錄下,source start-all.sh啟動(dòng),在三臺(tái)計(jì)算機(jī)上執(zhí)行jps,如圖10所示。
圖9 mapred-site.xml文件
圖10 啟動(dòng)Hadoop
則表示Hadoop啟動(dòng)成功。
現(xiàn)在企業(yè)對(duì)大數(shù)據(jù)處理會(huì)首選Hadoop開(kāi)源分布式框架,通過(guò)上述構(gòu)建過(guò)程,完成了以Hadoop為基礎(chǔ),部署最基礎(chǔ)的云計(jì)算平臺(tái)。在此基礎(chǔ)上,后期會(huì)對(duì)Hadoop中的Yarn進(jìn)行資源管理配置,加入一些如TF架構(gòu)、數(shù)據(jù)庫(kù)等,將此云計(jì)算平臺(tái)應(yīng)用到工業(yè)生產(chǎn)中,承擔(dān)相關(guān)智能算法的實(shí)現(xiàn),為工業(yè)智能化生產(chǎn)提供一個(gè)平臺(tái)。