1. 程式人生 > >Hadoop集群部署實戰

Hadoop集群部署實戰

vertical 通過 text ado 環境變量 radius secondary yarn ddl

Hadoop 集群搭建


目錄

  • 集群簡介

  • 服務器準備

  • 環境和服務器設置

  • JDK環境安裝

  • Hadoop安裝部署

  • 啟動集群

  • 測試

集群簡介

在進行集群搭建前,我們需要大概知道搭建的集群都是些啥玩意。

HADOOP集群具體來說包含兩個集群:HDFS集群和YARN集群,兩者在邏輯上分離,但物理上常在一起(啥意思?就是說:HDFS集群和YARN集群,他們倆是兩個不同的玩意,但很多時候都會部署在同一臺物理機器上)

  • HDFS集群:負責海量數據的存儲,集群中的角色主要有

  • NameNode (DataNode的管理者,負責保存元數據)

  • DataNode (負責保存具體的數據內容)

  • YARN集群:負責海量數據運算時的資源調度,集群中的角色主要有

  • ResourceManager (NodeManager的管理者,負責NodeManager的調用等)

  • NodeManager (當ResourceManager進行調用時,負責調用本地的運算資源等)

那mapreduce是什麽呢?它其實是集群中一個應用程序開發包,放在yarn集群上面跑。

搭建構思

本集群搭建案例,以3節點為例進行搭建,角色分配如下:

服務器角色1角色2角色3
note1NameNodeResourceManager
note2DataNodeNodeManagerSecondaryNameNode
note3DataNodeNodeManager

解析:
note1服務器擔任的角色為NameNode和ResourceManager(即note1服務器為HDFS集群的NameNode節點,同時也是YARN集群的ResourceManager節點)

note2 服務器擔任的角色為 DataNode 、 NodeManager 和 SecondaryNameNode(同上)
note3 服務器擔任的角色為 DataNode 和 NodeManager(同上)

(ps:本來節點名字想打node的,錯打成note,懶得改.)

服務器準備

本案例使用虛擬機服務器來搭建HADOOP集群,所用軟件及版本:

  • Vmware12.0

  • Centos6.5 64bit

下載安裝過程就省略啦,網上鏈接和教程一大把。

環境和服務器設置

在進行網絡準備的前提,是安裝Vmware,新建三臺虛擬機。

註:以下操作在root用戶下操作。

  • 配置虛擬機橋接方式,采用NAT方式聯網

  • 配置Linux的網絡配置文件,具體設置步驟如下:

  • 1、配置/etc/sysconfig/network-scripts/ifcfg-eth0

     `shell> su root #切換為root用戶`  
     `shell> vi /etc/sysconfig/network-scripts/ifcfg-eth0 #編輯配置文件`
     
     配置內容如下(修改下面有值的項,沒有的加上):
     > DEVICE="..."  
     > BOOTPROTO="static" #設置為靜態IP  
     > HWADDR="....."  
     > IPV6INIT="..."  
     > NM_CONTROLLED="...."  
     > ONBOOT="yes"  
     > TYPE="......"  
     > UUID=".........."  
     > IPADDR="192.168.88.3" #IP地址  
     > NETMASK="255.255.255.0" # 子網掩碼  
     > GATEWAY="192.168.88.1" #網關地址
  • 2、重啟網絡服務,使配置生效。

     `shell> service network restart # 重啟網絡服務`
  • 添加hadoop用戶並添加sudo權限

    shell> useradd hadoop #添加用戶hadoop
    shell> passwd hadoop #設置用戶hadoop的密碼
    shell> chmod u+w /etc/sudoers # 添加寫權限
    shell> vi /etc/sudoers

    進入編輯模式,找到這一 行:"root ALL=(ALL) ALL"在起下面添加"hadoop ALL=(ALL) ALL",然後保存退出。

    shell> chmod u-w /etc/sudoers #撤銷寫權限

  • 設置服務器時間同步
    date -s "2016-08-18 12:21:00

  • 修改主機名
    shell> vi /etc/sysconfig/network

    配置內容如下:

    NETWORKING=yes
    HOSTNAME=note1

  • 配置內網域名映射
    配置/etc/hosts配置文件:

    shell> vi /etc/hosts

    配置內容如下:

    192.168.88.3 note1
    192.168.88.4 note2
    192.168.88.5 note3

  • 配置ssh免密登陸
    生成ssh免登陸密鑰
    shell> cd ~/.ssh #進入到我的home目錄
    shell> ssh-keygen -t rsa #(四個回車)

    執行完這個命令後,會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)
    將公鑰拷貝到要免密登陸的目標機器上
    shell> ssh-copy-id localhost

  • 配置防火墻
    因為需要進行免密登錄,所以要對防火墻進行關閉。
    shell> service iptables status #查看防火墻狀態
    shell> service iptables stop #關閉防火墻
    shell> chkconfig iptables --list #查看防火墻開機啟動狀態
    shell> chkconfig iptables off #關閉防火墻開機啟動
    shell> reboot # 重啟

