1. 程式人生 > >Hadoop分散式叢集搭建方法(Version: java 1.8+CentOS 6.3)

Hadoop分散式叢集搭建方法(Version: java 1.8+CentOS 6.3)

夏天小廚

前言

大資料這個概念,說的通俗點就是對海量資料的處理分析。據不完全統計,世界百分之九十的資料都由近幾年產生,且不說海量資料的ETL,單從資料的儲存和資料展現的實時性,傳統的單機就已經無法滿足實際場景的需要例如很多OLAP系統。由此引出了Hadoop,Hadoop是一個開源框架,它允許在整個叢集使用簡單程式設計模型計算機的分散式環境儲存並處理大資料。它的目的是從單一的伺服器到上千臺機器的擴充套件,每一個臺機都可以提供本地計算和儲存。簡單說Hadoop提供了兩個功能:提供海量資料的儲存服務;提供分析海量資料的程式設計框架及執行平臺,我們在研究Hadoop時應重點關注HDFS、MapReduce以及新一代的資源排程管理叢集YARN。

本博文屬於Hadoop入門教程,讀者如對Hadoop生態圈其他技術感興趣,可檢視夏天小廚的其他博文。此次搭建的Hadoop叢集所採用的元件為Java 1.8  +  CentOS 6.3  +  Hadoop 2.6.5。

Hadoop叢集搭建

1、設定三臺虛擬機器,一臺為master,另外兩臺為slave1、slave3。這樣做的目的即在於,master是主節點,兩臺slave為子節點。實現主從分離,分散式結構。

2、保證三臺虛擬機器的網路互通。通過ifconfig命令,檢查各本機的IP地址;su命令切換到root使用者下  su  root

需要將三臺機器IP配置到主機名列表裡面,輸入命令:   vi /etc/hosts

192.168.83.131 master

192.168.83.130 slave1

192.168.83.133 slave3

3、為保證三臺虛擬機器能夠通訊,關閉防火牆。有兩種方式,第一種setup命令;輸入命令:setup

第二種方式通過iptables關閉。輸入關閉命令: service iptables stop  永久關閉防火牆:chkconfig iptables off  執行完成後檢視防火牆關閉狀態 輸入命令:service iptables status 

4、第四步,為了容易分辨哪臺叢集是master,哪臺機器是slave,把hostname更改一下,輸入命令: vi /etc/sysconfig/network 

 重啟終端即可,將本來例如由 [email protected]  ===》  [email protected]  的更改;

5、安裝jdk, 本例中安裝jdk1.8; 切換到root 使用者; su命令  su root

建立目錄 mkdir /usr/java

將通過winSCP從Windows拷到linux系統的jdk拷貝到建立的目錄下,cp jdk-8u161-linux-x64.tar.gz /usr/java

linux系統中解壓即安裝,tar -zvxf jdk-8u161-linux-x64.tar.gz

6、同樣的配置需要在slave中再操作一遍,在兩臺機器上建立目錄 mkdir /usr/java

建立目錄完成之後,在master機器上操作:

scp -r jdk1.8.0_161/ [email protected]:~/usr/java   (將jdk1.8.0_161/ 目錄下的所有檔案從操作機上覆制到[email protected]:~這臺機器的/usr/java目錄下)

此時,出現的正確情況,應該是提示輸入yes,第二步提示輸入slave1機器的密碼;完成之後繼續在master節點上scp -r jdk1.8.0_161/ [email protected]:~/usr/java  將檔案傳送到slave3節點上。

du -sh java1.8.1_161/ 檢視安裝檔案的大小

7、配置環境變數。需要在root許可權下生效,輸入命令  vi  /etc/profile 更改配置檔案,加入以下程式碼:

JAVA_HOME=/usr/java/jdk1.8.0_161/

PATH=$PATH:$JAVA_HOME/bin

再執行命令 1、source /etc/profile

                   2、java -version

 

此時java環境變數已配置成功,對於slave1 slave3機器也是同樣的操作

8、配置 免祕鑰登入SSH免祕鑰登入(需要在root許可權下)

(1)、首先,在master節點上執行$ vi /etc/ssh/sshd_config

去掉以下檔案的註釋,在檔案中找到以下幾行,在開頭出加上 # 即可, 輸入   :  在輸入wq!儲存退出

RSAAuthentication yes      #開啟私鑰驗證

PubkeyAuthentication yes   #開啟公鑰驗證

AuthorizedKeysFile .ssh/authorized_keys

