1. 程式人生 > >Hadoop集群搭建

Hadoop集群搭建

hadoop集群 manage 臨時 status shuffle centos6 添加 jdk8 ast

1.集群簡介

Hadoop集群具體來說包括兩個集群:HDFS集群和YARN集群,兩者邏輯上分離,但物理上常在一起。
HDFS集群:負責海量數據的存儲,集群中的角色主要有NameNode/DataNode
YARN集群:負責海量數據運算時的資源調度,集群中的角色主要有ResourceManage/NodeManager

2.服務器準備

操作系統:

虛擬機系統 節點 域名/IP地址
Centos6 NameNode/ResourceManage Master/192.168.1.10
Centos6 DataNode/NodeManageer Salve11/192.168.1.11
Centos6 DataNode/NodeManageer Salve12/192.168.1.12
Centos6 DataNode/NodeManageer Salve13/192.168.1.13

Java版本
java version "1.8.0_151"
Hadoop版本

3.網絡環境準備

3.1.設置IP地址

分別設置節點IP,在每個節點上執行一下步驟:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改如下:

DEVICE=eth0
HWADDR=08:00:27:53:7E:9D
TYPE=Ethernet
UUID=c8127b91-f551-4630-a272-babb99157433
ONBOOT=yes #使用yes
NM_CONTROLLED=yes
BOOTPROTO=static #使用靜態方法
IPADDR=192.168.1.10 #指定ip地址
NETMASK=255.255.255.0 #指定子網掩碼
GATEWAY=

重啟網絡服務:
service network restart

3.2.設置域名

修改域名
打開vi /etc/sysconfig/network
編輯:

NETWORKING=yes
HOSTNAME=master    ##此處修改域名

重啟設備reboot
註意,在每個節點上配置不同的網絡ip和域名。配置的ip地址在上面的表格中。

4.SSH免登陸設置

4.1.修改hosts文件

分別在每個節點添加域名到ip地址的映射
打開:vi /etc/hosts
編輯:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#添加以下內容
192.168.1.10 master
192.168.1.11 salve11
192.168.1.12 salve12
192.168.1.13 salve13

4.2.設置節點之間的免登錄

每個節點上執行如下命令:
ssh-keygen -t rsa,產生鑰匙,輸入後一直回車

ssh-copy-id -i master
ssh-copy-id -i salve11
ssh-copy-id -i salve12
ssh-copy-id -i salve13

4.3.關閉節點防火墻

  • 查看防火墻狀態
    service iptables status
  • 關閉防火墻
    service iptables stop
  • 查看防火墻開機啟動狀態
    chkconfig iptables --list
  • 關閉防火墻開機啟動
    chkconfig iptables off

4.4.關閉SELinux

  • 查看SELinux狀態
    getenforce
  • 臨時開啟SELinux
    setenforce 1
  • 開機關閉SELinux
    編輯/etc/selinux/config文件,將SELINUCX的值設置位disabled

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=disable #設置為不隨開機啟動
    # SELINUXTYPE= can take one of these two values:
    #     targeted - Targeted processes are protected,
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted

    註意:此時也不能通過setenforce 1命令臨時開打。

5.Java環境安裝

5.1.下載java jdk安裝包

點擊:Java SE Development Kit 8 下載,下載適用於linux系統的java8 的JDK套件。
下載時要先選擇接受許可協議,並下載64位的:dk-8u151-linux-x64.rpm
技術分享圖片

5.2.linux上安裝

上傳到linux系統,使用rpm -ivh dk-8u151-linux-x64.rpm進行安裝。

5.3.添加java資源路徑

安裝之後,添加java的資源路徑:
vi /etc/profile
在文件最後添加如下:

export JAVA_HOME=/usr/java/jdk1.8.0_151
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

更新配置:
source /etc/profile

5.4.測試java環境

測試java環境,執行java -version,即可查看java的版本。
如下:

[root@node101 ~]# java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

6.Hadoop安裝部署

1.6.1.下載Hadoop

在apache的官網下載Hadoop,選擇版本2.7.5,使用binary安裝。如下圖:
技術分享圖片

下載後,傳輸到master上

6.2.安裝

在master上操作:
解壓hadoop:
tar -zxvf hadoop-2.7.5.tar.gz
移動到指定位置:
mv hadoop-2.7.5 /usr/hadoop

6.3.配置

在master上,進入到hadoop的安裝目錄:/usr/hadoop,再進入hadoop的環境配置目錄:/usr/hadoop/etc/hadoop。然後進行以下設置
1.修改Java路徑
vi hadoop-env.sh
在第27行,修改java的路徑,此處的路徑應該是上文設置的JAVA_HOME路徑。修改如下:
export JAVA_HOME=/usr/java/jdk1.8.0_151

2.修改core-site.xml

<configuration>
    <!-- 指定Hadoop所使用的文件系統schema,HDFS老大的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
   <!-- 指定Hadoop運行時產生的文件的存儲目錄 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/root/hadoop/tmp</value>
    </property>
</configuration>

3.修改hdfs-site.xml

<configuration>
    <!-- 指定HDFS副本的數量 -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <!-- 指定HDFS系統namenode路徑 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/root/hadoop/dfs/name</value>
    </property>
    <!-- 指定HDFS系統datanode路徑 -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/root/hadoop/dfs/data</value>
    </property>
    <!-- 指定HDFS系統secondarynamenode路徑 -->
    <property>
        <name>dfs.secondary.http.address</name>
        <value>192.168.1.10:50090</value>
    </property>
</configuration>

4.mapred-site.xml
如果mapred-site.xml文件不存在,需要復制一個過來:mv mapred-site.xml.template mapred-site.xml

<configuration>
    <!-- 指定mr運行在yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

5.修改yarn-site.xml

<configuration>
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>
<!-- reducer獲取數據的方式 -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
</configuration>

把在master上配置好的/usr/hadoop目錄分發到每個salve上。使用命令如下:
scp -r /usr/hadoop salve11:/usr/hadoop,
salve12和salve13同樣操作。

6.4.添加到環境變量

需要在每個節點添加Hadoop的環境,主要添加下面兩條:

export HADOOP_HOME=/usr/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin

到此為之,添加過java和hadoop,此時的/etc/profile自己添加的部分如下:

export JAVA_HOME=/usr/java/jdk1.8.0_151
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/usr/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

更新配置文件
source /etc/profile
每個節點上創建以下幾個目錄:
/root/hadoop/tmp
/root/hadoop/dfs/name
/root/hadoop/dfs/data

7.啟動集群

修改master節點上的以下文件
vi /usr/hadoop/etc/hadoop/slaves
添加如下:

salve11
salve12
salve13

在master上執行以下命令開啟集群
先格式hadoop:
hdfs namenode -format
啟動hdfs:
/usr/hadoop/sbin/start-dfs.sh
再啟動yarn:
/usr/hadoop/sbin/start-yarn.sh
使用jps命令可以查看集群啟動是否成功。
在master上執行jps,返回如下,表示正確啟動:

[root@master hadoop]# jps
3393 Jps
2660 SecondaryNameNode
3111 ResourceManager
2471 NameNode

salve11等其他節點執行jsp,返回如下結果,表示正確啟動

[root@salve11 usr]# jps
2502 Jps
2380 NodeManager
2268 DataNode

可以通過網頁訪問查看
網頁訪問:http://192.168.1.10:50070
訪問後截圖如下:
技術分享圖片

8.其他

也可以單獨開啟一個節點的namenode或者datanode,使用命令如下:
hadoop-daemon.sh start namenode

hadoop-daemon.sh start datanode

Hadoop集群搭建