JDK環境安裝

  • 解壓jdk
    創建一個目錄app來放置解壓後的文件
    shell> mkdir /home/hadoop/app #創建文件夾
    shell> tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/app #解壓

  • 配置環境變量
    解壓完畢後需要將java添加到環境變量中,並使其生效
    shell> vi /etc/profile
    在文件最後添加一下內容:

    export JAVA_HOME=/home/hadoop/app/jdk-7u_65-i585
    export PATH=$PATH:$JAVA_HOME/bin

    刷新配置,使其生效
    shell> source /etc/profile

Hadoop安裝部署

  • 解壓Hadoop安裝包

    解壓到app目錄下
    shell> tar -zxvf hadoop-2.7.3.tar.gz -C /home/hadoop/app #解壓

  • 修改配置文件
    配置文件都放在解壓目錄下的etc/hadoop/目錄下(我這裏的目錄為/home/hadoop/app/hadoop-2.7.3/etc/hadoop/),但我們只對一部分的項進行配置,沒有配置的項都將使用默認值。配置項是以xml的格式來進行的,最簡化配置如下:

  • 配置hadoop-env.sh
    shell> vi hadoop-env.sh

    在hadoop-env.sh配置文件中加入以下內容:

    export JAVA_HOME=/home/hadoop/apps/jdk1.7.0_51 # JDK路徑

  • 配置core-site.xml
    shell> vi core-site.xml

    在core-site.xml配置文件中加入以下內容:

    <configuration>
    `<property>` `<name>fs.defaultFS</name>` `<value>hdfs://note1:9000</value>` `</property>`
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/HADOOP/apps/hadoop-2.6.1/tmp</value>
    </property>
    </configuration>

  • 配置hdfs-site.xml
    在用戶目錄下(/home/hadoop)創建一個data目錄,用來存放HDFS產生的數據。然後對hdfs-site.xml進行配置
    shell> mkdir /home/hadoop/data
    shell> vi hdfs-site.xml

    在hdfs-site.xml配置文件中加入以下內容:

    <configuration>
    `<property>` `<name>dfs.namenode.name.dir</name>` `<value>/home/hadoop/data/name</value>` `</property>`
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/hadoop/data/data</value>
    </property>
    `<property>` `<name>dfs.replication</name>` `<value>3</value>` `</property>`
    <property>
    <name>dfs.secondary.http.address</name>
    <value>note2:50090</value>
    </property>
    </configuration>

  • 配置mapred-site.xml
    shell> vi mapred-site.xml

    在mapred-site.xml配置文件中加入以下內容:

    <configuration>
    ``
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>

  • 配置yarn-site.xml
    shell> vi yarn-site.xml

    在yarn-site.xml配置文件中加入以下內容:

    <configuration>
    `<property>` `<name>yarn.resourcemanager.hostname</name>` `<value>hadoop01</value>` `</property>`
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    </configuration>

  • 配置salves
    salves文件配置的內容是集群的主機地址
    shell> vi salves

    在salves配置文件中加入以下內容:

    note1 #主機名,通過/etc/hosts文件映射為IP地址
    note2
    note3

註意:以上所有配置(除了免密登錄外,免密登錄只需要在NameNode節點配置即可)都要在所有節點服務器進行配置。

啟動集群

  • 初始化HDFS集群
    bin/hadoop namenode -format

  • 啟動HDFS集群
    sbin/start-dfs.sh

  • 啟動YARN集群
    sbin/start-yarn.sh

當然,你也可以使用sbin/start-all.sh這個命令同時把HDFS和YARN集群啟動,但是在做實驗時不建議這樣做,因為這樣啟動出現問題就不好定位了。在實際生產中,如果集群數量比較大,可以使用腳本進行啟動。

註意:一般情況下HDFS和YARN集群的主節點(NameNode和ResourceManager物理上都是在同一服務器的)使用命令進行啟動即可,其他節點會被主節點通過免密登錄自動啟動的。

測試

1、啟動HDFS集群成功,通過jps命令查看,進程2521 為NameNode進程


技術分享圖片

啟動HDFS集群

2、啟動Yarn集群成功,通過jps命令查看,進程2803位 ResourceManager進程


技術分享圖片

啟動yarn集群

3、在瀏覽器查看HDFS集群(訪問主節點的50070端口即可),瀏覽器中輸入192.168.88.3:50070


技術分享圖片

HDFS集群信息

4、停止Hadoop集群,可以分別停止(分別使用stop-dfs.shstop-yarn.sh),當然你也可以一步停止集群(使用stop-all.sh

技術分享圖片

停止集群

至此,Hadoop集群搭建完畢。


Hadoop集群部署實戰