Hadoop分布式集群搭建

Hadoop分布式集群搭建

一.分布式环境搭建之环境介绍

之前的博客我已经介绍了如何在单机上搭建伪分布式的Hadoop环境,而在实际情况中,肯定都是多机器多节点的分布式集群环境,所以本文将简单介绍一下如何在多台机器上搭建Hadoop的分布式环境。

  1. 我这里准备了三台虚拟机作为服务器,IP地址配置如下:

    192.168.150.10

    192.168.150.11

    192.168.150.12

2.修改三台服务器主机名为hadoop01、hadoop02、hadoop03
vim /etc/hostname
3.配置三台主机名与地址映射

在三台机器上编辑/etc/hosts配置文件

vim /etc/hosts

在这里插入图片描述

三台机器重新启动 reboot。

二.安装集群
1.三台机子关闭防火墙

在这里插入图片描述

2.三台机子设置免密登陆ssh
[root@hadoop01 ~]# ssh-keygen -t rsa  			#每台机子执行这个命令生成密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:U+9QBLLSEZkUQfviVwLNXHHRwAlT3C3CXzZZHObn33A root@hadoop01
The key's randomart image is:
+---[RSA 2048]----+
|       oO*.o**=X*|
|       .oO oooBoB|
|      . = = .o =o|
|       . + o  ...|
|        S + o . E|
|       . o =   oo|
|        . . .   o|
|         .       |
|                 |
+----[SHA256]-----+
[root@hadoop01 ~]# 

三台机子都执行如下代码
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop01
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop02
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop03
测试三台机子能否互相免密登陆

在这里插入图片描述

3.三台机子下载远程同步工具
# 远程同步工具
yum install -y rsync
systemctl start rsyncd # 启动服务
systemctl enable rsyncd # 开机自启
4.编辑分发文件脚本xsync

在hadoop01的/usr/local/bin路径下

vim xsync

脚本内容

#!/bin/bash

#1 获取输入参数个数,如果没有参数,直接退出 
pcount=$# 
if((pcount==0)); then 
echo no args;
exit; 
fi
#2 获取文件名称 
p1=$1 
fname=`basename $p1` 
#echo fname=$fname

#3 获取上级目录到绝对路径 
pdir=`cd -P $(dirname $p1); pwd` 
#echo pdir=$pdir

#4 获取当前用户名称 
user=`whoami` 
#echo iam=$user

#5 循环
for((host=2; host<=3; host++)); do
       echo ------------------- hadoop0$host -------------- 
        rsync -rvl $pdir/$fname $user@hadoop0$host:$pdir
done

添加执行权限

chmod 777 xsync
三.安装与配置

在hadoop01上安装,在分发到各个机子上。

1.解压hadoop与jdk
tar -zxvf jdk1.8.0_111.tar.gz -C /usr/local/
tar -zxvf hadoop-3.2.0.tar.gz -C /usr/local/
2.重命名
mv /usr/local/hadoop-3.2.0 /usr/local/hadoop
mv /usr/local/jdk1.8.0_111 /usr/local/jdk1.8

分发安装包

xsync jdk1.8
xsync hadoop
3.配置环境变量(三台都配)
cd ~
vim ~/.bashrc

在文件底部添加如下代码

export JAVA_HOME=/usr/local/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH

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

在这里插入图片描述

4.修改配置文件

修改配置文件core-site.xml

vim /usr/local/hadoop/etc/hadoop/core-site.xml
    
# 增加以下内容
<!-- 指定HDFS中NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop01:9000</value>
    </property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/data/tmp</value>
    </property>

修改配置文件hadoop-env.sh

vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
#配置Java路径
export JAVA_HOME=/usr/local/jdk1.8

修改配置文件hdfs-site.xml

vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
# 增加以下内容
    <property>
        <name>dfs.namenode.http-address</name>
        <value>192.168.150.10:50070</value>
    </property>
    <!-- 副本数 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
        <!-- 指定Hadoop辅助名称节点主机配置 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop02:50090</value>
    </property>

修改配置文件yarn-env.sh

vim /usr/local/hadoop/etc/hadoop/yarn-site.xml

#配置Java路径
export JAVA_HOME=/usr/local/jdk1.8

修改配置文件yarn-site.xml

vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
# 增加以下内容
<!-- Reducer获取数据的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
<!-- 指定YARN的ResourceManager的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop02</value>
    </property>

修改配置文件mapred-env.sh

vim /usr/local/hadoop/etc/hadoop/mapred-env.sh
# 配置Java
export JAVA_HOME=/usr/local/jdk1.8

修改配置文件mapred-site.xml

vim /usr/local/hadoop/etc/hadoop/mapred-site.xml 

<!-- 指定MR运行在Yarn上 -->
<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>

修改slaves文件 (这是Hadoop2.X的版本),在Hadoop3.X的版本中有workers文件,修改与slaves一样。

vim /usr/local/hadoop/etc/hadoop/slaves
# 修改为以下内容
hadoop01
hadoop02
hadoop03
5.分发配置文件
xsync /usr/local/hadoop/etc/hadoop/
6.第一次启动,需要格式化NameNode

如果不是第一次启动,注意格式化之前,一定要先停止上次启动的所有 namenode和datanode进程,然后再删除data和log数据

hdfs namenode -format

在 hadoop01上启动dfs

start-dfs.sh

在hadoop02上启动yarn

start-yarn.sh

如果报如下错误(好像只有Hadoop3.X的会报)

在这里插入图片描述

1.在start-dfs.sh和stop-dfs.sh的顶部添加如下代码

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

2.在start-yarn.sh和stop-yarn.sh顶部添加如下代码

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

再次启动

7.同步执行脚本

在/usr/local/bin文件下创建脚本文件xcall.sh

#! /bin/bash

for i in hadoop01 hadoop02 hadoop03
do
    echo -------- $i ----------
    ssh $i "$*"
done


授权

chmod 777 xcall.sh

启动后查看运行结果

在这里插入图片描述

到此,集群搭建完成。

8.Hadoop启动、停止脚本

在/usr/local/bin目录下创建hd.sh脚本文件

脚本代码

#! /bin/bash

case $1 in
"start"){
    
       echo --------- hadoop01 ----------
       ssh hadoop01 "/usr/local/hadoop/sbin/start-dfs.sh"

       echo --------- hadoop02 ----------
       ssh hadoop02 "/usr/local/hadoop/sbin/start-yarn.sh"
    
};;
"stop"){

       echo ---------  hadoop01  ----------
       ssh hadoop01 "/usr/local/hadoop/sbin/stop-dfs.sh"
      
       echo --------- hadoop02 ----------
       ssh hadoop02 "/usr/local/hadoop/sbin/stop-yarn.sh"
       
};;
esac

授权

chmod 777 hd.sh
hd.sh start		#启动集群
hd.sh stop		#关闭集群
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值