Hadoop基础平台安装三台虚拟机的完全分布式配置与检验结果

2019-11-22  本文已影响0人  周赫威

内容:配置三台虚拟机,并且三台虚拟机的安排

三台虚拟机配置方案:

1.初期工作

关闭防火墙

配置hostname

vim/etc/sysconfig/network

IP地址修改 配置好Hostname 配置好hosts

vim/etc/sysconfig/hosts

快速安装软件并且通过脚本快速安装到其余两台虚拟机

通过ssh协议。使用SCP 或者sync服务,编写Shell脚本可以快速实现安装和配置环境变量

通过Sync 将安装内容分发到其他两台虚拟机将余下的环境变量 Linux + 3个env环境变量还有4个hadoop中的site配置好,并且通过快速分发脚本分发到余下两台虚拟机

2.具体配置

修改hostname

然后将hostname通过Xsync发送过去

#环境变量设置

#JAVA_HOME

export JAVA_HOME=/opt/moudle/jdk1.8.0_144

export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME

export HADOOP_HOME=/opt/moudle/hadoop-2.7.2

exportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

xsync脚本设置

#!/bin/bash

#1 获取输入参数个数,如果没有参数,直接退出

pcount=$#

if((pcount==0));then

echono args;

exit;

fi

#2 获取文件名称

p1=$1

fname=`basename$p1`

echofname=$fname

#3 获取上级目录到绝对路径

pdir=`cd-P $(dirname $p1); pwd`

echopdir=$pdir

#4 获取当前用户名称

user=`whoami`

#5 循环

for((host=103;host<105; host++)); do

        echo ------------------- hadoop$host--------------

        rsync -rvl $pdir/$fname$user@hadoop$host:$pdir

done

  将这个脚本复制到Linux目录中的/bin目录下就可以了

     通过XFTP     将文件发送到主机中(Hadoop100) 就是Shell中的xftp 

          安装 Java 和Hadoop

          tar -zxvf /opt/software/hadoop-2.7.2.tar.gz -C/opt/moudle/

          tar -zxvf /opt/software/jdk-8u144-linux-x64.tar.gz-C /opt/moudle/

然后进入到module目录下通过Xsync脚本快速分发到其他虚拟机当中。

  开启另一个Xshell窗口并且配置环境变量/etc/profile

  然后进入到/etc/目录下通过xsync 将配置文件发送到其他虚拟机中 

  全局喊话:source /etc/profile

         然后查看Java Hadoop版本检查Java Hadoop版本是否创建成功

备注 Xsync脚本可以优化通过使用SSH 免密码登陆??待测试

基本的软件安装过程就结束了我们可以开始配置SSH 免密登陆

检查软件SSH 是否安装

rpm -qa | grep openssh

如果出现如上图所示结果说明该软件安装完成

开始配置SSH 免密登陆

ssh-keygen -t rsa

ssh-copy-id hadoop129 //输入密码之后我们要去129虚拟机当中去查看是否存在一个authorkey,如上图所示

测试之后可以无密码登陆另一台虚拟机当中

然后在2号虚拟机下同样的步骤配置来事项两个虚拟机之间的相互通信

这就实现了相互通信

修改以下三个文件

env.sh文件主要是是配置Java环境变量用的 可以在后台开一个写字本 记录一下相关路径

配置四个site文件

注意对应问题在hdfs上配置2NN别把位置对应错了

然后在不同的虚拟机当中启动不同的服务:

1。在Hadoop128机器下启动Namenode

因为是第一次启动namede 所以需要格式化

hdfs namenode -format

hadoop-daemon.sh start namenode

启动datanode (根据安装表格这样就可以启动datanode)

Hadoop128Hadoop129Hadoop130

HDFSNAMENODE

DATANODE

DATANODE

RECOUSRCEMASTER

DATANODE

SECONDARYNAMENO

YARNNODEMASTERNODEMASTERNODEMASTER

通过jps命令检查相关节点是否启动

然后开始登陆 Hadoop28:50070 进入端口

查看node节点数

群体脚本SSH配置:

这样就可以快速配置相关内容

