CentOS 7 搭建 Hadoop2.7.3 完全分布式集群

0x00 准备工作

本文欲创建三台主机作为Hadoop集群,其中ip和主机名分配如下:

10.1.1.91	hadoop01
10.1.1.92	hadoop02
10.1.1.93	hadoop03

0x01 安装虚拟机VMware以及CentOS 7 系统

VMware官网:https://www.vmware.com/
CentOS官网:https://www.centos.org

0x02 CentOS7 系统的基本配置

注:以下操作均以root身份完成

一、网络设置

1.设置主机IP、网关、DNS等
# 使用 ip addr 命令查看当前获取的IP地址,记录下自己的IP网段和网关地址
ip addr
#
# 修改 /etc/sysconfig/network-scripts/ifcfg-ens33 文件内容(注:33 这数字不同主机可能不同,请自查)
vi  /etc/sysconfig/network-scripts/ifcfg-ens33

在原有基础上修改和添加如下内容:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
# 将主机获取IP方式设为静态
BOOTPROTO=static
DEEROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
#删除UUID,防止克隆时出现两台机器的唯一标识是一样的
DEVICE=ens33
ONBOOT=yes
# 设置固定IP
IPADDR=10.1.1.91
# 设置网关
GATEWAY=10.1.1.2
# 设置子网掩码
NETMASK=255.255.255.0
# 设置主DNS
DNS1=114.114.114.114
# 设置备用DNS
DNS2=8.8.8.8

配置完成后,重启网络服务

systemctl restart network.service

注:配置的IP的地址、网关等,请与VMware软件网络设置里的 NAT 网段保持一致,否则请自行修改

2. 修改主机名

方法一直接修改hostname

#
# 用vi 编辑器打开 hostname 修改内容为主机名
vi /etc/hostname
#
# 内容如下:
hadoop01

方法二使用hostnamctl命令

hostnamectl set-hostname hadoop01
3.修改系统yum默认源

将源配置为国内阿里云源
a.新建一个repo.bak目录,用于备份系统中原来的repo文件

#
# 新建 repo.bak 目录
mkdir /etc/yum.repos.d/repo.bak
# 备份
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak

b.下载阿里云的 CentOS7 repo文件

curl http://mirrors.aliyun.com/repo/Centos-7.repo > /etc/yum.repos.d/CentOS-Base.repo

c.清除系统yum缓存并生成新的yum缓存

#
# 清除系统所有的yum缓存
yum clean all
#
# 生成yum缓存
yum makecache
#
# 安装epel源
yum install -y epel-release
4.关闭防火墙,SELinux

a.关闭防火墙

# 临时关闭
systemctl stop firewalld
# 禁止开机启动
systemctl disable firewalld
# 输出
~ Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
~ Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

b.永久关闭SELinux

# 使用vi打开SELinux配置文件
vi /etc/selinux/config
#
# 更改SELINUX=enforcing为如下内容
SELINUX=disabled
#
# 重启主机并查看SElinux状态
/usr/sbin/sestatus
#
# 输出 
~ SELinux status: disabled

二、克隆虚拟机

通过VMware克隆已经基本配置过的主机可以节省时间
需要注意如下几点:
1.克隆之后静态IP需要修改,参考本文 – 修改主机名
2.主机名需要修改,参考本文 – 设置主机IP、网关、DNS等
3.通过克隆部署完群集主机后,在hosts文件中添加ip与主机名的映射关系,如

# 通过vi编辑/etc/hosts文件
[root@hadoop01 ~]# vi /etc/hosts
#
# 添加ip与主机名的映射关系
10.1.1.91	hadoop01
10.1.1.92	hadoop02
10.1.1.93	hadoop01

三、集群间设置SSH免密钥

方便集群间相互通信
ssh免密码的设置:要求每两台主机之间设置免密码,自己的主机与自己的主机之间也要求设置免密码,执行完毕公钥在/root/.ssh/id_rsa.pub
1.在主机hadoop01执行一下操作:

