Hadoop集群安装与配置图文详细教程

Linux环境下安装配置Hadoop

参考Hadoop官方文档进行配置。

一 、 先决条件

Linux和Windows所需软件包括:

  1. Java™ 必须安装,通过Hadoop官方文档,提前检查匹配的版本。
  2. ssh 必须安装并且保证 sshd一直运行,以便用Hadoop 脚本管理远端Hadoop守护进程。
  3. 此次安装的版本
    Linux:CentOS-8.3.2011-x86_64
    Hadoop:hadoop3.3.0
    JDK:jdk-8u202-linux-x64。
  4. VMware内的三台克隆好的Linux虚拟主机,已解压配置好hadoop安装包。

Windows下的附加软件需求

  1. Xshell,xftp- 或者提供上述软件之外的shell支持等软件。

二、 Linux虚拟机的准备配置

三台虚拟主机的静态ip,以及主机名。hadoop所需要的主机数量为奇数。

IP				主机名			操作系统						作用
192.168.31.66	Master		CentOS8_x64		NameNode  ResourceManager SecondaryNameNode
192.168.31.67	Slave1		CentOS8_x64		DataNode  NodeManager
192.168.31.68	Slave2		CentOS8_x64		DataNode  NodeManager

1. 静态网络设置

分别设置三台主机的静态网络

输入命令 vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改文件内容如下,

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#BOOTPROTO=dhcp
BOOTPROTO=static
DEFROUTE=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=617068b3-eebd-4f00-92f2-52d722f2b5a2
DEVICE=ens33
#ONBOOT=no
ONBOOT=yes

PREFIX=24
IPADDR=192.168.31.66
GATEWAY=192.168.31.1
NETMASK=255.255.255.0
DNS1=192.168.31.1

此为master主机的配置文件,其他两个slave主机修改IP地址即可

ps:可先查询可连接外网的三台虚拟机中的ip、网关、dns、子网掩码地址,根据实际情况修改静态网络配置文件。这样在配置静态网络文件时,便于快速设置,且避免ping不通外网。

.

ps:可使用以下操作快速查询linux的ip、dns、网关

在这里IP地址查询
网关查询
DNS查询

重启网络设置,不能重网络就重启虚拟机

使用方法:nmcli c reload +网卡名

例:nmcli c reload ens33
ip addr  查看网络配置 或者 nmcli:

在这里插入图片描述

ps:当windows主机的网络改变后,原先配置好静态网络的虚拟机,因不与windows主机在同一网段,将出现windows主机ping不通虚拟机,虚拟机连接不了外网等情况,需要的话可以重新修改网络配置。原先在同一网段的虚拟机可以相互ping通。

2. 分别修改主机名

输入命令 vim /etc/hostname

修改三台主机名分别如下:

Master
Slave1
Slave2

3. 映射 IP 地址及主机名

对 3 台虚拟机,依次修改/etc/hosts 文件。

输入命令 vim /etc/hosts

在文件末尾添加以下内容,IP 地址根据实际情况修改:

192.168.31.66	Master
192.168.31.67	Slave1
192.168.31.68	Slave2

4. 配置免密登录

密钥设置,这样启动hadoop时不会出现其他节点拒绝访问的情况。

输入命令 ssh-keygen -t rsa

连续回车,或者输入要设置的密码,直到出现如下页面
在这里插入图片描述

Ps:公钥(id_rsa.pub)和私钥(id_rsa)

复制公钥到所有节点,依次输入:

 ssh-copy-id -i ~/.ssh/id_rsa.pub Master 
 ssh-copy-id -i ~/.ssh/id_rsa.pub Slave1 
 ssh-copy-id -i ~/.ssh/id_rsa.pub Slave2
ps:每次发送公钥到公钥发送给集群内的所有主机后,验证一下免密登录是否匹配成功。 
ps:如输入命令 ssh Slave1,登录主机Slave1。当ssh远程登录到其主机后,现在控制的是远程主机,需要执行退出命令 :exit 后才能重新控制本地主机。

三、 Hadoop集群安装

su权限下操作

1.解压配置hadoop

(1) 将hadoop安装文件解压到根目录下。

