Hadoop——3.2.1版本伪分布式集群安装超详细版

4 篇文章 0 订阅
3 篇文章 0 订阅

一、机器环境

本地系统:windows 10
虚拟机:VMware Workstation Pro
虚拟系统:Centos 7.6 已配通NAT
SSH工具:XShell 6
Hadoop版本: 3.2.1
Java版本: JDK1.8

tips:若系统未配通NAT可参考
VMware——CentOS 7之NAT网络连接配置

二、准备工作

  1. 打开虚拟机登录系统并连接SSH
    记得先打开CentOS系统在进行连接,忘记ip可使用ip addr查看第二项ens中的IP。

  2. 创建hadoop用户并设定密码
    如果不是root账号,需要执行su命令以登录root账号。

    su              # 上述提到的以 root 用户登录
    

    如果是root账号,只需要执行

    useradd -m hadoop -s /bin/bash   # 创建新用户hadoop
    

    密码设定,需输入2次,这里将密码设为hdfs2020(至少8个字符且不能过于简单,不能包含用户名),输入时密码不显示;

    passwd hadoop	
    

在这里插入图片描述

在这里插入图片描述

  1. 登录hadoop账号并检查SSH安装情况
    输入su hadoop以登录hadoop账号。
    输入ssh localhost,以下情况代表已安装SSH且可使用。 在这里插入图片描述
    如果不是这种,请输入以下命令安装SSH,然后重新检查安装情况。
sudo yum install openssh-clients -y
sudo yum  install openssh-server -y
  1. 配置SSH免密登录
    由于每次登录都需要输入SSH密码,很麻烦,因此我们进行SSH免密登录配置。
    在这里插入图片描述
    输入 exit 以返回hadoop@localhost。

输入以下指令

cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 出现输入提示,都按回车就可以

在这里插入图片描述
接着输入以下命令

cat id_rsa.pub >> authorized_keys  # 加入授权
chmod 600 ./authorized_keys    # 修改文件权限

完成后,再输入ssh localhost,发现这次登录不用密码即代表成功。
在这里插入图片描述

  1. 安装Java环境
    搜索JDK命令:yum search java | grep jdk
    安装JDK命令:
    sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
    
    在这里插入图片描述
    检查java版本:
    在这里插入图片描述
    Tips:默认安装位置为/usr/lib/jvm/java-1.X.0-openjdk(这里X为8)

配置JAVA_HOME环境变量:

vim ~/.bashrc   #编辑环境变量文件

输入环境变量保存并退出:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
在这里插入图片描述

source ~/.bashrc    # 使变量设置生效
echo $JAVA_HOME

出现以下结果表示JAVA环境配置完毕。
在这里插入图片描述

三、 Hadoop安装

  1. 快照
    前面准备工作完成后,最好进行一次虚拟机快照。

  2. Hadoop下载
    镜像地址1:https://mirrors.cnnic.cn/apache/hadoop/common/
    镜像地址2:
    http://mirror.bit.edu.cn/apache/hadoop/common/

下载hadoop-x.y.z.tar.gz 这个文件。

包含 src 的则是 Hadoop 源代码,需要进行编译才可使用。

在这里插入图片描述

  1. rz命令上传本地文件到虚拟机

若没有安装lrzsz可先执行命令

yum install lrzsz -y

然后进入到最高权限用户上传文件,文件将上传到当前目录下。
在这里插入图片描述

  1. 解压Hadoop
# 解压到/usr/local中
sudo tar -zxf ~/hadoop/hadoop-3.2.1.tar.gz -C /usr/local    

检查Hadoop是否可用,若显示下图结果则表示正确。

cd /usr/local/hadoop-3.2.1
./bin/hadoop version

在这里插入图片描述

四、Hadoop伪分布式配置

  1. 伪分布式说明
    Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

  2. 进行快照
    此时机器上已安装好了Hadoop,为了防止配置错误找不到问题所在,需用重新安装的情况,这里进行一次快照比较保险。

  3. 配置Hadoop环境变量

vi ~/.bashrc

在文件中JAVA_HOME变量下面加入以下HADOOP_HOME内容,保存并退出。

export HADOOP_HOME=/usr/local/hadoop-3.2.1
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

重启配置以生效。

source ~/.bashrc
  1. 修改配置文件
    Hadoop配置文件位于 /usr/local/hadoop-3.2.1/etc/hadoop/
    ① 修改core-site.html文件内容为:
    (记得按自己安装目录修改路径)
