hadoop集羣環境搭建

1 介紹

1.1 系統版本介紹

此文檔編寫使用的系統爲ubuntu-18.04.1-live-server-amd64.iso版本。java

1.2 軟件版本介紹

軟件 版本
jdk jdk-8u181-linux-x64.tar.gz
hadoop hadoop-2.7.7.tar.gz

1.3 ubuntu集羣服務器

主機名 IP地址 服務
Master 10.168.1.216 ResourceManager、SecondaryNameNode、NameNode
slave01 10.168.1.217 NodeManager、DataNode
slave02 10.168.1.218 NodeManager、DataNode
slave03 10.168.1.219 NodeManager、DataNode

1.4 說明

本文檔安裝jdk和ssh略過。node

2 安裝hadoop集羣

2.1 全局配置

2.1.1 解壓hadoop

建立一個hadoop的文件夾,用戶存放hadoop文件linux

mkdir /usr/local/hadoop

經過ftp工具把下載好的hadoop安裝包上傳到hadoop文件夾下。 解壓:算法

cd /usr/local/hadoop
tar -vxzf hadoop-2.7.7.tar.gz

解壓完成:ubuntu

1.png

移動hadoop-2.7.7文件下的文件到當前的目錄vim

mv ./hadoop-2.7.7/* ./

刪除hadoop-2.7.7文件夾服務器

rm -rf ./hadoop-2.7.7

查看文件夾的全部者以及用戶組,最重要的是擁有者是不是當前用戶網絡

2.png

若是擁有者不是當前用戶,則修改成當前用戶:app

chown -R 當前用戶名 ./hadoop

2.1.2 配置hadoop

設置環境變量:ssh

vim /etc/profile

在末尾添加:

JAVA_HOME=/usr/local/java/jdk1.8.0_181
HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME
export PATH
export HADOOP_HOME

從新加載環境變量的配置文件:

source /etc/profile

檢測:

hadoop version

3.png

2.1.3 修改配置文件

在core-site.xml 中添加

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/tmp</value>
  </property>
</configuration>

4.png

在 hdfs-site.xml 中添加

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:9001</value>
  </property>
  <property>
    <name>dfs.name.dir</name>
    <value>/usr/local/hadoop/hdfs/name</value>
  </property>
  <property>
    <name>dfs.data.dir</name>
    <value>/usr/local/hadoop/hdfs/data</value>
  </property>
  <!--副本的數量-->
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>
  <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>
</configuration>

5.png

hadoop-env.sh 中更改 JAVA_HOME

註釋掉:

export JAVA_HOME=${JAVA_HOME}

添加:

export JAVA_HOME=/usr/local/java/jdk1.8.0_181

修改slaves文件,添加以下信息:

vim /usr/local/Hadoop/etc/Hadoop/slaves

6.png

1.2 特殊配置

2.2.1 複製三臺主機

7.png

2.2.2 設置靜態ip地址

前言

Ubuntu 18.04再也不使用ifupdown配置網絡,而改用netplan。在/etc/network/interfaces配置固定IP是無效的,重啓網絡的命令services network restrart/etc/init.d/networking restart也是無效的。

使用ifupdown配置網絡

若是要使用以前的方式配置網絡,須要從新安裝ifupdown:

apt install ifupdown

修改配置文件/etc/network/interfaces:

vim /etc/network/interfaces

配置文件修改以下:

iface ens160 inet static
address 210.72.92.25
gateway 210.72.92.254
netmask 255.255.255.0
dns-nameservers 8.8.8.8

重啓網絡服務使配置生效

services network restrart

使用netplan配置網絡

Ubuntu 18.04使用netplan配置網絡,其配置文件是yaml格式的。安裝好Ubuntu 18.04以後,在/etc/netplan/目錄下默認的配置文件名是50-cloud-init.yaml,咱們經過VIM修改它:

vim /etc/netplan/50-cloud-init.yaml

配置文件修改以下:

network:
  ethernets:
    ens160:
      addresses: [10.168.1.216/24]
      dhcp4: false
      gateway4: 10.168.1.254
  version: 2

不管是ifupdown仍是netplan,配置的思路都是一致的,在配置文件裏面按照規則填入IP、掩碼、網關、DNS等信息。注意yaml是層次結構,須要縮進,冒號(:)表示字典,連字符(-)表示列表。

重啓網絡服務使配置生效:

netplan apply

8.png

2.2.3 配置hosts文件

vim /etc/hosts

添加master和slaves信息:

9.png

2.2.4 本地主機名配置

首先修改

vim /etc/cloud/cloud.cfg

disable_root:false修改成true

10.png

修改主機名:

vim /etc/hostname

將10.168.1.216主機名修改成master。

11.png

將其餘機器也修改成對應的名稱,重啓全部服務器。

2.2.5 多服務器ssh免密碼登錄

因爲Hadoop啓動之後,namenode是經過SSH(Secure Shell)來啓動和中止各個節點上的各類守護進程的,這就須要在節點之間執行指令的時候是不須要輸入密碼的方式,故咱們須要配置SSH使用無密碼公鑰認證的方式**(安裝ssh,配置ssh遠程鏈接過程略過。)**。

全部服務器使用rsa算法生成祕鑰和公鑰對:

ssh-keygen -t rsa

12.png

而後把master服務器中公鑰加入到受權中:

cat ./id_rsa.pub >> ./authorized_keys

使用ssh localhost驗證是否無密碼登錄。

把slave服務器中的id_rsa.pub複製到master中:

scp .ssh/id_rsa.pub root@master:/

13.png

查看公鑰是否複製成功:

14.png

將公鑰添加到master的受權文件中:

cat /id_rsa.pub >> ~/.ssh/authorized_keys

重複上面步驟,直到全部的slave公鑰都添加到了受權文件中。

15.png

將受權文件分發到每臺服務器上:

scp ~/.ssh/authorized_keys username@hostname: ~/.ssh/authorized_keys

測試經過ssh相互之間登陸:

ssh hostname
username:服務器用戶名。
hostname:服務器主機名。

測試完畢重啓服務器。

2.2.6 啓動hadoop

在master服務器上格式化namenode節點:

hadoop namenode -format

16.png

啓動hdfs

start-all.sh

17.png

查看相應的進程:

jps

master:

18.png

肯定3個進程所有啓動。

slave:

19.png

肯定2個進程所有啓動。

訪問測試:

10.168.1.216:50070

20.png

21.png

22.png

1.3 添加datanode節點

配置一臺新的slave機器,根據前面的步驟配置網絡IP。

啓動datanode服務:

hadoop-daemon.sh start datanode

啓動nodemanager服務:

yarn-daemon.sh start nodemanager

23.png

若是須要在name節點啓動的時候,同時也啓動這臺新加的data節點,那麼須要根據特殊配置的步驟,修改hosts文件、服務器主機名、以及ssh免密登陸等,才能經過name來啓動data節點。

1.4 刪除datanode節點

首先須要在hdfs-site.xml添加:

<property>
  <name>dfs.hosts.exclude</name>
  <value>/usr/local/hadoop/etc/hadoop/excludes</value>
</property>

24.png

而後在對應位置建立文件:

vim /usr/local/hadoop/etc/hadoop/excludes

在文件中加入要刪除的節點名稱:

27.png

例如要刪除的節點是slave03

25.png

在NameNode上刷新全部DataNode:

hdfs dfsadmin -refreshNodes    #刷新節點信息
start-balancer.sh              #同步節點的數據

26.png

以下圖:表示與該節點已經斷開了鏈接(由於hadoop心跳檢測是10分鐘,因此若是是data節點宕機,就會一直檢測,直到超時)。

接下來就能夠關閉data節點了:

關閉datanode服務:

hadoop-daemon.sh stop datanode

關閉nodemanager服務:

yarn-daemon.sh stop nodemanager
相關文章
相關標籤/搜索