前言
前面我們主要分析了搭建Hadoop集群所需要准備的內容和一些提前規划好的項,本篇我們主要來分析如何安裝CentOS操作系統,以及一些基礎的設置,閑言少敘,我們進入本篇的正題。
技術准備
VMware虛擬機、CentOS 6.8 64 bit
安裝流程
因為我的筆記本是Window7操作系統,然后內存配置,只有8G,內存配置太低了,當然為了演示,我會將Hadoop集群中的主節點分配2GB內存,然后剩余的三個節點都是1GB配置。
所有的節點存儲我都設置為50GB。
在安裝操作系統之前,我們需要提前規划好操作系統的分區如何設置,我們知道,在Linux系統中,它的磁盤分區並不同於Windows系統,它是通過目錄掛載的方式進行分區,簡單點說的話就是將不同的系統內置目錄進行分配到不同的邏輯分區中,然后我們在進行存儲的時候只需要根據目錄進行存放就可以了。
上面的這種分區方式是和Windows操作系統有區別的,當然在Linux操作系統中還存在磁盤格式的不同,比如一般常見的格式為:ext2,ext3,ext4等,我們當前最常用的就是ext3,關於每種格式的不同點和應用場景大家有興趣的可以網上查閱,這里不再贅述。
那么我們來分析一下Linux系統中最常見的幾種目錄分區方式
- /boot 系統引導目錄,用來存放與Linux系統啟動相關的程序,比如啟動引導裝載程序等。建議大小200MB。
- /usr 存放系統中安裝的應用程序,一般的數據都比較多,所以建議大於3GB。
- /var 用來存放Linux系統中經常變化的數據以及日志文件,建議大於1GB。
- /home 存放普通用戶的數據,是普通用戶的宿主目錄,一般一個用戶就會創建一個home目錄,建議大小為剩下的空間。
- / 為Linux系統的根目錄,所有的目錄都掛在到這個目錄下面,建議大小為大於5GB以上。
- /tmp 臨時文件存放的地方,一般需要獨立的分區,這樣可以避免系統被塞滿后系統的穩定性。建議大小為500MB以上。
- swap 這個是虛擬內存,一般建議為物理內存的1——2倍。
以上為我基於我們的50GB的存儲空間做的一個規划,如果生產或者物理機大家可以根據需要成比例遞增。
下面,咱們進去CentOS操作系統的詳細安裝過程。
1、首先需要在VMWare中創建一個新的計算機,然后指定CentOS的鏡像路徑和用戶名和密碼。
2、指定當前虛擬機操作系統的存儲大小和內存大小。
3、點擊完成VMware就進入了系統自動安裝的過程中,然后等待完成安裝就可以。
4、至此,我們已經成功的安裝上了CentOS操作系統,然后安裝的過程中順便創建了一個新用戶Hadoop,這個賬戶就是我們后面安裝Hadoop集群環境所使用的賬號。
5、我們登陸到CentOS操作系統,然后進入系統的首先要做的事情就是:改計算機名!改計算機名!改計算機名!。
打開終端輸入界面,然后根據角色更改當前計算機的名稱。打開終端的方式是在右鍵——>Open In Terminal
- 輸入su命令,切換至root超級用戶,然后利用vim 命令編輯/etc/sysconfig/network文件。
- 然后編輯文件中的HOSTNAME,設置為我們提前規划好的Master.Hadoop
- 然后保存該文件,重啟計算機。
- 重啟計算機,查看設置是否生效。
至此,你的計算機名稱更改完畢!
6、在修改完成計算機名之后,我們需要做的就是設置固定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
保存文件,然后重啟一下服務器。至此,關於服務器的網絡我們已經配置完成了。
7、上面我們完成了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系統中就可以了,文章的最后我也會給出相關的下載包文件,再次提醒:一定要上官網下載!
8、上面完成了安裝包的下載,下面就是Hadoop配置了。
其實,關於Hadoop環境的配置分為兩步:1、Java環境配置;2、Hadoop配置。原因很簡單,因為Hadoop就是Java語言編寫的,所以一定要先配置好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環境的配置
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/
我再強調一遍,已經要把權限配置好,要不后面的運行故障足夠把你玩死!!!
8、上面我們完成了Hadoop基礎配置,然后我們格式化文件,來啟動這個單節點的Hadoop集群。
到此,我們已經完成了Hadoop的配置了,下面要做的就是格式化HDFS文件,然后啟動單節點的Hadoop集群。
- Hadoop 分布式存儲系統的HDFS格式化,記住了,這貨只能在初始化系統的時候用一次,一次就好了,要不執行一次數據就丟失一次,我們來執行以下命令:
bin/hadoop namenode -format
看到上面現實的信息,那就說明你已經成功執行了,否則報什么錯誤,解決什么錯誤。一般錯誤的原因都是配置文件粗心導致的錯誤,自己仔細檢查就得了。
- Hadoop 集群進行啟動驗證
這里的驗證方式有兩點,第一點就是保證HDFS完整沒問題,驗證方式如下:
首先,啟動HDFS
sbin/start-dfs.sh
然后,查看狀態
bin/hadoop dfsadmin -report
還有一種更直接的方式,直接打開瀏覽器查看:http://192.168.1.50:50070/dfshealth.html#tab-overview
是不是很酷,這里可以直接查看分布式文件系統HDFS的各個狀態。有興趣的自己查看吧...我們接着驗證其它的內容。
- Hadoop 集群啟動查看
首先,我來啟動Hadoop集群,然后查看其狀態,腳本如下:
sbin/start-yarn.sh
這次來個大招,直接打來瀏覽器瞅瞅,地址為:
至此,一款單機版的裝X神器Hadoop已經被我們搭建成功,當然這只是單機版的后面我們會逐漸完善它,並且,將節點完全配置成功。
在完成到此的時候,已經可以進行集群搭建了,然后后面的文章我將教你怎么搭建所謂的偽分布式...全分布式的大數據平台。....淡定....不要着急.....
結語
此篇篇幅已經超長度了,先到此吧,關於Hadoop大數據集群的搭建后續依次介紹,比如利用Zookeeper搭建Hadoop高可用平台、Map-Reducer層序的開發、Hive產品的數據分析、Spark的應用程序的開發、Hue的集群壞境的集成和運維、Sqoop2的數據抽取等,有興趣的童鞋可以提前關注。
本篇主要介紹了搭建一個Hadoop單機集群,后面我們會逐漸完善它,我會教你如何一步步的搭建起完全分布式的Hadoop集群,然后教你如何使用它,騷年...不要捉急...讓思維飛一會...
有問題可以留言或者私信,隨時恭候有興趣的童鞋加大數據平台深入研究。共同學習,一起進步。
文章的最后給出上一篇的基礎篇:
如果您看了本篇博客,覺得對您有所收獲,請不要吝嗇您的“推薦”。