前言html
前面咱們主要分析了搭建Hadoop集羣所須要準備的內容和一些提早規劃好的項,本篇咱們主要來分析如何安裝CentOS操做系統,以及一些基礎的設置,閒言少敘,咱們進入本篇的正題。java
技術準備node
VMware虛擬機、CentOS 6.8 64 bitlinux
安裝流程web
由於個人筆記本是Window7操做系統,而後內存配置,只有8G,內存配置過低了,固然爲了演示,我會將Hadoop集羣中的主節點分配2GB內存,而後剩餘的三個節點都是1GB配置。apache
全部的節點存儲我都設置爲50GB。vim
在安裝操做系統以前,咱們須要提早規劃好操做系統的分區如何設置,咱們知道,在Linux系統中,它的磁盤分區並不一樣於Windows系統,它是經過目錄掛載的方式進行分區,簡單點說的話就是將不一樣的系統內置目錄進行分配到不一樣的邏輯分區中,而後咱們在進行存儲的時候只須要根據目錄進行存放就能夠了。瀏覽器
上面的這種分區方式是和Windows操做系統有區別的,固然在Linux操做系統中還存在磁盤格式的不一樣,好比通常常見的格式爲:ext2,ext3,ext4等,咱們當前最經常使用的就是ext3,關於每種格式的不一樣點和應用場景你們有興趣的能夠網上查閱,這裏再也不贅述。服務器
那麼咱們來分析一下Linux系統中最多見的幾種目錄分區方式網絡
以上爲我基於咱們的50GB的存儲空間作的一個規劃,若是生產或者物理機你們能夠根據須要成比例遞增。
下面,我們進去CentOS操做系統的詳細安裝過程。
一、首先須要在VMWare中建立一個新的計算機,而後指定CentOS的鏡像路徑和用戶名和密碼。
二、指定當前虛擬機操做系統的存儲大小和內存大小。
三、點擊完成VMware就進入了系統自動安裝的過程當中,而後等待完成安裝就能夠。
四、至此,咱們已經成功的安裝上了CentOS操做系統,而後安裝的過程當中順便建立了一個新用戶Hadoop,這個帳戶就是咱們後面安裝Hadoop集羣環境所使用的帳號。
五、咱們登錄到CentOS操做系統,而後進入系統的首先要作的事情就是:改計算機名!改計算機名!改計算機名!。
打開終端輸入界面,而後根據角色更改當前計算機的名稱。打開終端的方式是在右鍵——>Open In Terminal
至此,你的計算機名稱更改完畢!
六、在修改完成計算機名以後,咱們須要作的就是設置固定IP,而後配置Host文件。
固然,這裏有幾個知識點須要跟你們講解一下,就是關於網絡的配置,其實在VMware虛擬機中存在幾種網絡模式:
其實,這裏最經常使用的就是第二種模式:NAT模式(N):用於共享主機的IP地址,可是,這裏我須要跟你們講解的是,其實在咱們的生產環境中,每一臺虛擬機都是須要獨立配置IP的,爲了最大限度的避免由於宿主機的網絡帶來的問題,在Hadoop集羣中咱們選擇第一種模式:橋接模式(B):直接鏈接物理網絡。啥意思呢?意思就是很簡單,雖然你如今用的是虛擬機,可是把它當成物理機同樣,也給插上網線,鏈接到本地的網絡中去。
固然,若是選擇這種方式的前提是要保證你的局域網的網段和以前我們規劃的IP是一致的,必須都是192.168.1.* 這種網段,這樣的目的很簡單就是宿主機和咱們的虛擬機可以直接通訊,那就意味這主機能聯網,咱們的虛擬機就能聯網。
而後,咱們進入咱們的虛擬機進行固定IP的設置。
咱們利用界面進行設置,畢竟這種方式比較簡單易操做:
而後,根據咱們以前的系統規劃,將咱們的IP設置上,這裏有一個選項必定要勾選上:Available to all users.我以前搭建集羣的時候就由於這一個選擇折騰了我一天的時間!!這都是坑哈...記住了!!!勾上!!
而後,就是驗證咱們當前虛擬機是否能上網,IP是否能成功配置。
而後,確保能上網,畢竟我們須要下載不少安裝包。
應該明白上面我輸入的含義吧、這貨是最經常使用的命令。
最後必定要記得修改咱們的hosts文件,固然了在生產集羣中通常都會有本身的DNS服務器,可是這裏咱們條件有限,就手動的配置下Host文件得了。
切換至root超級管理員帳戶,而後修改host文件,執行如下命令:
vim /etc/hosts
保存文件,而後重啓一下服務器。至此,關於服務器的網絡咱們已經配置完成了。
七、上面咱們完成了CentOS的基礎配置,確保了計算機可以聯網,下面咱們就須要下載Hadoop安裝包,而後進入Hadoop集羣的搭建工做。
首先,咱們須要下載安裝Hadoop集羣環境中須要的Jdk包,由於Java編寫的嘛,而後下載Hadoop安裝包,因此咱們切換到CentOS的Downloads目錄下:
cd /home/hadoop/Downloads
而後,下載咱們所須要的安裝包,到這個目錄下:
cd /home/hadoop/Downloads/
咱們找到相關的版本的java JDK和Hadoop版本包,這裏咱們選擇Hadoop 最新的安裝包,記住下載安裝包的時候必定要上Hadoop官網上下載,能避免不少沒必要要的麻煩。
CentOS中下載腳本以下:
wget http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz
而後,咱們下載JDK,這個上Oracle官網上,找到最新版本的JDK下載就能夠了,一樣咱們也保存到Downloads目錄中。
JDK下載腳本以下:
wget http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-linux-x64.tar.gz
到此,咱們已經準備好了相關的安裝包,有圖有真相:
固然了,若是感受這種方式比較麻煩,就直接下載到本地,而後拷貝到CentOS系統中就能夠了,文章的最後我也會給出相關的下載包文件,再次提醒:必定要上官網下載!
八、上面完成了安裝包的下載,下面就是Hadoop配置了。
其實,關於Hadoop環境的配置分爲兩步:一、Java環境配置;二、Hadoop配置。緣由很簡單,由於Hadoop就是Java語言編寫的,因此必定要先配置好Java環境。
首先,咱們來解壓剛纔咱們下載的JDK文件,而後配置環境變量。
解壓腳本以下,記住一點要在剛纔我們下載的Downloads文件夾下進行:
tar -zxvf jdk-8u101-linux-x64.tar.gz
若是這裏一直報錯,或者無法解壓,那說明你下載的JDK安裝包不完整,須要重新下載,或者你直接Windows環境下確保下載完成,順便解壓了。
因此,這裏我就用了以前已經下載的jdk版本,直接解壓就行了。
而後,上面咱們已經介紹過,通常將安裝的程序存入到系統的/usr目錄中,因此這裏在usr目錄中建立一個Java目錄,而後配置環境變量。
mkdir /usr/java
上面的腳本須要在root超級用戶下進行建立,因此在執行命令的須要先用su命令進行提權。建立完成以後,記得更改一下這個java新建目錄的權限。
chown hadoop:hadoop /usr/java/
上面的腳本就是將這個新建的java目錄,變動Owner,直接賦權給hadoop用戶。由於咱們須要用這個用戶進行環境的搭建。咱們來驗證下:
這裏重點提示下:權限配置在linux系統中是一個很重的流程,必定要確保當前用戶可以擁有文件的執行權限,要不會出現各類莫名其妙的問題!!!
下面,咱們來更改一下系統的環境變量,記得使用root用戶,編輯腳本:
vim /etc/profile
添加,以下腳本:
# set java environment export JAVA_HOME=/usr/java/jdk1.8.0_73 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
而後,將咱們解壓好的java文件夾拷貝至咱們新建立的文件夾,刷新該文件,驗證是否生效,腳本以下:
[root@Master Downloads]# cp -r jdk1.8.0_73 /usr/java/ [root@Master Downloads]# java -version
至此,咱們的Java運行環境已經配置完成。
Hadoop的安裝其實很簡單的,由於只須要配置好相應的幾個關鍵我文件就能夠了。
首先,和上面的java配置相似,咱們如今/usr目錄下建立一個hadoop文件夾,而後賦權給hadoop用戶,而後將咱們下載的hadoop安裝包進行解壓,拷貝至咱們新建的hadoop目錄,腳本以下:
--解壓Hadoop安裝包 tar -zxvf hadoop-2.6.4.tar.gz --/usr目錄下,建立hadoop目錄 mkdir /usr/hadoop --拷貝解壓後的hadoop安裝包 cp -r hadoop-2.6.4 /usr/hadoop --賦權給Hadoop用戶 chown hadoop:hadoop /usr/hadoop/
咱們下面就是須要對幾個關鍵的文件進行配置了,詳細步驟以下:
首先,咱們先進入到咱們要配置的hadoop安裝目錄中:
cd /usr/hadoop/hadoop-2.6.4/
這裏提示一下,全部的我們須要配置的文件都存放於hadoop安裝目錄的/etc/hadoop中,首先我們來配置第一個文件core-site.xml
vim etc/hadoop/core-site.xml
添加如下內容:
<configuration> <!-- HDFS file path --> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.1.50:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/hadoop/hadoop-2.6.4/tmp</value> <description>Abasefor other temporary directories.</description> </property> <property> </configuration>
上面的配置項很簡單,首先配置HDFS默認的鏈接地址,而後流文件的配置大小,默認是4K過小了,這裏咱們將這個值改的大一點,而後最後就是生成臨時結果的配置路徑,這裏須要根據你的配置結果手動建立。
下面,咱們就來建立該目錄,若是在生產環境中,咱們須要將該配置的目錄指定到一個固定的配置目錄下,這裏我們方便演示就直接配置到Hadoop安裝目錄裏面了。
腳本以下:
mkdir tmp
而後,咱來配置第二個文件hdfs-site.xml
vim etc/hadoop/hdfs-site.xml
<property> <name>dfs.namenode.secondary.http-address</name> <value>192.168.1.50:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/hadoop/hadoop-2.6.4/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/hadoop/hadoop-2.6.4/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property>
這幾個參數解釋下含義:
<1>dfs.namenode.secondary.http-address 這個含義就是SecondName的地址,在上一篇文章中我就分析過,這個是做爲NameNode的一個備份,目的就是災備之用了。由於咱們這個就一個機器因此都配置了相同的機器,只是用了不一樣的端口。
<2>dfs.namenode.name.dir 和 dfs.namenode.data.dir兩個配置指的是NameNode存儲的DataNode元數據的信息,這裏須要配置兩個目錄一個是存放Name和Data目錄,稍後咱們須要手動建立出這兩個目錄
<3>dfs.replication這個含義是數據文件塊(black)複製備份的個數,咱們知道在HDFS分佈式文件系統中,爲了保證數據的完整性,底層的機制是須要多拷貝幾份數據分不到不一樣的計算機上的,目的一樣是災備。
<4>dfs.webhdfs.enabled這個指的是是否能夠經過web站點進行Hdfs管理,後面咱們會演示,如何經過頁面打開HDFS文件。
好,咱們下面手動來建立上面的Name和Data的兩個目錄:
mkdir dfs mkdir dfs/name mkdir dfs/data
至此,咱們第二個文件配置完成。
而後,咱來配置第三個文件mapred-site.xml
前面的兩個文件,都有現成的文件進行配置,可是,這第三個文件須要咱們本身來建立,固然,Hadoop系統給咱們提供了一個模板文件,因此咱們拷貝造成一份新的就好了。
咱們執行cp命令,來建立一個新的mapred-site.xml文件。
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
而後,修改該文件。腳本以下:
vim etc/hadoop/mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>192.168.1.50:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>192.168.1.50:19888</value> </property> </configuration>
咱們來解釋這幾個參數的含義:第一個就是制定當前Hadoop的並行運行計算架構,這裏爲yarn,固然還有其它的運行架構好比:spark等,第二個就是Job運行的歷史記錄Server,第三個就是歷史運行記錄的Web服務器。
而後,咱來配置第四個文件yarn-site.xml。
vim etc/hadoop/yarn-site.xml
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>192.168.1.50:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>192.168.1.50:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>192.168.1.50:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>192.168.1.50:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>192.168.1.50:8088</value> </property>
這個yarn的配置參數我就不怎麼解釋了,由於咱們後續的調優會一直圍繞這個文件進行。
至此,咱們已經完成了Hadoop四個配置文件的配置,而後,不要忘記了最重要的一點:配置Hadoop的jdk路徑,不指定是不能運行的。
hadoop-env.sh 和 yarn-env.sh 在開頭添加以下java環境變量:
export JAVA_HOME=/usr/java/jdk1.8.0_73
vim etc/hadoop/hadoop-env.sh
一樣的道理,咱們來配置yarn-env.sh 文件。
好了,到此,咱們已經完成了Hadoop全部的配置文件,這個過程必定要當心認真。而後在最後放一個大招,咱們知道咱們須要制定這全部的文件Hadoop用戶都有執行權限,因此咱們將經過以下命令將Hadoop文件夾下全部的文件,進行Owner變動。
chown -R hadoop:hadoop /usr/hadoop/hadoop-2.6.4/
我再強調一遍,已經要把權限配置好,要不後面的運行故障足夠把你玩死!!!
八、上面咱們完成了Hadoop基礎配置,而後咱們格式化文件,來啓動這個單節點的Hadoop集羣。
到此,咱們已經完成了Hadoop的配置了,下面要作的就是格式化HDFS文件,而後啓動單節點的Hadoop集羣。
bin/hadoop namenode -format
看到上面現實的信息,那就說明你已經成功執行了,不然報什麼錯誤,解決什麼錯誤。通常錯誤的緣由都是配置文件粗心致使的錯誤,本身仔細檢查就得了。
這裏的驗證方式有兩點,第一點就是保證HDFS完整沒問題,驗證方式以下:
首先,啓動HDFS
sbin/start-dfs.sh
而後,查看狀態
bin/hadoop dfsadmin -report
還有一種更直接的方式,直接打開瀏覽器查看:http://192.168.1.50:50070/dfshealth.html#tab-overview
是否是很酷,這裏能夠直接查看分佈式文件系統HDFS的各個狀態。有興趣的本身查看吧...咱們接着驗證其它的內容。
首先,我來啓動Hadoop集羣,而後查看其狀態,腳本以下:
sbin/start-yarn.sh
此次來個大招,直接打來瀏覽器瞅瞅,地址爲:
至此,一款單機版的裝X神器Hadoop已經被咱們搭建成功,固然這只是單機版的後面咱們會逐漸完善它,而且,將節點徹底配置成功。
在完成到此的時候,已經能夠進行集羣搭建了,而後後面的文章我將教你怎麼搭建所謂的僞分佈式...全分佈式的大數據平臺。....淡定....不要着急.....
結語
此篇篇幅已經超長度了,先到此吧,關於Hadoop大數據集羣的搭建後續依次介紹,好比利用Zookeeper搭建Hadoop高可用平臺、Map-Reducer層序的開發、Hive產品的數據分析、Spark的應用程序的開發、Hue的集羣壞境的集成和運維、Sqoop2的數據抽取等,有興趣的童鞋能夠提早關注。
本篇主要介紹了搭建一個Hadoop單機集羣,後面咱們會逐漸完善它,我會教你如何一步步的搭建起徹底分佈式的Hadoop集羣,而後教你如何使用它,騷年...不要捉急...讓思惟飛一會...
有問題能夠留言或者私信,隨時恭候有興趣的童鞋加大數據平臺深刻研究。共同窗習,一塊兒進步。
文章的最後給出上一篇的基礎篇:
若是您看了本篇博客,以爲對您有所收穫,請不要吝嗇您的「推薦」。