Hadoop 3完全分布式集群搭建方法(CentOS 7+Hadoop 3.2.1)

22 篇文章 0 订阅

这里通过4台Linux虚拟机,详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是3.2.1,JDK版本是1.8

一、准备环境

  1. 在VMware workstations上创建4个Linux虚拟机,并配置其静态IP。

  2. 配置DNS(每个节点)
    编辑配置文件,添加主节点和从节点的映射关系。

#vim /etc/hosts
192.168.1.13 hadoop01
192.168.1.14 hadoop02
192.168.1.15 hadoop03
192.168.1.16 hadoop04
  1. 关闭防火墙(每个节点)
#关闭服务
[root@hadoop01 opt]# systemctl stop firewalld
#关闭开机自启动
[root@hadoop01 opt]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  1. 配置免密码登录
    有关【配置免密码登录方法】,请参考这里
  2. 配置Java环境(每个节点)
    有关【配置java环境方法】,请参考这里

二、搭建Hadoop完全分布式集群

在各个节点上安装与配置Hadoop的过程都基本相同,因此在主节点master上进行统一配置,然后通过scp 命令将修改的配置文件拷贝到各个从节点上即可。

  1. 下载Hadoop安装包,解压,配置Hadoop环境变量

有关【Hadoop安装包下载方法】,请参考这里。

本文下载的Hadoop版本是3.2.1,指定一个目录(比如:/opt),使用rz命令上传Hadoop安装包到Linux系统,解压到指定目录,配置Hadoop环境变量,并使其生效。实现命令如下:

#解压到/opt目录
[root@hadoop01 opt]# tar -zxvf hadoop-3.2.1.tar.gz
#链接/opt/hadoop-3.2.1到/opt/hadoop,方便后续配置
[root@hadoop01 opt] #ln -s hadoop-3.2.1 hadoop
#配置Hadoop环境变量(每个节点)
[root@hadoop01 opt]# vim /etc/profile
#Hadoop
export HADOOP_HOME=/opt/hadoop # 该目录为解压安装目录
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
#保存后,使profile生效
[root@hadoop01 opt]# source /etc/profile
  1. 配置Hadoop环境脚本文件中的JAVA_HOME参数
#进入Hadoop安装目录下的etc/hadoop目录
[root@hadoop01 ~]#cd /opt/hadoop/etc/hadoop

#分别在hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中添加或修改如下参数:

[root@hadoop01 hadoop]# vim hadoop-env.sh 
[root@hadoop01 hadoop]# vim mapred-env.sh
[root@hadoop01 hadoop]# vim yarn-env.sh
export JAVA_HOME="/opt/jdk"  # 路径为jdk安装路径
#验证Hadoop配置是否生效
[root@hadoop01 hadoop]# hadoop version
Hadoop 3.2.1
Source code repository https://github.com/apache/hadoop.git -r 
Compiled by sunilg on 2020 04-08T06:08Z
Compiled with protoc 2.5.0
From source with checksum d3f0795ed0d9dc378e2c785d3668f39
This command was run using /opt/hadoop-3.2.0/share/hadoop/common/hadoop-common-3.2.1.jar
  1. 修改Hadoop配置文件

Hadoop安装目录下的etc/hadoop目录中,需修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers文件,根据实际情况修改配置信息。

(1)core-site.xml (配置Common组件属性)

  <configuration>
  <property>
      <!-- 配置hdfs地址 -->
      <name>fs.defaultFS</name>
      <value>hdfs://hadoop01:9000</value>
  </property>
  <property>
      <!-- 保存临时文件目录,需先在/opt/hadoop下创建tmp目录 -->
      <name>hadoop.tmp.dir</name>
     <value>/opt/hadoop/tmp</value>
 </property>
 </configuration>

(2)hdfs-site.xml (配置HDFS组件属性)

<configuration>
      <property>
         <!-- 主节点地址 -->
          <name>dfs.namenode.http-address</name>
          <value>hadoop01:50070</value>
      </property>
      <property>
          <name>dfs.namenode.name.dir</name>
          <value>file:/opt/hadoop/dfs/name</value>
     </property>
     <property>
         <name>dfs.datanode.data.dir</name>
         <value>file:/opt/hadoop/dfs/data</value>
     </property>
     <property>
        <!-- 备份数为默认值3 -->
        <name>dfs.replication</name>
         <value>3</value>
     </property>
        <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
   </property>

  <property>
    <name>dfs.permissions</name>
    <value>false</value>
    <description>配置为false后,可以允许不要检查权限就生成dfs上的文件,方便倒是方便了,但是你需要防止误删除.</description>
  </property>
 </configuration>

