Hadoop 徹底分佈式(Fully Distributed)安裝

原文地址:www.inlighting.org/2019/instal…html

本篇文章主要介紹如何搭建徹底分佈式的 Hadoop 集羣,介於 Hadoop 配置複雜,特此寫下此篇文章記錄。java

基礎準備

這一次我使用三臺服務器組建一個 Hadoop 集羣,三臺機器我經過虛擬機(Parallel Desktop)模擬,固然你們也能夠使用 VirtualBox 或 VMWare 等軟件。node

三臺機器配置信息以下:web

CPU:雙核apache

內存:2Gvim

磁盤:12G瀏覽器

root 密碼:123456安全

系統:Centos 8.0 (Minimal Install)bash

環境安裝

更新系統軟件(可選)服務器

其實不更新也沒啥事估計。

容許 dnf update -y

從 Centos 8 開始內置了 dnf 命令,因此這裏我使用 dnf 命令代替了 yum 。

安裝 openjdk 1.8

執行 dnf install java-1.8.0-openjdk-devel.x86_64 -y

安裝 vim

爲了方便後面 Hadoop 配置文件的編輯,咱們安裝一個 vim 。

執行 dnf install vim -y

安裝 tar

安裝解壓軟件,用於解壓 tar 的壓縮文件。

執行 dnf install tar.x86_64 -y

機器克隆

經過虛擬機管理軟件將這臺機器克隆 2 臺當作 slave 節點。

通訊配置

咱們要讓三臺機子組成一個小型局域網。

我這裏三臺機子分配的虛擬 IP 爲:

  • Master : 10.211.55.11
  • Slave1 : 10.211.55.12
  • Slave2 : 10.211.55.13

hostname 編輯(非必須,只是爲了命令行方便管理,否則都是千篇一概的 localhost )

我這裏以 master 節點爲例:

執行 hostname 命令我能看到默認爲 localhost.localdomain

執行 hostnamectl set-hostname master ,重啓系統便可。

hosts 文件編輯

修改三臺機子的 /etc/hosts 文件,添加以下代碼:

10.211.55.11 master
10.211.55.12 slave1
10.211.55.13 slave2
複製代碼

靜態 IP 配置(可選)

我這裏主機默認的 IP 是經過 DHCP 服務獲取的,若是下次分配的地址變了,會致使 3 臺機子之間的通信出現異常。因此這裏咱們配置 Centos 8 改成靜態 IP 。

編輯 ifcfg-xxxx

xxxx 通常是你的網卡名,這裏我輸入命令 vim /etc/sysconfig/network-scripts/ifcfg-ens18 編輯個人網卡配置信息。

修改 BOOTPROTO="static" ,在文件後面追加 IP 地址,網關等信息:

IPADDR=10.211.55.11
NETMASK=255.255.255.0
GATEWAY=10.211.55.255
複製代碼

保存後輸入命令 systemctl restart NetworkManager 重啓網絡(Centos 7 命令爲 systemctl restart network)。

權限配置

系統安裝完默認使用 root 帳號, hadoop 若是在 root 下運行不安全,須要額外配置,爲了省事,這裏咱們在三臺機子裏均建立一個名爲 hadoop 的用戶。

以某一節點爲例:

執行 adduser hadoop 便可建立 hadoop 用戶,執行 passwd hadoop 爲 hadoop 用戶建立密碼,這裏密碼爲 123456 。(第一次系統會提示 BAD PASSWORD,密碼強度不夠,你再輸入一次便可)。

SSH 免密登入

咱們須要配置 master 主機到 slave1 , slave2 和其自己的 SSH 免密登入。

  1. 先執行 su hadoop 切換到 hadoop 用戶。

  2. 在 Master 主機執行 ssh-keygen -t rsa ,一路回車,生成密鑰。

  3. 分別執行 ssh-copy-id hadoop@masterssh-copy-id hadoop@slave1ssh-copy-id hadoop@slave2 將密鑰拷貝到三個節點。完成後咱們能夠輸入 ssh hadoop@slave1 進行測試。

注意本機 master 也須要免密設置,由於咱們後面會將 master 既作管理節點,也作一個 slave 節點。

Hadoop 分佈式架構介紹

  • master 節點爲母節點,負責調度兩個 slave 節點,同時其本身也充當一個 slave 節點。

    • NameNode 運行在 master 節點上,負責 DataNode 的統一管理。
    • SecondaryNode 運行在 master 節點上,輔助 NameNode 的運行。
    • ResourceManager 運行在 master 節點上,負責 yarn 任務的調度。
  • slave 爲奴隸節點(通常叫 worker),負責運算、存儲。

    • DataNode 運行在 slave 上,一個數據節點,存儲數據。
    • NodeManager 運行在 slave 上,負責執行任務。