[root@hadoop01 ~]# ssh-keygen -t rsa
[root@hadoop01 ~]# ssh-copy-id hadoop01
[root@hadoop01 ~]# ssh-copy-id hadoop02
[root@hadoop01 ~]# ssh-copy-id hadoop03

2.在主机hadoop02执行一下操作:

[root@hadoop02 ~]# ssh-keygen -t rsa
[root@hadoop02 ~]# ssh-copy-id hadoop02
[root@hadoop02 ~]# ssh-copy-id hadoop01
[root@hadoop02 ~]# ssh-copy-id hadoop03

3.在主机hadoop03执行一下操作:

[root@hadoop03 ~]# ssh-keygen -t rsa
[root@hadoop03 ~]# ssh-copy-id hadoop03
[root@hadoop03 ~]# ssh-copy-id hadoop01
[root@hadoop03 ~]# ssh-copy-id hadoop02

0x10 安装配置hadoop集群

安装wget下载工具:

yum install wget

0x11 下载jdk1.8和hadoop2.7

一、下载jdk

1.到甲骨文jdk下载页面:https://www.oracle.com/technetwork/java/javase/downloads/index.html
2.下滑找到jdk1.8
在这里插入图片描述3. 选择Linux_x64的压缩包版本
在这里插入图片描述
本文主机中使用的是:JDK8u121,上述仅作下载说明
4.拷贝到虚拟主机
注:也可以直接到虚拟主机中使用wget下载:

wget https://download.oracle.com/otn/java/jdk/8u211-b12/478a62b7d4e34b78b671c754eaaf38ab/jdk-8u211-linux-x64.tar.gz

二、下载hadoop

1.hadoop官网:http://hadoop.apache.org/
在这里插入图片描述2.选择hadoop版本
在这里插入图片描述3.选择对你而言较快的镜像位置进行下载
备注:本文主机中使用的是:hadoop-2.7.3,上述仅作下载说明
4.拷贝到虚拟主机
注:也可以直接到虚拟主机中使用wget下载:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

0x12 配置jdk1.8

1.解压配置jdk

# 查询默认安装的jdk
[root@hadoop01 ~]# rpm -qa|grep java
#
# 卸载该jdk   
[root@hadoop01 ~]# rpm -e –nodeps jdk_name
#
# 在/opt下新建module存放第三方软件模块
[root@hadoop01 ~]# mkdir /opt/module
#
# 解压到/opt/module
[root@hadoop01 ~]# tar zxvf  jdk*.tar.gz  -C  /opt/module/
#
# 通过编辑/etc/profile,配置java环境变量  
[root@hadoop01 ~]# vi /etc/profile
#
# 在文件末尾添加如下内容
# JDK
export  JAVA_HOME=/opt/module/jdk1.8.0_121
export  PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/sbin
#
# 保存退出,执行source 使其生效
[root@hadoop01 ~]# source  /etc/profile
#
# 测试是否配置成功
[root@hadoop01 ~]# java -version
[root@hadoop01 ~]# javac -version

2.将jdk及其拷贝到其他主机

# 使用scp 命令拷贝jdk到其他节点
[root@hadoop01 ~]# scp -r /opt/module/jdk1.8.0_121 root@hadoop02:/opt/module/
[root@hadoop01 ~]# scp -r /opt/module/jdk1.8.0_121 root@hadoop03:/opt/module/
#
# 使用scp 命令拷贝环境变量到其他节点
[root@hadoop01 ~]# scp /etc/profile root@hadoop02:/etc/
[root@hadoop01 ~]# scp /etc/profile root@hadoop03:/etc/
#
# 执行source 使其他节点的环境变量生效
[root@hadoop01 ~]# ssh root@hadoop02 "source /etc/profile"
[root@hadoop01 ~]# ssh root@hadoop03 "source /etc/profile"

0x12 配置hadoop

一、解压hadoop并配置环境变量

1 解压

[root@hadoop01 ~]# tar zxvf hadoop*.tar.gz -C /opt/module/

2 环境变量设置

# 使用vi 编辑/etc/profile文件
[root@hadoop01 ~]# vi /etc/profile
#
# 在末尾末尾追加
# HADOOP
export HADOOP_HOME=/opt/module/hadoop-2.7.3
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
#
# 生效  
[root@hadoop01 ~]# source  /etc/profile