<configuration>
<property> 
	<name>hadoop.tmp.dir</name> 
	<value>/usr/local/hadoop-3.2.1/data/tmp</value> </property> 
<property> 
	<name>fs.defaultFS</name> 
	<value>hdfs://master:9000</value>
</property>
</configuration>

② 修改hdfs-site.xml文件内容为:

<configuration>
<!-- 副本数-->
    <property>
         <name>dfs.replication</name>
         <value>3</value>
     </property>
<!-- 是否启用hdfs权限检查 false 关闭 -->
     <property>
         <name>dfs.permissions.enabled</name>
         <value>false</value>
     </property>

</configuration>

③ 修改yarn-site.xml文件内容为:

<configuration>
	<property>
		<name>yarn.nodemanager.aux-services</name> 
		<value>mapreduce_shuffle</value> </property> 
	<property> 
		<name>yarn.nodemanager.vmem-check-enabled</name> 
		<value>false</value> 
	</property>
</configuration>

④ 修改mapred-site.xml文件内容为:
(记得按自己安装目录修改路径)

<configuration>
	<property>
		<name>mapreduce.framework.name</name> 
		<value>yarn</value> 
	</property>
	<property>
		<name>yarn.app.mapreduce.am.env</name> 
		<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1/</value> 
	</property> 
	<property> 
		<name>mapreduce.map.env</name> 
		<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1</value>
	</property>
	<property> 
		<name>mapreduce.reduce.env</name> 
		<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1</value> 
	</property>
</configuration>

⑤ 配置环境变量 hadoop-env.sh
在第54行左右,将 # export JAVA_HOME = 修改为:

export JAVA_HOME= /usr/lib/jvm/java-1.8.0-openjdk/

在这里插入图片描述
⑥ 配置环境变量 yarn-env.sh
在适当的位置手动加入JAVA_HOME路径
在这里插入图片描述

⑦ 配置/etc/profile

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/usr/local/hadoop-3.2.1
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

记得 执行 source .profile 让配置立即生效。

  1. 克隆虚拟机并用XShell6连接
    在这里插入图片描述
  2. 修改hosts文件(使用root账号,三台机都要,其实放在克隆前做更好)
    ip地址要与主机对应好,三台主机hosts修改内容一样。
vim /etc/hosts

在这里插入图片描述
在Master主机下ping worker1和 worker2,若结果如下图则代表修改hosts完成。
在这里插入图片描述
Tips:使用crtl + c 或 crtl + z 来结束ping命令,否则会一直ping下去。

  1. 修改三台主机主机名(使用root账号)
# Master主机下
hostnamectl set-hostname master
# 两台Worker主机下
hostnamectl set-hostname worker1
hostnamectl set-hostname worker2
# 查看修改后hostname可直接输入
hostname
  1. 关闭防火墙(三台机都要,其实放在克隆前做更好)
#关闭防火墙指令
systemctl  stop   firewalld.service
#防火墙不自启动
systemctl disable firewalld.service
#查看防火墙状态指令两个选一个用
systemctl status firewalld
  1. 配置Master到Worker单向免密登录
ssh-copy-id worker1
ssh-copy-id worker2

在这里插入图片描述

#测试SSH免密连接
ssh worker1
ssh worker2

在这里插入图片描述

  1. 配置workers信息(三台机都要,其实放在克隆前完成会更方便,但放在后面做会更清晰)
# 修改workers文件, Hadoop2.X对应的是slaves文件
vim /usr/local/hadoop-3.2.1/etc/hadoop/workers
#添加内容
worker1
worker2
  1. 配置三台机器Hadoop 启动的系统环境变量(用一般账户,这里用我们创建的hadoop账户)
# 切换账户
su hadoop
# 编辑文件
vim ~/.bash_profile
# 添加以下内容到文件末尾,注意修改成自己的路径
#HADOOP 
export HADOOP_HOME=/usr/local/hadoop-3.2.1 
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
# 变量生效
source ~/.bash_profile

在这里插入图片描述

  1. 为三台机器创建数据目录
# 路径为core-site.xml配置文件中
#hadoop.tmp.dir指定的目录
mkdir -p /usr/local/hadoop-3.2.1/data/tmp

五、启动集群

  1. 格式化文件系统(在master主机上)
# hadoop用户下输入,若为产生Exception提示则成功格式化
# 建议成功格式化后进行虚拟机快照
hdfs namenode -format