后将文件夹名修改成hadoop,便于操作。

解压命令 tar -zxvf hadoop-3.3.0.tar.gz -C ~/
在这里插入图片描述

(2) 创建存储临时文件的文件夹

输入命令 mkdir tmp

在这里插入图片描述

ps:建议不要在根目录下,可能没有权限,例 创建在:/home/wang/hadoop/目录下 

(3) 配置HADOOP_HOME

分别修改profile文件 和 bashrc文件,在文件中添加 Hadoop的环境变量。

输入命令 vim /etc/profile 和 vim ~/.bashrc

HADOOP_HOME的位置根据实际情况修改
都添加内容如下:

#HADOOP_HOME 
export HADOOP_HOME=~/hadoop 
export PATH=$PATH:$HADOOP_HOME/bin 
export PATH=$PATH:$HADOOP_HOME/sbin

刷新配置文件,让修改的配置文件生效

输入命令 source /etc/profile

测试是否安装成功(如果Hadoop命令不生效就重启试试 reboot)

输入 hadoop version 显示如下情况
在这里插入图片描述

刷新使配置生效  source ~/.bashrc
输入whereis hdfs,如果能正常显示 hdfs 的路径说明配置正确。

在这里插入图片描述
在这里插入图片描述

2. 修改Hadoop配置文件

在hadoop/etc/hadoop/目录下。

(1) 配置hadoop-env.sh中的JAVA_HOME 。

输入命令 vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

修改成JAVA_HOME的目录位置,根据自己本机的实际情况修改
修改成JAVA_HOME的安装目录
之后输入bin/hadoop ,显示如下内容代表javahome配置成功。
在这里插入图片描述

(2) 配置core-site.xml

输入命令 vim core-site.xml

ps: 设置hadoop.tmp.dir的目录时,最好不要在根目录下,可能没有权限,造成出错,无法使用。

修改文件内容如下:

<configuration>
<!-- 指定HDFS中NameNode的地址 -->
  <property>
    <name>fs.defaultFS</name> 
    <value>hdfs://Master:9000</value>
<!—改成自己的主机名或ip地址,以及适合的端口号,例:8020,9000等 -->
  </property>
  <!-- 指定hadoop临时目录,需自行创建 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/wang/hadoop/tmp</value>
  </property>
  </configuration>

(3) 配置hdfs-site.xml

输入命令 vim hdfs-site.xml

添加文件内容如下

<configuration>
<property>
      <name>dfs.replication</name>
      <value>2</value>
</property>
<property>
  <name> dfs.namenode.http-address </name>
  <value>http://Master:9870</value>
</property>
 <property>
   <name>dfs.namenode.name.dir</name>
   <value>file:/home/wang/hadoop/hdfs/name</value>    
</property>
<property>
   <name>dfs.datanode.data.dir</name>
   <value>file:/home/wang/hadoop/hdfs/data</value>
</property>
 </configuration>
 ps:配置dfs.namenode.http-address时,写http://localhost:9870,则只能在namenode节点的主机用localhost:9870访问,写主机名http://Master.Hadoop:9870,则在其他主机也可以访问,若没有写这项,会无法在浏览器访问namenode information页面。

.

 ps:配置dfs.namenode.name.dir和dfs.datanode.data.dir时,先创建好/home/wang/hadoop/hdfs/name文件夹,便于存储name节点和data节点的信息。

(4) 配置yarn-site.xml

输入命令 vim yarn-site.xml

添加文件内容如下

<configuration>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    	<name> yarn.resourcemanager.address</name>
    <value> Master:8030</value>
  </property>
  <property>
   <name>yarn.resourcemanager.scheduler.address</name>
   <value> Master:8031</value>
  </property>
  <property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
  <value> Master:8032</value>
</property>
 		<property>
 	<name>yarn.resourcemanager.admin.address</name>
   		<value> Master:8033</value>
  </property>
     <property>
       <name>yarn.resourcemanager.webapp.address</name>
       <value>Master:8088</value>
     </property>
</configuration>

(5) 配置 mapred-site.xml

输入命令 vim mapred-site.xml

文件所配置内容如下:

<configuration>
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
</configuration>

(6) 配置 workers 文件。

