Linux系统下的hadoop完全分布式系统的配置

一、安装VMware

VMware的安装

二、centos的安装

最好安装centos x7的
centos的安装

三、根据hadoop伪分布式的搭建,完全分布式使用hadoop104克隆出来的hadoop101,hadoop102,hadoop103来设置集群。

(一)、同时启动hadoop101,102,103。

(二)、对主机进行改动

1.将其ip地址改动为
ip addr     # 查看IP地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33   # 修改ip地址
将其修改为:
192.168.30.101   # 对应的hadoop的名字
修改IP地址后需要重启网卡
systemctl resert network
2.对主机名进行修改
vi /etc/hostname   # 修改为对应的hadoop名称
vi /etc/hosts 
在其后面添加
192.168.30.101 hadoop101
192.168.30.102 hadoop102
192.168.30.103 hadoop103 ###方便启动集群

显示主机名称需要重启

3.连接Xshell

主机名写入IP地址,名称写为自己想弄的名称

(三)、使用Xshell

本实验着重使用hadoop101

1.时间同步

进入/opt/module/hadoop2.7.2目录下进行操作

1)检查ntp的安装
rpm -qa|grep ntp

其版本如下
在这里插入图片描述

如果没有或者不全的需要重新安装,否则不能配置文件
安装命令如下:

yum install ntp
2)修改ntp配置文件
vi /etc/ntp.conf

修改一(授权192.168.30.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间):
在这里插入图片描述
将第二行restrict前面的#符号删除,并将192.168.30.1.0改为192.168.30.0
修改二(集群在局域网中,不使用其他互联网上的时间):
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
将其前面全部添加#。
修改三(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步):
在修改二的基础上,在其下边添加:

server 127.127.1.0
fudge 127.127.1.0 stratum 10
3)修改/etc/sysconfig/ntpd文件

在其下面添加代码(使硬件时间与系统时间同步):

SYNC_HWCLOCK=yes
4)重启ntp服务
systemctl enable ntpd
systemctl disable chronyd ## 设置ntpd服务开机关闭
5)其他配置

crontab -e
编写定时任务:
在其他机器配置10分钟与时间服务器同步一次
(10分钟可能时间太长,可以自定义,不能是0)

*/10 * * * * /usr/sbin/ntpdate hadoop102
*/10 * * * * /usr/sbin/ntpdate hadoop103
6)修改机器任意时间date -s "2022-4-9"

输入date查看时间
如果想一劳永逸,就对hadoop102和hadoop103做同样的配置,只有编写定时任务需要改写

2.免密登录
1)进入.ssh目录下cd .ssh

如果报错,则需要输入ssh root@192.168.30.101

2)生成公匙和私匙ssh-keygen -t rsa

执行上述命令后,敲击回车,直到输出密匙为止(可能是三次,也可能是四次)

3)公匙的拷贝cat id_rsa.pub >>authorized_keys拷贝到authorized_keys文件中,这样实现了自身的免密登录。想测试的话输入:ssh hadoop101,再执行命令exit退出。如果不能成功需要修改authorized_keys文件的权限。
4)修改authorized_keys文件的权限
chmod 600 authorized_keys
5)使用hadoop101对hadoop102和hadoop103进行免密登录
ssh-copy-id  -i  ~/.ssh/id_rsa.pub  hadoop102
ssh-copy-id  -i  ~/.ssh/id_rsa.pub  hadoop103

执行命令后需要输入密码。
同样的配置在hadoop102和hadoop103中实行,就能实现三个主机之间的两两进行免密登录。

【注】:在进行免密登录后一定要进行退出命令。

(三)、对jdk和hadoop的安装

1.安装jdk
1)对系统自带的jdk版本进行删除

.noarch结尾的文件可以不用删除。

rpm -qa|grep java    # 查找系统自带的jdk
执行命令
rpm -e --nodeps 要删除的jdk文件

删除后可以使用命令java -version进行查询,是否删除完全

2)在网上下载的jdk压缩包使用rz工具进行上传,还是上传到/opt/source文件夹下
tar -zxvf jdkTAB键    # 对压缩包进行解压
mv jdk1.8.131/ jdk1.8    #修改名称
mv jdk1.8 ../module    # 将jdk移动到module目录下,
3)安装hadoop也同安装jdk一样
4)配置文件vi /etc/profile

在最后进行添加

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin

##HADOOP_HOME  (HADOOP后面安装用到)
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
5)修改 vi /opt/module/hadoop-2.7.2/etc/hadoop/hadoop-env.sh文件
export JAVA_HOME=${JAVA_HOME}
修改为
export JAVA_HOME=/opt/module/jdk1.8

使用命令source /etc/profile命令使配置的环境生效

6)检查hadoop是否配置成功
mkdir input
cp etc/hadoop/*.xml input
bin/hadoop  jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'

输出代码

cat output/*

输出结果为

1 dfsadmin

(四)编写集群脚本

1.编写脚本
cd /usr/local/bin
touch xsync.sh
vi xsync.sh

执行上述命令后,输入以下代码

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=102; host<104; host++)); do
        #echo $pdir/$fname $user@hadoop$host:$pdir
        echo --------------- hadoop$host ----------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
2.修改xsync权限chmod 777 xsync.sh

(五)、集群部署

配置的文件都在/opt/module/hadoop-2.7.2/etc/hadoop目录下
配置的文件都写在之间。

1.配置core-site.xml文件
vi core-site.xml
添加以下代码
<!-- 指定HDFS中NameNode的地址 -->
	<property>
		<name>fs.defaultFS</name>
        <value>hdfs://hadoop101:9000</value>
	</property>

	<!-- 指定hadoop运行时产生文件的存储目录 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.7.2/data/tmp</value>
	</property>
2.配置hadoop-env.sh文件export JAVA_HOME=/opt/module/jdk1.8
3.配置hdfs-site.xml文件
 <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>

        <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop103:50090</value>
    </property>
4.配置slaves文件

源文件中的内容删除之后,在其后面添加

hadoop101
hadoop102
hadoop103
5.配置vi yarn-env.sh文件

去掉export JAVA_HOME前面的#,修改为export JAVA_HOME=/opt/module/jdk1.8

6.配置yarn-site.xml文件

添加如下代码

<!-- reducer获取数据的方式 -->
	<property>
		 <name>yarn.nodemanager.aux-services</name>
		 <value>mapreduce_shuffle</value>
	</property>

	<!-- 指定YARN的ResourceManager的地址 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop102</value>
	</property>
7.修改vi mapred-env.sh文件

去掉前面的#符号,并修改为export JAVA_HOME=/opt/module/jdk1.8

8.修改mapred-site.xml文件

目录下没有mapred-site.xml文件,要将mapred-site.xml.template文件拷贝一份,并命名修改为mapred-site.xml文件
编辑mapred-site.xml文件,添加代码如下:

<!-- 指定mr运行在yarn上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>

至此,文件和主机配置已成功设置
现在需要对文件进行分发
退出目录至/opt/文件夹下,将module文件夹下的配置一并分发
如果已经配置好了的免密登录,可以简化:

scp -r module hadoop102:/opt   #分发文件至hadoop102
scp -r module hadoop103:/opt   #分发文件至hadoop103

如果没有配置免密登录可能会用的代码:

scp -r module root@192.168.30.102:/opt
scp -r module root@192.168.30.103:/opt

三、启动集群

1.格式化namenode

进入/opt/module/hadoop2.7.2目录下,

bin/hdfs namenode -format   # 格式化namenode
2.启动集群hadoop101和hadoop103启动命令是一样的

启动hadoop101和103

sbin/start-dfs.sh    

启动hadoop102

 sbin/start-yarn.sh

启动集群后,输入命令jps
hadoop101启动的结果是:
在这里插入图片描述
hadoop102的启动结果是
在这里插入图片描述
hadoop103启动的结果是:
在这里插入图片描述

八、在集群上测试一个jar包,单词统计功能

进入hadoop101中的/opt/module/hadoop2.7.2目录下

touch word.txt
vi word.txt

输入

小明 小张 小李 小明 
张三 王五 张三 小李

在根hadoop2.7.2目录下创建一个创建一个文件夹

bin/hdfs dfs -mkdir  /input

把word.txt文件上传到服务器中的input文件夹中

bin/hdfs dfs -put ./word.txt  /input

查看是否上传成功

bin/hdfs dfs -ls /input

在这里插入图片描述
执行统计功能

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount  /input  /output

执行命令后就在根目录下hadoop2.7.2创建了一个output文件夹,里面有两个内容。

bin/hdfs dfs -ls /output    

输出output文件夹下文件的内容

bin/hdfs dfs -cat /output/*

在这里插入图片描述
至此,已经完全配置成功了!!!
非常感谢您的观看!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值