二、编辑hadoop完全分布式集群的配置文件

hadoop 的配置文件在安装目录 /etc/hadoop/ 下
本文中也就是 /opt/module/hadoop2.7.3/etc/hadoop/

1 编辑 hadoop-env.sh
添加JDK的路径,如

JAVA_HOME=/opt/module/jdk1.8.0_121

在这里插入图片描述
2 编辑 hdfs-site.xml
在标签内填入如下内容:

<!-- Put site-specific property overrides in this file. -->
<configuration>
<!--注释配置数据块的冗余度,默认是3-->
<property>
             <name>dfs.replication</name>
             <value>3</value>
</property>
<!--secondaryNameNode的主机地址-->
<property>
         <name>dfs.namenode.secondary.http-address</name>
         <value>hadoop01:50090</value>
</property>
<property>
		<name>dfs.permissions</name>
		<value>false</value>
		<description>
 		If "true", enable permission checking in HDFS.
 		If "false", permission checking is turned off,
 		but all other behavior is unchanged.
 		Switching from one parameter value to the other does not change the mode,
 		owner or group of files or directories.
		</description>
</property>
</configuration>

3 编辑 core-site.xml
在标签内填入如下内容:

<!-- Put site-specific property overrides in this file. -->
<configuration>
<!--配置HDFS主节点,namenode的地址,9000是RPC通信端口-->
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop01:9000</value>
</property>
<!--配置HDFS数据块和元数据保存的目录,一定要修改-->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.7.3/tmp</value>
</property>
</configuration>

4 编辑 core-site.xml
在标签内填入如下内容:

<!-- Put site-specific property overrides in this file. -->
<configuration>
<!--配置HDFS主节点,namenode的地址,9000是RPC通信端口-->
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop:9000</value>
</property>
<!--配置HDFS数据块和元数据保存的目录,一定要修改-->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.7.3/tmp</value>
</property>
</configuration>

5 编辑 mapred-site.xml
在标签内填入如下内容:

<!-- Put site-specific property overrides in this file. -->
<configuration>
<!--配置MR程序运行的框架-->
<property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
</property>
</configuration>

6 编辑 yarn-site.xml 
填入如下内容:

<configuration>
<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop01</value>
</property>
<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
</property>
</configuration>

7 编辑 slaves
填入集群的主机名称:

hadoop01
hadoop02
hadoop02

三、使用scp 命令拷贝hadoop及配置到其他节点

拷贝hadoop

# 拷贝到hadoop02
[root@hadoop01 ~]# scp -r /opt/module/hadoop-2.7.3 root@hadoop02:/opt/module/
#
# 拷贝到hadoop03
[root@hadoop01 ~]# scp -r /opt/module/hadoop-2.7.3 root@hadoop03:/opt/module/

拷贝/etc/profile

# 使用scp 命令拷贝环境变量到其他节点
[root@hadoop01 ~]# scp /etc/profile root@hadoop02:/etc/
[root@hadoop01 ~]# scp /etc/profile root@hadoop03:/etc/

四、启动集群

首次启动需要格式化namenode

# format
hadoop namenode -format

启动

# 在主节点执行,当然更推荐先执行start-dfs.sh,再执行 start-yarn.sh的方式来启动hadoop
start-all.sh
#
# 如要关闭则执行:
stop-all.sh

五、查看

1 使用jps查看运行的作业
hadoop01节点:

[root@hadoop01 ~]# jps
7586 NameNode
7718 DataNode
8040 ResourceManager
8456 Jps
8155 NodeManager
7886 SecondaryNameNode

hadoop02和hadoop03节点:

[root@hadoop02 ~]# jps
7392 Jps
7246 NodeManager
7135 DataNode
[root@hadoop03 ~]# jps
7417 Jps
7178 DataNode
7277 NodeManager

2 web访问50070和80888端口
50070端口:
在这里插入图片描述8088端口
在这里插入图片描述

0x30 其他

0x31 可能遇到问题

【待补充】

0x32 参考

【待补充】

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值