(2)、在master機器上輸入 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 建立一個無密碼的公鑰,-t是型別的意思,

rsa是生成的金鑰型別,-P是密碼,’’表示無密碼,-f後是祕鑰生成後儲存的位置

(3)在master機器上輸入 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 將公鑰id_dsa.pub新增進keys,這樣就可以實現無密登陸ssh

(注意:本來.ssh資料夾下是沒有authorized_keys檔案,並chmod 600 authorized_keys 重要,請不要忽略 )

(4)在master機器上輸入 ssh master 測試免密碼登入,會有詢問,回答yes(如果出現Last login:XXXXXXXXX)則是正確。

(5)在slave1節點上執行  mkdir ~/.ssh

(6)在slave2節點上執行  mkdir ~/.ssh

(7)在master主機上輸入 scp ~/.ssh/authorized_keys [email protected]:~/.ssh/authorized_keys 將主節點的公鑰資訊匯入slave1節點,

匯入時要輸入一下slave1機器的登陸密碼:~

(8)在master主機上輸入 scp ~/.ssh/authorized_keys [email protected]:~/.ssh/authorized_keys 將主節點的公鑰資訊匯入slave3節點,

匯入時要輸入一下slave3機器的登陸密碼:

 (9) 在三臺機器上分別執行chmod 600 ~/.ssh/authorized_keys 賦予祕鑰檔案許可權

(10)在master節點上  分別輸入ssh slave1     ssh slave2   測試是否ssh免祕鑰登陸成功

9、Hadoop安裝包解壓 安裝部署(http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz  下載binary包)

將通過winSCP從Windows拷到linux系統的hadoop壓縮包拷貝到 的家目錄下,cp hadoop-2.6.5.tar.gz ~/ usr/hadoop (此操作需要在檔案本來所在的資料夾 的 目錄下操作)

linux系統中解壓即安裝,tar -zvxf hadoop-2.6.5.tar.gz

cd hadoop-2.6.5 再通過ll命令 檢視hadoop的目錄結構

10、更改hadoop的配置問題   cd /etc/hadoop/ 再ll檢視目錄結構(本系統中準確的目錄為 cd hadoop-2.6.3/etc/hadoop)

第一步:先修改 hadoop-env.sh檔案: 將JAVA_HOME 更改為 JAVA_HOME=/usr/java/jdk1.8.0_161/

第二步:修改 yarn-env.sh 檔案,  jia一句 export  JAVA_HOME=/usr/java/jdk1.8.0_161/

第三步: 修改core-site.xml   

<property>
     <name>fs.defaultFS</name>   //配置一個名稱空間
     <value>hdfs://master:9000</value> //master是主節點
</property>
<property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/hadoop/tmp</value>
</property>

第四步: 修改 hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/hadoop/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.permission</name>
        <value>false</value>
    </property>
</configuration>

第五步: 修改mapred-site.xml.template:  複製一份為mapred-site.xml並修改

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>  //資源排程管理  MapReduce執行在yarn框架上
    </property>
</configuration>

第六步:  修改yarn-site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanafer.address</name>
        <value>master:18040</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:18030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:18025</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:18141</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:18088</value>
    </property>
<!-- Site specific YARN configuration properties -->
</configuration>

第七步: 修改slave 為 slave1 slave2  輸入命令:  vi slaves

11、配置完環境變數之後,cd回主目錄。執行scp -r hadoop-2.6.5 [email protected]:~/usr/hadoop  將配置完成的hadoop檔案完全複製到另外兩臺從節點機器上

12、scp -r hadoop-2.6.5 [email protected]:~/usr/hadoop  複製到slave3節點

測試,啟動Hadoop叢集

為了測試hadoop叢集是否搭建成功,經常通過jps命令檢視相關的程序是否啟動。

1、首先在沒有啟動任何操作時,執行jps命令,從下圖可以看出,目前叢集中沒有任何程序

2、進入hadoop的安裝目錄:cd /usr/hadoop/hadoop-2.6.5/sbin/

執行以下命令  ./start-all.sh     同時可以啟動HDFS 和YARN   也可以單步啟動,使用命令:./start-dfs.sh     ./start-yarn.sh

再執行jps命令檢視: 可以看到主節點的HDFS的NameNode和SNN 以及YARN的RM均已啟動

結語

至此,Hadoop分散式叢集以及搭建成功,可以在平臺上揮灑汗水啦。

夏天小廚做的第一道菜。