關於大數據,一看就懂,一懂就懵。html
1、概述java
本文介紹如何搭建hadoop分佈式集羣環境,前面文章已經介紹瞭如何搭建hadoop單機環境和僞分佈式環境,如須要,請參看:大數據Hadoop學習之搭建hadoop平臺(2.1)。hadoop獨立環境和僞分佈式環境都沒法發揮hadoop的價值,若想利用hadoop進行一些有價值的工做,必須搭建hadoop分佈式集羣環境。node
下文以三臺虛擬機爲基礎搭建集羣環境,系統版本爲CentOS-7,虛擬機地址分別爲:192.168.1.10六、192.168.1.10九、192.168.1.110linux
2、修改主機名web
編輯network文件,文件位於/etc/sysconfig路徑下,若文件爲空則添加以下內容,如不爲空,則修改:HOSTNAME=namenode,namenode爲修改的主機名。apache
NETWORKING=yes HOSTNAME=namenode
修改192.168.1.106的主機名爲namenode、192.168.1.109的主機名爲datanode0一、192.168.1.110的主機名爲datanode02。修改後鍵入命令hostname驗證是否修改爲功,如在192.168.1.106上鍵入hostname後出現namenode則表示修改爲功,以下圖所示:瀏覽器
3、修改hosts安全
修改hosts是爲了配置前面修改的主機名和IP的映射關係。hosts文件位於/etc路徑下,三臺虛擬機都須要添加以下內容:app
192.168.1.106 namenode 192.168.1.109 datanode01 192.168.1.110 datanode02
修改後效果如圖所示:框架
4、關閉防火牆(三臺機器均需關閉)
一、查看防火牆狀態
firewall-cmd --state
以下則表示防火牆處於開啓狀態:
二、關閉防火牆
systemctl stop firewalld.service
再經過service iptables status查看防火牆狀態,以下則表示防火牆已經關閉:
可是,這僅僅是在當前狀態下關閉防火牆,系統重啓後防火牆仍然會自動開啓,因此須要禁止開機啓動防火牆
systemctl disable firewalld.service
執行命令後重啓系統生效。
5、關閉selinux(三臺機器均需關閉)
selinux是一個防禦程序,相似於防火牆。編輯selinux文件,文件位於:/etc/sysconfig路徑下
修改SELINUX=enforcing爲SELINUX=disabled,修改後效果以下:
6、ssh免密碼登陸設置
hadoop集羣模式下,各主機之間須要互相通訊,好比上傳文件到HDFS文件系統上時,都須要對文件進行備份。因此須要各機器之間可以進行免密碼登陸。
一、生成祕鑰:輸入命令:ssh-keygen -t rsa,按3次回車以後會生成祕鑰。
二、拷貝祕鑰到本機和其餘兩臺機器上:分別執行命令:ssh-copy-id 192.168.1.109,ssh-copy-id 192.168.1.110拷貝祕鑰。
三、免密碼登陸驗證:執行命令ssh 192.168.1.109,若是不須要輸入密碼就能登陸到109機器上,則免密碼登陸設置成功,110也執行相同的測試。
7、安裝JDK並配置環境變量(三臺機器均須要作相同的設置)
一、建立目錄/home/software,上傳JDK到該目錄下並解壓,此處使用的JDK版本是jdk1.8.0_131
二、配置環境變量:編輯文件profile,文件位於:/etc目錄下,在文件尾部添加以下內容:
export JAVA_HOME=/home/software/jdk1.8.0_131 export PATH=$PATH:$JAVA_HOME/bin
如圖所示:
三、輸入命令source /etc/profile是文件當即生效
四、測試:在任意路徑下輸入命令:java -version,若打印出java的版本信息,則表明java安裝成功。以下所示:
8、安裝hadoop集羣
一、下載hadoop安裝包
下載地址:https://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/,這是hadoop-2.7.3的項目存檔地址。隨着Apache各項目的版本更新,各項目的網站上只上架最新版本和近期歷史重要版本,若是網站下架的項目,須要到Apache存檔地址上尋找,該地址是:https://archive.apache.org/dist/,hadoop存檔地址是:https://archive.apache.org/dist/hadoop/。在hadoop2.7.3版本的地址下,下載hadoop-2.7.3.tar.gz文件包。以下圖所示:
二、安裝hadoop並配置環境變量
①、上傳hadoop安裝包hadoop-2.7.3.tar.gz到/home/software目錄下並解壓,固然,也能夠放在其餘目錄下。
②、編輯文件profile,文件位於/etc目錄下,添加以下代碼:
export HADOOP_HOME=/home/software/hadoop-2.7.3
並在PATH變量後追加以下代碼:
$HADOOP_HOME/bin:$HADOOP_HOME/sbin
輸入命令source /etc/profile使profile配置文件當即生效。最終profile文件效果以下所示:
③、驗證hadoop環境變量是否配置成功:在任何路徑下輸入命令hadoop,若是打印相關信息,則表明hadoop的安裝和環境變量配置成功,以下圖所示:
至此,hadoop安裝和配置環境變量成功,可是,這僅僅是進行了基礎的安裝,還須要進行一些配置,使hadoop能真正的工做。
以上第八小節的操做,在一臺機器上(我使用namenode機器)配置便可,其餘兩臺機器只須要按第②、③點編輯profile文件,由於在接下來的內容中會接着配置hadoop,所有配置完成後,把hadoop-2.7.3文件拷貝到其餘機器便可。
9、hadoop配置
一、修改hadoop-env.sh文件,文件位於/home/software/hadoop-2.7.3/etc/hadoop目錄下。
修改java_home,找到代碼 export JAVA_HOME=${JAVA_HOME} ,修改成JAVA_HOME的值,即:export JAVA_HOME=/home/software/jdk1.8.0_131
二、修改core-site.xml文件,文件一樣位於/home/software/hadoop-2.7.3/etc/hadoop目錄下。
找到<configuration>節點,在該節點下添加以下代碼:
<property> <name>fs.defaultFS</name> <value>hdfs://192.168.1.106:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/software/hadoop-2.7.3/data/tmp</value> </property> <property> <name>fs.trash.interval</name> <value>10080</value> </property>
修改後效果以下:
三、 修改hdfs-site.xml文件,文件一樣位於/home/software/hadoop-2.7.3/etc/hadoop目錄下。
找到<configuration>節點,在該節點下添加以下代碼:
<property>
<!-- 設置備份數爲3份 -->
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<!-- 關閉HDFS權限 -->
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<!-- 設置namenode http訪問地址 -->
<name>dfs.namenode.http-address</name>
<value>192.168.1.106:50070</value>
</property>
<property>
<!-- 設置secondarynamenode http訪問地址 -->
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.1.110:50090</value>
</property>
修改後效果以下:
四、修改mapred-site.xml文件,文件一樣位於/home/software/hadoop-2.7.3/etc/hadoop目錄下,可是該路徑下並不存在mapred-site.xml文件,只存在mapred-site.xml.template文件,將mapred-site.xml.template文件修改成mapred-site.xml便可。
找到<configuration>節點,在該節點下添加以下代碼:
<property>
<!-- 指定mapreduce使用yarn框架來調度 -->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<!-- 指定jobhistory地址 -->
<name>mapreduce.jobhistory.address</name>
<value>192.168.1.106:10020</value>
</property>
<property>
<!-- 指定jobhistorywebapp地址 -->
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.1.106:19888</value>
</property>
<property>
<!-- 開啓uber模式 -->
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>
修改後效果以下:
五、修改yarn-site.xml文件,文件一樣位於/home/software/hadoop-2.7.3/etc/hadoop目錄下。
找到<configuration>節點,在該節點下添加以下代碼:
<property>
<!-- mapreduce爲shuffle -->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!-- 設置resourcemanager主機 -->
<name>yarn.resourcemanager.hostname</name>
<value>192.168.1.109</value>
</property>
<property>
<!-- 設置web安全任務的主機和端口 -->
<name>yarn.web-proxy.address</name>
<value>192.168.1.109:8089</value>
</property>
<property>
<!-- 開啓日誌,能夠在yarn中查看日誌 -->
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<!-- 設置yarn刪除日誌的時間 -->
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<!-- 設置yarn的內存 -->
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
<property>
<!-- 設置yarn的cpu爲8核 -->
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>8</value>
</property>
修改後效果以下:
六、修改slaves文件,文件一樣位於/home/software/hadoop-2.7.3/etc/hadoop目錄下。
hadoop能夠經過腳本命令在整合集羣範圍內啓動和中止守護進程,可是,須要告訴命令hadoop集羣中有哪些機器,slaves文件的做用正是如此,slaves文件中包含了機器的主機名或者是IP地址,每行表明一個機器信息,該文件列舉了能夠運行datanode和節點管理器(nodemanager)的機器。固然,slaves文件能夠不放在/home/software/hadoop-2.7.3/etc/hadoop目錄下,經過修改hadoop-env.sh配置文件中的HADOOP_SLAVES設置能夠把slaves放到別的地方並賦予一個別名。
在slaves中添加以下內容:
192.168.1.106 192.168.1.109 192.168.1.110
修改後效果以下:
七、分發hadoop-2.7.3
進行如上配置以後,把hadoop-2.7.3文件拷貝到其餘機器上,注意,先格式化namenode以後再拷貝。
· ①、格式化hadoop:進入到hadoop-2.7.3文件下,及/home/software/hadoop-2.7.3路徑下,輸入命令:bin/hadoop namenode -format,等待格式化完成,格式化完成以後,在屏幕上打印出來的最後幾行,能夠看到has been successfully formatted表明格式化成功:
②、分發hadoop-2.7.3文件到其餘機器上:使用scp -r hadoop-2.7.3 192.168.1.109:/home/software、scp -r hadoop-2.7.3 192.168.1.110:/home/software命令把hadoop-2.7.3文件拷貝到192.168.1.109和192.168.1.110機器上的/home/software路徑下。
八、 啓動服務
①、啓動hdfs服務:在namenode主機上,進入/home/software/hadoop-2.7.3目錄下,輸入命令sbin/start-dfs.sh,等待服務啓動。啓動服務的過程當中,會提示是否肯定鏈接其餘機器(Are you sure you want to continue connecting (yes/no)?),輸入yes便可。啓動成功以後,輸入jps命令能夠看到啓動了NameNode和DataNode守護進程;其餘兩臺機器上分別啓動了DataNode,SecondaryNameNode、DataNode。
②、啓動yarn服務:啓動yarn服務須要在192.168.1.109機器上啓動,由於在yarn-site.xml配置文件中,配置了yarn的服務地址爲192.168.1.109。進入目錄/home/software/hadoop-2.7.3下,輸入命令:sbin/start-yarn.sh,等待服務啓動。
③、啓動jobhistory:在192.168.1.106機器上啓動jobhistory,進入目錄/home/software/hadoop-2.7.3下,輸入命令:sbin/mr-jobhistory-daemon.sh start historyserver,等待服務啓動。
④、啓動proxyserver防禦進程:在192.168.1.109機器上啓動proxyserver,進入目錄/home/software/hadoop-2.7.3下,輸入命令:sbin/yarn-daemon.sh start proxyserver,等待服務啓動。
九、經過web界面查看hdfs和yarn
①、在瀏覽器輸入地址:192.168.1.106:50070,能看到以下hdfs web界面:
②、在瀏覽器輸入地址:192.168.1.109:8088,能看到以下yarn web界面:
10、結語
至此,hadoop集羣模式安裝並配置成功,能夠在該集羣環境上部署hadoop的應用,好比hive、hue、impala等應用,使hadoop投入工做。可是,此時的集羣並不健壯,還須要進一步配置hadoop。在接下來的博文中會詳細記錄。