【Big Data】HADOOP集羣的配置(一)

Hadoop集羣的配置(一)

摘要: hadoop集羣配置系列文檔,是筆者在實驗室真機環境實驗後整理而得。以便隨後工做所需,作以知識整理,另則與博客園朋友分享實驗成果,由於筆者在學習初期,也遇到很多問題。可是網上一些文檔大多互相抄襲,裏面錯誤百出。筆者結合自學書籍視頻等資料,完成這一套配置資料。實驗結果和過程通過反覆測試無誤後方整理出來的。配置過程當中,初學者如有實驗環境,能夠在真機環境下完成,若無條件,可補習下虛擬機與Linux操做系統的基礎知識,以及裏面對linux常規命令使用,建議讀者邊配置學學習。(本文原創/整理,轉載請標註原文出處: Hadoop集羣的配置(一)html

白寧超java

2015年7月11日22:24:14node

相關文章

  1. 【Oracle RAC集羣搭建1】 集羣概念介紹
  2. 【Oracle RAC集羣搭建2】 ORACLE集羣概念和原理
  3. 【Oracle RAC集羣搭建3】 RAC 工做原理和相關組件
  4. 【Oracle RAC集羣搭建4】 緩存融合技術
  5. 【Oracle RAC集羣搭建5】 RAC 特殊問題和實戰經驗
  6. 【Oracle RAC集羣搭建6】 ORACLE 11 G版本2 RAC在LINUX上使用NFS安裝前準備
  7. 【Oracle RAC集羣搭建7】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC集羣安裝
  8. 【Oracle RAC集羣搭建8】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC數據庫安裝
  9. 【Oracle RAC集羣搭建9】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC基本測試與使用
  10. 【MySql集羣搭建】   真機環境下MySQL-Cluster搭建文檔linux

  11. 【Hadoop集羣搭建1】Hadoop集羣的配置web

  12. 【Hadoop集羣搭建2】Hadoop集羣的配置 shell

1.    實驗準備


1.1    目的:

在虛擬機環境下,讓同窗們學會從零開始配置Hadoop-2.2集羣,並嘗試在真實環境下搭建集羣。數據庫

1.2    主要內容:

物理機器總共4臺,想配置基於物理機的Hadoop集羣中包括4個節點: 1 個 Master, 3個 Salve ,節點之間局域網鏈接,能夠相互 ping通。IP的分佈如表1所示。apache

            表1        4個節點的IP地址分配及角色windows

Master機器主要配置NameNode和JobTracker的角色,負責總管分佈式數據和分解任務的執行;3個Salve機器配置DataNode和TaskTracker的角色,負責分佈式數據存儲以及任務的執行。api

用到的全部文件                        

1.4 用戶信息(全部節點同樣)

2.搭建虛擬集羣環境


安裝完VMWare10後,解壓CentOS到指定文件夾下,打開VMWare10,點擊菜單欄「文件」-->「打開」,選擇CentOS文件,如圖。

 

右擊CentOS選擇屬性,彈出設置窗口。裏面是虛擬系統的主要硬件參數信息,讀者能夠根據本身機器性能配置,這裏選默認。

 

2.1三種鏈接方式

 VMWare提供了三種工做模式,它們是bridged(橋接模式)、NAT(網絡地址轉換模式)和host-only(主機模式)。要想在網絡管理和維護中合理應用它們,就應該先了解一下這三種工做模式。主機上安裝VMware Workstation或VMware Server的時候,默認會安裝3塊虛擬網卡,這3塊虛擬網卡的名稱分別爲VMnet0、VMnet一、VMnet8,其中VMnet0的網絡屬性爲「物 理網卡」,VMnet1與VMnet8的網絡屬性爲「虛擬網卡」。在默認狀況下,VMnet1虛擬網卡的定義是「僅主機虛擬網絡」,VMnet8虛擬網卡的定義是「NAT網絡」,同時,主機物理網卡被定義爲「橋接網絡」,主機物理網卡也能夠稱爲VMnet0

 你們在安裝完虛擬機後,默認安裝了兩個虛擬網卡,VMnet1和 VMnet8。其中VMnet1是hostonly網卡,用於host方式鏈接網絡的。VMnet8是NAT網卡,用 於NAT方式鏈接網絡的。它們的IP地址默認是的,若是要用虛擬機作實驗的話,最好將VMnet1到VMnet8的IP地址改掉。習慣上把 VMware虛擬網卡使用的網段「固定」,即設置爲靜態ip。使用以下原則:VMnet1對應的網段是192.168.10.0,VMnet8對應的網段是 192.168.80.0

1.bridged(橋接模式)

  在這種模式下,VMWare虛擬出來的操做系統就像是局域網中的一臺獨立的主機,它能夠訪問網內任何一臺機器。在橋接模式下,須要手工爲虛擬系統配置IP地址、子網掩碼,並且還要和宿主機器處於同一網段,這樣虛擬系統才能和宿主機器進行通訊。同時,因爲這個虛擬系統是局域網中的一個獨立的主機系統,那麼就能夠手工配置它的TCP/IP配置信息,以實現經過局域網的網關或路由器訪問互聯網。使用橋接模式的虛擬系統和宿主機器的關係,就像鏈接在同一個Hub上的兩臺電腦。想讓它們相互通信,你就須要爲虛擬系統配置IP地址和子網掩碼,不然就沒法通訊。若是想利用VMWare在局域網內新建一個虛擬服務器,爲局域網用戶提供網絡服務,就應該選擇橋接模式。使用這種方式很簡單,前提是要獲得1個以上的地址。對於想進行種種網絡實驗的朋友不太適合,由於沒法對虛擬機的網絡進行控制,它直接就出去了。

 

使用橋接方式,A,A1,A2,B可互訪。

2.host-only(僅主機模式)

  在某些特殊的網絡調試環境中,要求將真實環境和虛擬環境隔離開,這時你就可採用host-only模式。在host-only模式中,全部的虛擬系統是能夠相互通訊的,但虛擬系統和真實的網絡是被隔離開的。提示:在host-only模式下,虛擬系統和宿主機器系統是能夠相互通訊的,至關於這兩臺機器經過雙絞線互連。在host-only模式下,虛擬系統的TCP/IP配置信息(如IP地址、網關地址、DNS服務器等),均可以由VMnet1(host-only)虛擬網絡的DHCP服務器來動態分配。若是想利用VMWare建立一個與網內其餘機器相隔離的虛擬系統,進行某些特殊的網絡調試工做,能夠選擇host-only模式。

    

使用Host方式,A,A1,A2能夠互訪,但A1,A2不能訪問B,也不能被B訪問。

3.NAT(網絡地址轉換模式)

  使用NAT模式,就是讓虛擬系統藉助NAT(網絡地址轉換)功能,經過宿主機器所在的網絡來訪問公網。也就是說,使用NAT模式能夠實如今虛擬系統中安全的訪問互聯網。NAT模式下虛擬系統的TCP/IP配置信息是由VMnet8(NAT)虛擬網絡的DHCP服務器提供的,沒法進行手工修改,所以虛擬系統也就沒法和本局域網中的其餘真實主機進行通信。採用NAT模式最大的優點是虛擬系統接入互聯網很是簡單,你不須要進行任何其餘的配置,只須要宿主機器能訪問互聯網便可。若是想利用VMWare安裝一個新的虛擬系統,在虛擬系統中不用進行任何手工配置就能直接訪問互聯網,建議採用NAT模式。提示:以上所提到的NAT模式下的VMnet8虛擬網絡,host-only模式下的VMnet1虛擬網絡,以及bridged模式下的VMnet0虛擬網絡,都是由VMWare虛擬機自動配置而生成的,不須要用戶自行設置。VMnet8和VMnet1提供DHCP服務,VMnet0虛擬網絡則不提供。

 

使用NAT方式,A1,A2能夠訪問B,但B不能夠訪問A1,A2。但A,A1,A2能夠互訪。

全局網絡拓撲圖:

 

思考:真實部署要根據網絡環境的不一樣而配置不一樣的鏈接方式,那麼請思考,在6601機房搭建真實集羣對應哪一種鏈接方式?

2.2  host-only鏈接步驟

在學習VMWare虛擬網絡時,咱們建議選擇host-only方式。第一,若是你的電腦是筆記本,從A移到B網絡環境發生變化後,只有host-only方式不受影響,其餘方式必須從新設置虛擬交換機配置。第二,將真實環境和虛擬環境隔離開,保證了虛擬環境的安全。

按綠色箭頭啓動虛擬機,角色選擇other,輸入root角色名,這裏的密碼是hadoop,具體密碼由CentOS安裝時設置,而咱們使用的是安裝好的。

 

因爲選擇的是host-only鏈接方式,VMnet1必須打開,而後設置ipv4。

 

 

因爲host-only方式不能鏈接外網,因此DNS不需配置,其餘方式想要訪問外網必須配置。

在Linux桌面環境中右擊電腦圖標,選中「EditConnection」進行以下配置:

 

 

打開終端,查看配置狀況。

 

檢查與Windows主機的通訊狀況。

1.Windows-->Linux

 

2.Linux-->Winodws

 

思考:訪問外部主機失敗,分析爲何?

2.3 使用PieTTY鏈接Linux

    填寫鏈接目的的IP地址,端口是SSH模式的訪問端口22,點擊open,輸入角色和密碼登陸。

 

提示「潛在安全缺口」,因爲首次使用PieTTy登錄Linux[微軟用戶1] 虛擬機,PieTTY緩存裏面並無該Linux虛擬機的rsa2公鑰信息,所以會提示是否信任次機器,咱們選擇是。

 

 

 

其餘經常使用登陸工具還有putty,XShell等,PieTTY相比之下操做簡單功能豐富。

2.3 新建用戶

使用root登錄後,建立Hadoop用戶,在hadoopGroup組裏。

1.建立hadoopGroup組

添加用戶時,能夠將用戶添加到現有的用戶組,或者建立一個新的用戶組。能夠在/etc/group文件中看到全部的用戶組信息。默認的用戶組一般用來管理系統用戶,不建議將普通用戶添加到這些用戶組。使用groupadd命令建立用戶組的語法爲:

groupadd [-g gid [-o]] [-r] [-f] groupname

每一個選項的含義以下:

 

若是不指定選項,系統將使用默認值。建立一個 hadoopGroup用戶組:

$ groupadd hadoopGroup
2. 添加Hadoop用戶

添加用戶可使用useradd命令,語法爲:

useradd -d homedir -g groupname -m -s shell -u userid accountname

每一個選項的含義以下:



指定用戶主目錄/home/hadoop用戶組hadoopGroup。

 

用戶被建立後,可使用passwd命令來設置密碼,如:

$ passwd hadoop
Changing password for user hadoop.
New Linux password:******
Retype new UNIX password:******
passwd: all authentication tokens updated successfully.

2.4 安裝jdk,hadoop

1.使用winscp傳輸文件

在root用戶下,執行命令rm -rf  /usr/local/*

刪除目錄下全部內容(當前內容無用)使用winscp把jdk文件從windows複製到/usr/local目錄下。點擊新建一個會話。

 

輸入用戶和密碼:

 

 

 

 

2.解壓文件

解壓命令tar -zvxf jdk-7u67-linux-x64.tar.gz到當前目錄。

 

 更改文件名爲jdk1.7。

一樣,解壓命令tar -zvxf jdk-7u67-linux-x64.tar.gz到當前目錄,並經過命令

 mv hadoop-2.2.0 /home/hadoop/hadoop2.2 移動到Hadoop用戶的主目錄下。

 

3.目錄規劃

Hadoop程序存放目錄爲/home/hadoop/hadoop2.2,相關的數據目錄,包括日誌、存儲等指定爲/home/hadoop/hadoop2.2。將程序和數據目錄分開,能夠更加方便的進行配置的同步。

具體目錄的準備與配置以下所示:

l  在每一個節點上建立程序存儲目錄/home/hadoop/hadoop2.2,用來存放Hadoop程序文件。

l  在每一個節點上建立數據存儲目錄/home/hadoop/hadoop2.2/hdfs,用來存放集羣數據。

l  在主節點node上建立目錄/home/hadoop/hadoop2.2/hdfs/name,用來存放文件系統元數據。

l  在每一個從節點上建立目錄/home/hadoop/hadoop2.2/hdfs/data,用來存放真正的數據。

l  全部節點上的日誌目錄爲/home/hadoop/hadoop2.2/logs。

l  全部節點上的臨時目錄爲/home/hadoop/hadoop2.2/tmp。

執行命令mkdir -p  /home/hadoop/hadoop2.2/hdfs,爲尚未的目錄建立,後面以此類推。

給hadoopGroup組賦予權限,凡是屬於hadoopGroup組的用戶都有權利使用hadoop2.2,方便多用戶操做。首先,把Hadoop2.2加入到hadoopGroup組: 

 chgrp -R hadoopGroup hadoop2.2

給這個組賦予權限:

chmod -R g=rwx hadoop2.2

4.導入JDK環境變量

執行cd /etc命令後執行vi profile,在行末尾添加:

export JAVA_HOME=/usr/local/jdk1.7

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export PATH=.:$JAVA_HOME/bin:$PATH


 執行source profile,使其配置當即生效。

 執行java –version,查看是否安裝成功。

 

5.導入Hadoop環境變量

同上面同樣,修改profile。

export  HADOOP_HOME=/home/hadoop/hadoop2.2

export PATH=.:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

export HADOOP_LOG_DIR=/home/hadoop/hadoop2.2/logs

export YARN_LOG_DIR=$HADOOP_LOG_DIR

 

執行hadoop命令,查看有沒有成功。

2.5.修改主機名

1.修改當前會話中的主機名,執行命令hostname node。

 

可是這種配置只對當前狀態有效,一旦從新啓動虛擬機,主機名未變。

2.修改配置文件中的主機名,執行命令vi /etc/sysconfig/network。

 

重啓生效,因爲第一步已經在當前會話中配置了hostname,因此不用重啓。

3.綁定hostname與IP

執行vi/etc/hosts,增長內容以下:

192.168.10.100         node

192.168.10.101         node1

192.168.10.102         node2

192.168.10.103         node3

Ping node,檢驗是否修改爲功?

 

2.6 關閉防火牆

若是不關閉防火牆,有如下幾種狀況出現:

第一:hdfs的Web管理頁面,打不開該節點的文件瀏覽頁面。

第二:後臺運行腳本(HIVE的),會出現莫名其妙的假死狀態。

第三:在刪除和增長節點的時候,會讓數據遷移處理時間更長,甚至不能正常完成相關操做。

第四:無論你作任何操做,都是會運行不正常,並且很不順手。

執行命令service iptables stop

驗證:  service iptables status

 

執行上面操做能夠關閉防火牆,但重啓後還會繼續運行,因此還要關閉防火牆的自動運行。

執行命令 chkconfig iptables off

驗證:  chkconfig --list |grep iptables

 

2.7 修改hadoop2.2配置文件

      Hadoop沒有使用java.util.Properties管理配置文件,也沒有使用Apache Jakarta Commons Configuration管理配置文件,而是使用了一套獨有的配置文件管理系統,並提供本身的API,即便org.apache.hadoop.conf.Configuration處理配置信息,你們也能夠經過eclipse工具分析下源碼,並利用這些api修改配置文件。

因爲Hadoop集羣中每一個機器上面的配置基本相同,因此先在namenode上面進行配置部署,而後再複製到其餘節點。 

 

1. 配置 ~/hadoop2.2/etc/hadoop下的hadoop-env.sh、yarn-env.sh、mapred-env.sh

修改JAVA_HOME值(export JAVA_HOME=/usr/local/jdk1.7/)

 

2. 配置 ~/hadoop2.2/etc/hadoop/slaves(這個文件裏面保存全部slave節點)

                

3. 配置 ~/hadoop-2.2.0/etc/hadoop/core-site.xml

<configuration>
 
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node:9000/</value>
        <description> 設定 namenode 的 主機名 及 端口 </description>
    </property>
 
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp/hadoop-${user.name}</value>
        <description> 存放臨時文件的目錄 </description>
    </property>  
 
    <property>
        <name>hadoop.proxyuser.hadoop.hosts</name>
        <value>*</value>
    </property>
 
    <property>
        <name>hadoop.proxyuser.hadoop.groups</name>
        <value>*</value>
    </property>
 
</configuration>

 http://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-common/core-default.xml

4. 配置 ~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml

<configuration>  
 
    <property>  
        <name>dfs.namenode.http-address</name>  
        <value>node:50070</value>  
        <description> NameNode 經過當前參數 得到 fsimage 和 edits </description>  
    </property>
 
    <property>  
        <name>dfs.namenode.secondary.http-address</name>  
        <value>node1:50090</value>  
        <description> SecondNameNode 經過當前參數 得到最新的 fsimage </description>  
    </property> 
 
    <property>
        <name>dfs.replication</name>
        <value>3</value>
        <description> 設定 HDFS 存儲文件的副本個數,默認爲3 </description>
    </property>
 
    <property>  
        <name>dfs.namenode.name.dir</name>  
        <value>file:///home/hadoop/hadoop2.2/hdfs/name</value>  
        <description> namenode 用來持續存放命名空間和交換日誌的本地文件系統路徑 </description>  
    </property>  
 
    <property>  
        <name>dfs.datanode.data.dir</name>
        <value>file:///home/hadoop/hadoop2.2/hdfs/data</value>  
        <description> DataNode 在本地存放塊文件的目錄列表,用逗號分隔 </description>  
    </property>  
 
    <property>  
        <name>dfs.namenode.checkpoint.dir</name>  
        <value>file:///home/hadoop/hadoop2.2/hdfs/namesecondary</value>  
        <description> 設置 secondary 存放 臨時鏡像 的本地文件系統路徑,若是這是一個用逗號分隔的文件列表,則鏡像將會冗餘複製到全部目錄,只對 secondary 有效 </description>  
    </property> 
 
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
 
    <property>
        <name>dfs.stream-buffer-size</name>
        <value>131072</value>
        <description> 默認是4KB,做爲hadoop緩衝區,用於hadoop讀hdfs的文件和寫
hdfs的文件,還有map的輸出都用到了這個緩衝區容量,對於如今的硬件很保守,能夠設置爲128k
(131072),甚至是1M(太大了map和reduce任務可能會內存溢出) </description>
    </property> 
 
    <property>  
        <name>dfs.namenode.checkpoint.period</name>  
        <value>3600</value>  
        <description> 兩次 checkpoints 之間的間隔,單位爲秒,只對 secondary 有效 </description>  
    </property> 
 
</configuration> 

 http://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

5. 配置 ~/hadoop-2.2.0/etc/hadoop/mapred-site.xml

<configuration>  
         <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
 <property>
		<name>mapreduce.jobtracker.address</name>
		<value>hdfs://trucy:9001</value>
	</property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>node:10020</value>
        <description>
MapReduce JobHistory Server host:port, default port is 10020.</description>
    </property>
 
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>node:19888</value>
<description>MapReduce JobHistory Server Web UI host:port, default port is 19888.</description>
    </property>
 
</configuration> 

 http://hadoop.apache.org/docs/r2.2.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

6. 配置 ~/hadoop-2.2.0/etc/hadoop/yarn-site.xml

<configuration>
 
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node</value>
    </property>
 
    <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>node:8032</value>
    </property>
 
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>node:8030</value>
    </property>
 
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>node:8031</value>
    </property>
 
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>node:8033</value>
    </property>
 
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>node:8088</value>
    </property>
 
</configuration>

 http://hadoop.apache.org/docs/r2.2.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml


 未完待續.......

下節:Hadoop集羣的配置(二)

尾註:本系列文檔,筆者真機環境測試無誤得以分享,純屬原創,如有轉載,請註釋出處.

相關文章
相關標籤/搜索