配置 workers 文件就是指定哪些主机是 worker从设备。

输入命令 vim workers

将文件内容修改如下,一行一个:

Slave1
Slave2
ps: hadoop 3.0以后的版本是workers,不是slavers

(7) 分发配置文件

将master主机的配置文件分发至其他主机,每个主机的hadoop配置文件需一致。

分发命令格式

scp -r local_folder remote_username@remote_ip:remote_folder 
或者
scp -r local_folder remote_ip:remote_folder

依次输入命令:

scp -r ~/hadoop/etc/hadoop/ hadoop@ Slave1:~/hadoop/etc/
scp -r ~/hadoop/etc/hadoop/ hadoop@ Slave2:~/hadoop/etc/
ps:注意文件路径,此次只复制${HADOOP_HOME}/etc/hadoop/下的配置文件。因为之前克隆时已经在root目录下解压了hadoop,三台主机都有hadoop安装文件。这样需要传输的文件数量少,速度快。

(8) 格式化 HDFS

在 Master主机操作,格式化一次即可。

输入命令 hdfs namenode -format。

在这里插入图片描述

ps:多次格式化,会造成datanode的clusterID和初始格式化时的不相同,是造成启动hadoop时,datanode没有启动的原因之一。
datanode节点的clusterID只在第一次格式化的时候生成,后面不会自动修改.

解决方法:需要重新匹配CID,在所配置的dfs.n amenode.name.dir下
如 : /home/wang/hadoop/hdfs/name/current/
修改此目录下的VERSION文件,
将所有未启动的datanode节点的clusterID修改成和namenode节点相同的clusterID

(9) 启动和关闭Hadoop

在Master主机上执行

输入命令 start-dfs.sh 和 start-yarn.sh,
输入命令 start-all.sh也可,代表将(start-dfs.sh,start-yarn.sh,)依次执行一遍

在这里插入图片描述

输入 stop-all.sh,关闭所有节点。

关闭namenode节点 $HADOOP_HOME/bin/hdfs --daemon stop namenode
关闭datanode节点 $HADOOP_HOME/bin/hdfs --daemon stop datanode
关闭resourcemanager节点 $HADOOP_HOME/bin/yarn --daemon stop resourcemanager
关闭nodemanager节点  $HADOOP_HOME/bin/yarn --daemon stop nodemanager

(10) 验证启动情况

  1. 查看启动的节点

输入命令 jps

在这里插入图片描述

  1. 访问web页面。

    可以访问web页面,http://localhost:9870/(在虚拟机内的浏览器)
    或者namedoes节点的主机IP地址http://192.168.31.66:9870/(不限主机的浏览器)
    可以访问 ResourceManagerRM管理界面 - http://localhost:8088/
    开启历史服务器 mapred --daemon start historyserver,在Web中查看任务运行情况 - http://localhost:19888/(有设置的话)
    

.

Ps: Hadoop3.x版本后是默认接口是9870,不是50070.

浏览器显示页面:

在这里插入图片描述

在这里插入图片描述

四、 遇到的问题以及解决方案

  1. 若分发配置文件时,或者启动hadoop时,显示错误 Permission denied
    在这里插入图片描述
    解决方案:

    重新检查免密登录是否配置好,注意,要将公钥发送给集群内的所有主机,包括本机。

  2. 若出现 9870 网址访问不了,或者8088网址访问失败

    解决方案:

    检查防火墙是否关闭;
    检查namenodes节点是否启动,datanode节点是否启动;
    检查四个核心配置文件配置情况。
    
  3. 若 ResourceManager 启动不了 解决方案:

    检查四个核心配置文件的配置情况;
    检查jdk版本是否和hadoop版本匹配,本次使用的版本hadoop3.x和jdk8 (jdk1.8) 匹配。
    目前jdk8以后的版本和hadoop3.x不匹配所产生的这个bug还没有解决。
    
  4. 若出现错误

Starting namenodes on [Master.Hadoop]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [Master.Hadoop]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

解决方案:

编辑 $HADOOP_HOME/etc/hadoop/hadoop-env.sh

在文件内添加:

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

在这里插入图片描述
已可以正确启动hadoop。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值