倪星宇
(上海交通大學 電子信息與電氣工程學院, 上海 200240)
在智能化生產的時代,企業急需尋求合適的分布式解決方案[1]來應對不斷擴大和更新的業務,管理日趨復雜的異構環境,實現各種設備、網絡環境等之間的集成。在工業生產中,如汽輪機廠、核電廠等,在大數據環境下,分布式架構還可用于故障診斷、遠程運維、遠程配置等。
云計算[2]是分布式計算的一種發展,現在企業推出了如阿里云、騰訊云等商業云平臺,而Hadoop是Apache的一個開源分布式框架,為了承接智能算法的實現,以此為基礎設計一個云計算平臺。
Hadoop[3-5]是一個能夠對大量數據進行分布式處理的開源軟件框架,主要由HDFS、MapReduce等組件組成,這兩個組件是最重要的也是最基礎的。
HDFS:高容錯性的分布式文件系統。采用主/從結構,可以被廣泛的部署于廉價的PC之上,用于存儲海量數據。
MapReduce:執行框架。是分布式并行數據處理的編程模型,用來執行上層MapReduce程序。
實驗環境為一個分布式集群,所有的服務器均使用的是Ubuntu16.04系統,一共三臺計算機,主機名分別為master,slaver1,slaver2。在構建集群之前,由于Hadoop需要JDK作為支持,在系統安裝完畢之后,需要安裝最新版本的JDK,輸入sudo gedit/etc/profile配置所有的用戶環境變量,更改環境變量之后,輸入source/etc/profile 使得命令(環境變量)立即生效。重啟計算機,終端下java -version檢查Java環境搭建情況,如圖1所示。

圖1 JDK信息
2.1.1 配置hosts文件
輸入ifconfig可以查詢各服務器的IP地址,輸入sudo gedit /etc/hosts,將三臺服務器的IP地址和主機名添加進去(三臺服務器都需要配置)。
配置hosts文件是為了服務器之間可以進行通信,可以ping通,如圖2所示。

圖2 hosts文件
2.1.2 配置ssh及master免密登錄
安裝ssh(輸入sudo apt-get install ssh),包括openssh-server和openssh-client(三臺服務器都需要安裝)。
在master上操作如下。
輸入ssh-keygen -t rsa安裝完成,生成id_rsa(密鑰)和id_rsa.pub(公鑰)兩個文件;
將id_rsa.pub添加到authorized_keys(輸入cp id_rsa.pub authorized_keys),authorized_keys存放所有公鑰,這時就可以免密訪問localhost (ssh localhost)。
在slaver1上操作如下。
將在master主機上生成的id_rsa.pub通過命令
scp hadoop@master: ~/.ssh/id_rsa.pub ~/.ssh/slaver1_rsa.pub
復制到slaver1主機上,并命名為slaver1_rsa.pub。
對slaver2進行相同的復制命令。
從master得到的密鑰加入到認證,對slaver2主機進行相同的操作。
cat ~/.ssh/slaver1_rsa.pub >> ~/.ssh/authorized_keys
現在就可以在master上對slaver1和slaver2進行免密登錄,如圖3所示。

圖3 master免密登錄驗證
使用的Hadoop版本的是hadoop-2.7.7,這里只需要將master主機的Hadoop配置好,再復制到另外兩臺slaver上即可。在這之前需要做的準備是修改profile文件,配置好環境變量,需要在三臺服務器上操作,不可使用復制命令,需單獨操作,如圖4所示。

圖4 profile文件
2.2.1 配置slaves文件
slaves文件保存的是集群中slave的主機名,需進行修改,如圖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主機設置為namenode,hadoop.tmp.dir配置了Hadoop的一個臨時目錄,用來存儲每一次運行的job的信息,如圖7所示。

圖7 core-site.xml文件
2.2.4 配置hdfs-site.xml
文件中dfs.replication 是設置文件副本數的,集群有兩個datanode,因此此處設置副本數為2,如圖8所示。

圖8 hdfs-site.xml文件
2.2.5 配置mapred-site.xml
設置master主機在9001端口執行jobtracker,如圖9所示。
2.2.6 Hadoop啟動驗證
通過命令
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
拷貝到兩臺slaver的相同路徑中。
在master節點上輸入hadoop namenode -format,格式化NameNode。
在sbin目錄下,source start-all.sh啟動,在三臺計算機上執行jps,如圖10所示。

圖9 mapred-site.xml文件



圖10 啟動Hadoop
則表示Hadoop啟動成功。
現在企業對大數據處理會首選Hadoop開源分布式框架,通過上述構建過程,完成了以Hadoop為基礎,部署最基礎的云計算平臺。在此基礎上,后期會對Hadoop中的Yarn進行資源管理配置,加入一些如TF架構、數據庫等,將此云計算平臺應用到工業生產中,承擔相關智能算法的實現,為工業智能化生產提供一個平臺。