1. 程式人生 > >大資料教程(二)—— Hadoop叢集壞境CentOS安裝

大資料教程(二)—— Hadoop叢集壞境CentOS安裝

前言

前面我們主要分析了搭建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的映象路徑和使用者名稱和密碼。

hadoophadoop

2、指定當前虛擬機器作業系統的儲存大小和記憶體大小。

hadoop

hadoop

3、點選完成VMware就進入了系統自動安裝的過程中,然後等待完成安裝就可以。

hadoop

4、至此,我們已經成功的安裝上了CentOS作業系統,然後安裝的過程中順便建立了一個新使用者Hadoop,這個賬戶就是我們後面安裝Hadoop叢集環境所使用的賬號。

hadoop

5、我們登陸到CentOS作業系統,然後進入系統的首先要做的事情就是:改計算機名!改計算機名!改計算機名!

開啟終端輸入介面,然後根據角色更改當前計算機的名稱。開啟終端的方式是在右鍵——>Open In Terminal

  • 輸入su命令,切換至root超級使用者,然後利用vim 命令編輯/etc/sysconfig/network檔案。

hadoop

  • 然後編輯檔案中的HOSTNAME,設定為我們提前規劃好的Master.Hadoop

hadoop

  • 然後儲存該檔案,重啟計算機。

hadoop

hadoop

  • 重啟計算機,檢視設定是否生效。

hadoop

至此,你的計算機名稱更改完畢!

6、在修改完成計算機名之後,我們需要做的就是設定固定IP,然後配置Host檔案。

當然,這裡有幾個知識點需要跟大家講解一下,就是關於網路的配置,其實在VMware虛擬機器中存在幾種網路模式:

hadoop

其實,這裡最常用的就是第二種模式:NAT模式(N):用於共享主機的IP地址,但是,這裡我需要跟大家講解的是,其實在我們的生產環境中,每一臺虛擬機器都是需要獨立配置IP的,為了最大限度的避免因為宿主機的網路帶來的問題,在Hadoop叢集中我們選擇第一種模式:橋接模式(B):直接連線物理網路。啥意思呢?意思就是很簡單,雖然你現在用的是虛擬機器,但是把它當成物理機一樣,也給插上網線,連線到本地的網路中去。

當然,如果選擇這種方式的前提是要保證你的區域網的網段和之前咱們規劃的IP是一致的,必須都是192.168.1.* 這種網段,這樣的目的很簡單就是宿主機和我們的虛擬機器能夠直接通訊,那就意味這主機能聯網,我們的虛擬機器就能聯網。

然後,我們進入我們的虛擬機器進行固定IP的設定。

我們利用介面進行設定,畢竟這種方式比較簡單易操作:

hadoophadoop

然後,根據我們之前的系統規劃,將我們的IP設定上,這裡有一個選項一定要勾選上:Available to all users.我之前搭建叢集的時候就因為這一個選擇折騰了我一天的時間!!這都是坑哈…記住了!!!勾上!!

然後,就是驗證我們當前虛擬機器是否能上網,IP是否能成功配置。

hadoop

然後,確保能上網,畢竟咱們需要下載很多安裝包。

hadoop

應該明白上面我輸入的含義吧、這貨是最常用的命令。

最後一定要記得修改我們的hosts檔案,當然了在生產叢集中一般都會有自己的DNS伺服器,但是這裡我們條件有限,就手動的配置下Host檔案得了。

切換至root超級管理員賬戶,然後修改host檔案,執行以下命令:

vim /etc/hosts

hadoop

儲存檔案,然後重啟一下伺服器。至此,關於伺服器的網路我們已經配置完成了。

7、上面我們完成了CentOS的基礎配置,確保了計算機能夠聯網,下面我們就需要下載Hadoop安裝包,然後進入Hadoop叢集的搭建工作。

首先,我們需要下載安裝Hadoop叢集環境中需要的Jdk包,因為Java編寫的嘛,然後下載Hadoop安裝包,所以我們切換到CentOS的Downloads目錄下:

cd /home/hadoop/Downloads

然後,下載我們所需要的安裝包,到這個目錄下:

cd /home/hadoop/Downloads/

我們找到相關的版本的java JDK和Hadoop版本包,這裡我們選擇Hadoop 最新的安裝包,記住下載安裝包的時候一定要上Hadoop官網上下載,能避免很多不必要的麻煩。

hadoop

CentOS中下載指令碼如下:

wget http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz

hadoop

然後,我們下載JDK,這個上Oracle官網上,找到最新版本的JDK下載就可以了,同樣我們也儲存到Downloads目錄中。

hadoop

JDK下載指令碼如下:

wget http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-linux-x64.tar.gz

到此,我們已經準備好了相關的安裝包,有圖有真相:

hadoop

當然了,如果感覺這種方式比較麻煩,就直接下載到本地,然後拷貝到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版本,直接解壓就好了。

hadoop

然後,上面我們已經介紹過,一般將安裝的程式存入到系統的/usr目錄中,所以這裡在usr目錄中建立一個Java目錄,然後配置環境變數。

mkdir /usr/java

上面的指令碼需要在root超級使用者下進行建立,所以在執行命令的需要先用su命令進行提權。建立完成之後,記得更改一下這個java新建目錄的許可權。

chown hadoop:hadoop /usr/java/

上面的指令碼就是將這個新建的java目錄,變更Owner,直接賦權給hadoop使用者。因為我們需要用這個使用者進行環境的搭建。我們來驗證下:

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資料夾拷貝至我們新建立的資料夾,重新整理該檔案,驗證是否生效,指令碼如下:

[[email protected] Downloads]# cp -r jdk1.8.0_73 /usr/java/
[[email protected] Downloads]# java -version

hadoop

至此,我們的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

我們下面就是需要對幾個關鍵的檔案進行配置了,詳細步驟如下:

首先,我們先進入到我們要配置的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系統給我們提供了一個模板檔案,所以我們拷貝形成一份新的就行了。

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

hadoop

同樣的道理,我們來配置yarn-env.sh 檔案。

hadoop

好了,到此,我們已經完成了Hadoop所有的配置檔案,這個過程一定要小心認真。然後在最後放一個大招,我們知道我們需要制定這所有的檔案Hadoop使用者都有執行許可權,所以我們將通過如下命令將Hadoop資料夾下所有的檔案,進行Owner變更。

chown -R hadoop:hadoop /usr/hadoop/hadoop-2.6.4/

我再強調一遍,已經要把許可權配置好,要不後面的執行故障足夠把你玩死!!!

hadoop

8、上面我們完成了Hadoop基礎配置,然後我們格式化檔案,來啟動這個單節點的Hadoop叢集。

到此,我們已經完成了Hadoop的配置了,下面要做的就是格式化HDFS檔案,然後啟動單節點的Hadoop叢集。

  • Hadoop 分散式儲存系統的HDFS格式化,記住了,這貨只能在初始化系統的時候用一次,一次就好了,要不執行一次資料就丟失一次,我們來執行以下命令:
bin/hadoop namenode -format

hadoop

看到上面顯示的資訊,那就說明你已經成功執行了,否則報什麼錯誤,解決什麼錯誤。一般錯誤的原因都是配置檔案粗心導致的錯誤,自己仔細檢查就得了。

  • Hadoop 叢集進行啟動驗證

這裡的驗證方式有兩點,第一點就是保證HDFS完整沒問題,驗證方式如下:

首先,啟動HDFS

 sbin/start-dfs.sh

然後,檢視狀態

bin/hadoop dfsadmin -report

hadoop

還有一種更直接的方式,直接開啟瀏覽器檢視:http://192.168.1.50:50070/dfshealth.html#tab-overview

hadoop

是不是很酷,這裡可以直接檢視分散式檔案系統HDFS的各個狀態。有興趣的自己檢視吧…我們接著驗證其它的內容。

  • Hadoop 叢集啟動檢視

首先,我來啟動Hadoop叢集,然後檢視其狀態,指令碼如下:

sbin/start-yarn.sh

這次來個大招,直接打來瀏覽器瞅瞅,地址為:

hadoop

至此,一款單機版的裝X神器Hadoop已經被我們搭建成功,當然這只是單機版的後面我們會逐漸完善它,並且,將節點完全配置成功。

在完成到此的時候,已經可以進行叢集搭建了,然後後面的文章我將教你怎麼搭建所謂的偽分散式…全分散式的大資料平臺。….淡定….不要著急…..

結語

此篇篇幅已經超長度了,先到此吧,關於Hadoop大資料叢集的搭建後續依次介紹,比如利用Zookeeper搭建Hadoop高可用平臺、Map-Reducer層序的開發、Hive產品的資料分析、Spark的應用程式的開發、Hue的叢集壞境的整合和運維、Sqoop2的資料抽取等,有興趣的童鞋可以提前關注。

本篇主要介紹了搭建一個Hadoop單機叢集,後面我們會逐漸完善它,我會教你如何一步步的搭建起完全分散式的Hadoop叢集,然後教你如何使用它,騷年…不要捉急…讓思維飛一會…

有問題可以留言或者私信,隨時恭候有興趣的童鞋加大資料平臺深入研究。共同學習,一起進步。

來源:36大資料