Hadoop 下載安裝

三臺機子均下載 hadoop文件到 /home/hadoop 目錄下,進行解壓(注意權限問題,權限都要屬於 hadoop 用戶,防止後面出現意想不到的問題)

命令行示例:

su hadoop
cd /home/hadoop
wget http://apache.mirror.colo-serv.net/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
tar -zxvf hadoop-3.2.1.tar.gz
複製代碼

JAVA_HOME 配置

在 Centos 8 中 OpenJDK 8 的默認安裝路徑在 /usr/lib/jvm/java-1.8.0-openjdk 下,咱們打開 ~/hadoop-3.2.1/etc/hadoop/hadoop-env.sh 修改一行的代碼爲

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
複製代碼

NameNode 配置

編輯 ~/hadoop-3.2.1/etc/hadoop/core-site.xml 的代碼以下:

<configuration>
	<property>
		<name>fs.default.name</name>
		<value>hdfs://master:9000</value>
	</property>
</configuration>
複製代碼

HDFS 配置

編輯 ~/hadoop-3.2.1/etc/hadoop/hdfs-site.xml 代碼以下:

<configuration>
  <property>
  	<name>dfs.namenode.name.dir</name>
  	<value>/home/hadoop/data/nameNode</value>
  </property>

  <property>
  	<name>dfs.datanode.data.dir</name>
  	<value>/home/hadoop/data/dataNode</value>
  </property>

  <property>
  	<name>dfs.replication</name>
  	<value>2</value>
  </property>
</configuration>
複製代碼

其中最後一項設置 dfs.replication 表示在 Hadoop 集羣中一份文件要存在幾份備份,數字的設置不要大於真實存在機器的數量。

例如我有三個計算節點(slave),dfs.replication 的值不能大於 3。

設置 YARN

編輯 ~/hadoop-3.2.1/etc/hadoop/mapred-site.xml 代碼以下:

<configuration>
  <property>
  	<name>mapreduce.framework.name</name>
  	<value>yarn</value>
  </property>
  
  <property>
  	<name>yarn.app.mapreduce.am.env</name>
  	<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
  
  <property>
  	<name>mapreduce.map.env</name>
  	<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
  
  <property>
  	<name>mapreduce.reduce.env</name>
  	<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
</configuration>
複製代碼

編輯 ~/hadoop-3.2.1/etc/hadoop/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>
</configuration>
複製代碼

配置 Workers 節點

slave 這裏的叫法爲 worker ,編輯 ~/hadoop-3.2.1/etc/hadoop/workers 代碼以下:

master
slave1
slave2
複製代碼

我這裏填寫了 master 節點,意味着 master 節點不光充當管理,本身也承擔了一個 worker 節點。

拷貝配置到各個 slave 節點

執行命令:

scp hadoop-3.2.1/etc/hadoop/* slave1:/home/hadoop/hadoop-3.2.1/etc/hadoop/
scp hadoop-3.2.1/etc/hadoop/* slave2:/home/hadoop/hadoop-3.2.1/etc/hadoop/
複製代碼

將配置文件拷貝到另外兩個 slave 節點。

運行測試

關閉防火牆

首先要關閉三個節點的防火牆,同時禁止開機運行,防止在內網通訊時出現意想不到的問題,執行以下命令:

systemctl stop firewalld
systemctl disable firewalld
複製代碼

HDFS 開啓

咱們在 master 節點執行下面命令,對 HDFS 進行初始化,./hadoop-3.2.1/bin/hdfs namenode -format

隨後執行 ./hadoop-3.2.1/sbin/start-dfs.sh 開啓 hdfs 集羣。

你們能夠在 master 節點輸入 jps 命令看到已經在運行的進程

4930 SecondaryNameNode
4579 NameNode
4739 DataNode
5050 Jps
複製代碼

在 slave 節點 jps 命令能夠看到:

2834 DataNode
2895 Jps
複製代碼

在瀏覽器訪問 localhost:9870 能夠看到 web 的控制界面(虛擬機的訪問須要開啓端口轉發):

Yarn 開啓

執行 ./hadoop-3.2.1/sbin/start-yarn.sh 命令便可開啓,訪問地址 localhost:8088 能夠看到以下界面:

上面咱們能夠看到 3 個節點在正常運行。

總結

至此,完成了 Hadoop 分佈式的配置,爲了儘量精簡配置,不少參數都是使用默認的。其中在 hadoop 目錄下的 sbin 文件夾中提供了不少有用的腳本,例如 start-all.sh 可以一鍵開啓 hdfs 和 yarn 。你們注意關閉系統時須要使用 stop-xx.sh 腳本關閉系統。

相關文章
相關標籤/搜索