启动Yarn

start-yarn.sh

(在启动之前要确保SSH 无密码登陆是解决状态。)当ssh免密登陆问题解决之后,可以通过配置文件来配置相关内同

整个完整集群配置完成

Hadoop128:JPS方案:

Hadoop129:jps结果

130结果

出现了一个新的问题

在129查看虚拟机的时候只有一个noedmanager启动了

继续往下测试

下一步:将一个文件上传到HDFS文件服务器中

具体命令:

在hadoop目录下上传文件的目录其实是:/user/root/你上传的文件名称

所以具体的操作方式是:hadoop jarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount/user/root/Wcinput output

然后我们进入到Hadoop128:50070 /user/root/output目录下

相关的运算结果

至此整体的一个集群就配置完了

配置历史记录

<!-- 指定MR运行在Yarn上-->

               mapreduce.framework.name

                yarn

<!-- 历史服务器端地址-->

               mapreduce.jobhistory.address

               hadoop129:10020

<!-- 历史服务器web端地址-->

               mapreduce.jobhistory.webapp.address

               hadoop129:19888

历史记录的端口是在Recourcemanager上的,这样可以更好的配置出结果

启动历史记录端口

mr-jobhistory-daemon.sh start historyserver

在配置端口机器上配置就可以出现如下结果

5874 ResourceManager

8275 DataNode

8371 SecondaryNameNode

8549 NodeManager

8796 JobHistoryServer

8829 Jps

SSH 配置

2)生成公钥和私钥:

[atguigu@hadoop102.ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(3)将公钥拷贝到要免密登录的目标机器上

[atguigu@hadoop102.ssh]$ ssh-copy-id hadoop102

[atguigu@hadoop102.ssh]$ ssh-copy-id hadoop103

[atguigu@hadoop102.ssh]$ ssh-copy-id hadoop104

bin/hdfsnamenode -format

sbin/start-dfs.sh

注意事项:

二次格式化namenode需要:

接将 /opt/module/hadoop-2.7.2 下面的 data 和logs 文件夹删除,再对namenode进行格式化即可,随后启动namenode和DataNode 系统会直接帮你创建新的文件夹,此时的clusterID一定是一致的,也能解决此问题

在Core-site文件中设定Namenode节点的位置。

在HDFS -SITE 中 配置的是Sceondary节点的配置。

在Yarn中配置Resourcemanager中的配置

进行mapreduce运算的时候产生not

exit问题不存在 : 解决办法

Input path does not exist:hdfs://hadoop131:9000/user/root/wcipnt

hdfs://hadoop131:9000/wcipnt

hadoop jarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount  /wcipnt /123

细节问题:路径的前后在后边启动是第一个个路径

名字一定要对应好,不要弄错

DEPRECATED: Use of this script to executehdfs command is deprecated.

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

在现在的hadoop版本中 HDFS 语句示例:hdfs dfs -ls /

就不会出先DEPRECATE的这个问题了

遗留下来的问题

1.在192虚拟机下只启动了一个节点打算从新做一遍集群处理看看能不能避免这个问题

如果出现Uable to load native-hadoop问题给

2.WARN util.NativeCodeLoader: Unable toload native-hadoop library for your platform... using builtin-java classeswhere applicable

涉及到Hadoop的库的操作?网上的解决的办法不一样在log日志文件中添加一段话

两个问题可能都是在安装集群过程中留下的一些微小细节问题。但是第二个问题和第一个问题并没有影像他的效果。

配置时间历史记录和日志:

配置文件Yarn-site.xml

<!-- 指定MR运行在Yarn上-->

               mapreduce.framework.name

                yarn

<!-- 历史服务器端地址-->

               mapreduce.jobhistory.address

               hadoop131:10020

<!-- 历史服务器web端地址-->

               mapreduce.jobhistory.webapp.address

               hadoop131:19888

历史节点就启动成功了。

时间同步:

为了以后方便Hbase的安装和使用进行的相关操作,这样就可以实现三个节点之间时间的同步。

上一篇下一篇

猜你喜欢

热点阅读