1. 程式人生 > >CentOS7 下 Hadoop 分布式部署

CentOS7 下 Hadoop 分布式部署

dns get order sna framework implement 格式 ipad pat

Hadoop 服務劃分

使用三臺節點,集群部署規劃如下

服務\主機

hadoop1

hadoop2

hadoop3

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager

NodeManager

IP地址規劃

hadoop1    192.168.123.11
hadoop2    192.168.123.12
hadoop3    192.168.123.13

系統環境配置

一、基本信息配置(三臺節點需要分別配置)

IP地址配置

# 配置 IP 地址,網卡配置文件不一定相同
vim /etc/sysconfig/network-scripts/ifcfg-ens33

# 自啟動網卡
ONBOOT="yes"
# IP地址
IPADDR="192.168.123.11"
# 子網頁碼
PREFIX="24"
# 網關
GATEWAY="192.168.123.2"
# DNS 服務器
DNS1="119.29.29.29"

# 重啟網絡服務
systemctl restart network

修改主機名

# 修改主機名字為 hadoop1
hostnamectl set-hostname hadoop1

# 退出當前用戶再登錄即可看見
logout

關閉防火墻,也可放行

# 關閉防火墻
systemctl stop firewalld

# 關閉防火墻開機自啟動
systemctl disable firewalld

安裝 Rsync 工具,用於同步主機之間的文件,這樣後面的配置文件修改就不用每臺機器都改一遍,直接同步過去即可

# 清空 yum 源。若已配置源,直接安裝即可
rm -rf /etc/yum.repos.d/*

# 配置阿裏 yum 源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 安裝 rsync
yum install -y rsync

二、基本服務配置(配置一臺主機,其他主機同步即可)

配置主機之間相互免密登錄

# 以一臺機器為例子,其他一樣

# 生成密鑰文件,一直回車
ssh-keygen -t ecdsa -b 521

# 配置免密登錄,需要輸入遠程主機密碼,本機也需要配置
ssh-copy-id -i ~/.ssh/id_ecdsa.pub hadoop1
ssh-copy-id -i ~/.ssh/id_ecdsa.pub hadoop2
ssh-copy-id -i ~/.ssh/id_ecdsa.pub hadoop3

# 驗證,不用輸密碼即為成功
ssh hadoop1 ls /

添加主機名到 Hosts 文件

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
# 對應本機IP地址,非 127.0.0.1
192.168.123.11 hadoop1
192.168.123.12 hadoop2
192.168.123.13 hadoop3

安裝 JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

# 解壓
tar -zxf /opt/jdk-8u202-linux-x64.tar.gz -C /opt/

# 配置環境變量
vim /etc/profile

# JAVA_HOME
export JAVA_HOME=/opt/jdk1.8.0_202/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

# 刷新環境變量
source /etc/profile

# 驗證
java -version

# java version "1.8.0_202"
# Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
# Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

安裝 Hadoop https://hadoop.apache.org/releases.html

# 解壓
tar -zxf /opt/hadoop-2.9.2-snappy-64.tar.gz -C /opt/

# 配置環境變量
vim /etc/profile

# HADOOP_HOME
export HADOOP_HOME=/opt/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

# 刷新環境變量
source /etc/profile

# 驗證
hadoop version

# Hadoop 2.9.2
# Subversion Unknown -r Unknown
# Compiled by root on 2018-12-16T09:39Z
# Compiled with protoc 2.5.0
# From source with checksum 3a9939967262218aa556c684d107985
# This command was run using /opt/hadoop-2.9.2/share/hadoop/common/hadoop-common-2.9.2.jar

同步服務到其他機器

# 同步 Hosts 文件
rsync -avz /etc/hosts hadoop2:/etc/
rsync -avz /etc/hosts hadoop3:/etc/

# 同步 JDK,源路徑不要帶斜杠
rsync -avz /opt/jdk1.8.0_202 hadoop2:/opt/
rsync -avz /opt/jdk1.8.0_202 hadoop3:/opt/

# 同步 Hadoop,源路徑不要帶斜杠
rsync -avz /opt/hadoop-2.9.2 hadoop2:/opt/
rsync -avz /opt/hadoop-2.9.2 hadoop3:/opt/

# 同步環境變量文件 profile,目標主機上的環境變量需要手動刷新:source /etc/profile
rsync -avz /etc/profile hadoop2:/etc/
rsync -avz /etc/profile hadoop3:/etc/

Hadoop分布式配置

配置一臺機器,其他同步即可,配置文件目錄:hadoop-2.9.2/etc/hadoop/

一、基本配置

core-site.xml

<configuration>
  <!-- 指定HDFS中NameNode的地址 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop1:9000</value>
  </property>
  
  <!-- 指定Hadoop運行時產生文件的存儲目錄 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-tmp</value>
  </property>
</configuration>

hadoop-env.sh

# The java implementation to use.
export JAVA_HOME=/opt/jdk1.8.0_202/

二、HDFS 配置

hdfs-site.xml

<configuration>
  <!-- 指定文件塊副本數 -->
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>
  
  <!-- 指定Hadoop輔助名稱節點主機配置 -->
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop3:50090</value>
  </property>
</configuration>

三、YARN 配置

yarn-env.sh

# some Java parameters
export JAVA_HOME=/opt/jdk1.8.0_202/

yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
  <!-- Reducer獲取數據方式 -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  
  <!-- 指定YARN的ResourceManager地址 -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop2</value>
  </property>
</configuration>

四、MapReduce 配置

mapred-env.sh

# limitations under the License.

export JAVA_HOME=/opt/jdk1.8.0_202/

# when HADOOP_JOB_HISTORYSERVER_HEAPSIZE is not defined, set it.

mapred-site.xml,將 mapred-site.xml.template 重命名為 mapred-site.xml

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

五、集群節點地址配置

slaves

# 所有節點主機的地址
hadoop1
hadoop2
hadoop3

六、將配置文件同步到其他節點

# 將 Hadoop 配置文件同步到其他節點上
rsync -avz /opt/hadoop-2.9.2 hadoop2:/opt/
rsync -avz /opt/hadoop-2.9.2 hadoop3:/opt/

啟動 Hadoop 集群

一、第一次使用需要先格式化 NameNode,這裏是在 hadoop1 上執行格式化

hadoop namenode -format

技術分享圖片

二、在 NameNode 所在節點啟動 hdfs,這裏是 hadoop1

start-dfs.sh

技術分享圖片

技術分享圖片

三、在 ResourceManger 所在節點啟動 yarn,這裏是 hadoop2

start-yarn.sh

技術分享圖片

技術分享圖片

查看各個節點進程

技術分享圖片技術分享圖片技術分享圖片


http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html

CentOS7 下 Hadoop 分布式部署