在格式化文件系统时产生了异常,已解决。
主要是core-site.xml路径问题导致的异常,详情请看第六大项第一点。

  1. 启动Hadoop
# 进入Hadoop主目录
cd /usr/local/hadoop-3.2.1/
# 启动命令
sbin/start-all.sh
# jps命令查看运行情况
jps

master机结果:
在这里插入图片描述

worker机结果:
在这里插入图片描述

  1. 物理机访问WebUI
    ① 访问 http://masterip:9870
    在这里插入图片描述
    ② 访问 http://masterip:8420
    在这里插入图片描述
    ③ 访问 http://masterIp:8088

在这里插入图片描述
④ 未能成功在物理机上ping 通请看第六大点第三小点。

  1. 运行计算PI程序
[hadoop@master hadoop-3.2.1]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar pi 1 1

在这里插入图片描述
[hadoop@master hadoop-3.2.1]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar pi 3 3
在这里插入图片描述
这里用pi 1 1 和 pi 3 3来做结果检验,如果想要精度高一点可以使用pi 10 10

Tips:若出现未找到主类或加载主类失败异常,请看第六大点第五小点。

六、遇到的异常

  1. core-site.xml与创建的数据目录不符合导致格式化失败
    在这里插入图片描述
    解决方法:检查core-site.xml中设置的目录和创建数据文件目录时的目录是否一致。
    不一致则需修改路径或重新创建目录,所有主机都需要进行相同操作

  2. master也作为DataNode了
    在这里插入图片描述
    正常来说Master应该没有DataNode,想起在配置worker时没有删除掉localhost一项,可能是这个导致的。
    在这里插入图片描述
    解决方法:删除worker配置文件中localhost后,重新格式化并重新启动,其他两个worker节点的localhost不影响可不进行修改。
    重新格式化前需关闭hadoop服务。

#进入Hadoop主目录后执行
sbin/stop-all.sh

修正后结果:
在这里插入图片描述

  1. 访问不了WebUI
  • ip地址输错
  • 未关闭虚拟机防火墙,物理机不必关
  • 端口号错误(hadoop3.2.1 hdfs端口号为9870)
  • hosts文件未配置ip地址转localhost
  1. 针对上面的第四点,配置ip地址转localhost
vim /etc/hosts

在这里插入图片描述
加入上面这句话就行,ip地址记得改为master主机的。

  1. 启动计算PI程序时显示加载主类失败

原因:

# 获取hadoop classpath
hadoop classpath

在这里插入图片描述
将下面的内容加到yarn-site.xml文件中

<property>
         <name>yarn.application.classpath</name>
         <value>/usr/local/hadoop-3.2.1/etc/hadoop:/usr/local/hadoop-3.2.1/share/hadoop/common/lib/*:/usr/local/hadoop-3.2.1/share/hadoop/common/*:/usr/local/hadoop-3.2.1/share/hadoop/hdfs:/usr/local/hadoop-3.2.1/share/hadoop/hdfs/lib/*:/usr/local/hadoop-3.2.1/share/hadoop/hdfs/*:/usr/local/hadoop-3.2.1/share/hadoop/mapreduce/lib/*:/usr/local/hadoop-3.2.1/share/hadoop/mapreduce/*:/usr/local/hadoop-3.2.1/share/hadoop/yarn:/usr/local/hadoop-3.2.1/share/hadoop/yarn/lib/*:/usr/local/hadoop-3.2.1/share/hadoop/yarn/*</value>
</property>

关闭服务并重新开启服务。

# hadoop主目录下,hadoop账户下
bsin/stop-all.sh
bsin/start-all.sh
  1. JPS worker机没有DataNode
    在这里插入图片描述
    原因:执行文件系统格式化时,会在namenode数据文件夹中保存一个name/current/VERSION文件,记录namespaceID,标识了所格式化的 namenode的版本。如果频繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的data/current/VERSION文件只是你第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。

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

解决方法:

查看master节点的clusterID并覆盖worker节点的clusterID,完成后关闭服务并重启。
[hadoop@worker2 hadoop-3.2.1]$ cd data/tmp/dfs/data/current/
[hadoop@worker2 current]$ vim VERSION 

若仍不行就直接删除三台机器core-site.xml中定义的dfs.data.dir在本地系统的路径(此教程为/usr/local/hadoop-3.2.1/data/tmp),然后重新格式化文件系统。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值