(3)mapred-site.xml (配置Map-Reduce组件属性)

  <configuration>
      <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value> #设置MapReduce的运行平台为yarn
      </property>
      <property>
          <name>mapreduce.jobhistory.address</name>
          <value>hadoop01:10020</value>
      </property>
     <property>
         <name>mapreduce.jobhistory.webapp.address</name>
         <value>hadoop01:19888</value>
     </property>
 <property>
   <name>mapreduce.application.classpath</name>    <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
 </property>
</configuration>

(4)yarn-site.xml(配置资源调度属性)

 <configuration>
  <property>
         <name>yarn.resourcemanager.hostname</name> #指定yarn的ResourceManager管理界面的地址,不配的话,Active Node始终为0
         <value>hadoop01</value>
     </property>
     <property>
         <name>yarn.nodemanager.aux-services</name>  #reducer获取数据的方式
         <value>mapreduce_shuffle</value>
     </property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.1.13:8088</value>
<description>配置外网只需要替换外网ip为真实ip,否则默认为 localhost:8088</description>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
<description>每个节点可用内存,单位MB,默认8182MB</description>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。</description>
</property>

<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>

(5)workers文件

#增加从节点地址(若配置了hosts,可直接使用主机名,亦可用IP地址)
[root@hadoop01 hadoop]# vim workers
hadoop02
hadoop03
hadoop04
  1. 将配置好的文件夹拷贝到其他从节点
[root@hadoop01 hadoop]# scp -r /opt/hadoop-3.2.1 root@hadoop02:/opt/
[root@hadoop01 hadoop]# scp -r /opt/hadoop-3.2.1 root@hadoop03:/opt/
[root@hadoop01 hadoop]# scp -r /opt/hadoop-3.2.1 root@hadoop04:/opt/

每个节点执行:

ln -s hadoop-3.2.1 hadoop
  1. 配置启动脚本,添加HDFS和Yarn权限
添加HDFS权限:编辑如下脚本,在第二行空白位置添加HDFS权限
[root@hadoop01 sbin]# vim sbin/start-dfs.sh 
[root@hadoop01 sbin]# vim sbin/stop-dfs.sh 
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

添加Yarn权限:编辑如下脚本,在第二行空白位置添加Yarn权限

[root@hadoop01 sbin]# vim sbin/start-yarn.sh 
[root@hadoop01 sbin]# vim sbin/stop-yarn.sh 

YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=yarn
YARN_NODEMANAGER_USER=root

注意:若不添加上述权限,则会报错:缺少用户权限定义所致。

ERROR: Attempting to launch hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch.
Starting datanodes
ERROR: Attempting to launch hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch.
Starting secondary namenodes [localhost.localdomain]
ERROR: Attempting to launch hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch.
  1. 初始化 & 启动
#格式化
[root@hadoop01 hadoop-3.2.1]# bin/hdfs namenode -format
#启动(两种方式均可启动)
方法一:
[root@hadoop01 hadoop-3.2.1]# sbin/start-all.sh

方法二:
[root@hadoop01 hadoop-3.2.1]# sbin/start-dfs.sh 
[root@hadoop01 hadoop-3.2.1]# sbin/start-yarn.sh
  1. 验证Hadoop启动成功
#主节点
[root@hadoop01 sbin]# jps
11329 NameNode
11831 ResourceManager
11592 SecondaryNameNode
12186 Jps
#从节点
[root@hadoop02 hadoop]# jps
5152 SecondaryNameNode
5085 DataNode
5245 NodeManager
5357 Jps

[root@hadoop03 opt]# jps
5080 DataNode
5178 NodeManager
5278 Jps

[root@hadoop04 opt]# jps
5090 NodeManager
5190 Jps
4991 DataNode
  1. Web端口访问

注:先开放端口或直接关闭防火墙。

#查看防火墙状态
firewall-cmd --state
#临时关闭防火墙
systemctl stop firewalld
#禁止开机启动防火墙
systemctl disable firewalld

在浏览器输入:http://hadoop01:8088打开ResourceManager页面。

在浏览器输入:http://hadoop01:50070打开Hadoop Namenode页面。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值