在虚拟机CentOs7中配置hadoop3.1.2完全分布式

准备工作

准备虚拟计算机软件-----VMware Workstation Pro

安装准备好的CentOs7镜像文件,选择安装带图形界面的版本,并配置好网络,保证能ping通www.baidu.com.
在这里插入图片描述

配置环境

安装vim

yum install vim

安装jdk

#先列出可以安装的jdk1.8版本
yum list java-1.8*

#选择版本安装jdk:注意:这里要选择devel版本,这个java-1.8.0-openjdk.x86_64版本有问题,会导致jps命令找不到
yum install java-1.8.0-openjdk-devel.x86_64 
#连续几次输入y表示接受就可以安装完成,可以测试是否成功
 java -version

然后配置jdk环境

vim /etc/profile
#在最下面加入以下代码

#set java environment

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-3.b14.el6_9.x86_64
#这里的路径根据自己的不同版本进行修改

CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME CLASS_PATH PATH

克隆计算机

1.将要克隆的虚拟机关机,右键点击要克隆的虚拟机:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
克隆后的机器,与被克隆的机器,配置是一样的,但是ip是不同的。

#查看ip
ip addr

我的三台机器分别为:
master 192.168.140.130
slave1 192.168.140.129
slave2 192.168.140.131

配置静态Ip,否则ip可能会变动

vim /etc/sysconfig/network-scripts/ifcfg-ens33 

将BOOTPROTO=dhcp改为BOOTPROTO=static

(启动类型,dhcp表示动态IP,static表示静态IP)

并在最下面加入以下内容

IPADDR=192.168.140.130 //这里是用ip addr得到的Ip

NETMASK=255.255.255.0

GATEWAY=192.168.183.2

DNS1=119.29.29.29

修改主机名

[root@localhost ~]# hostname                               #查看当前的 hostnmae

localhost

[root@localhost ~]# hostnamectl  set-hostname  master      #永久修改	hostname(立即生效)

[root@localhost ~]# hostname                                   # 检查修改

master

将主机名称改为master
将克隆的两个机器名称改为slave1和slave2

配置root用户ssh免密登录

1.1.master机,进入root模式,输入以下命令,然后3次快车键

ssh-keygen -t rsa

在这里插入图片描述
如上图所示,就表示生成了一个密码

2.将生成的密码拷贝到authorized_keys
并将其权限修改为0600

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

3.分别在slave1和slave2机创建目录

#root登录后
mkdir .ssh

4.复制公钥到slave1机(此处root@192.168.1.101 ,root是slave1的登录用户名,192.168.1.101是这台机子的Ip)

scp .ssh/authorized_keys root@192.168.140.129:~/.ssh/authorized_keys

然后输入slave1机子的密码,就大功告成了。

分别将公钥复制给三台机器,将主机和两个克隆机的ip都发送一份,再到两个克隆机上执行上面操作,都执行完毕后,再重新将下面的拷贝和权限再次运行一遍.

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

成功后可以实现三台机器互相免密登录,可以测试一下:

ssh 192.168.140.129

出现如图,则表示成功了
在这里插入图片描述

配置hadoop

配置hadoop,我选择的是hadoop3.1.2
1.下载hadoop,下载地址https://hadoop.apache.org/releases.html
2.上传到master主机,我上传到root/目录下
3…host配置,让可以通过主机名称来访问。

vim /etc/hosts
#修改完后 立即生效(如果出现command not found 忽略)

如图所示:我将hosts修改为如下:增加的2台机器,192.168.140.130 作为master主机,192.168.140.129作为slave1机器,192.168.140.131作为slave2机器.
在这里插入图片描述
4.复制这个配置到slave1,slave2机器

scp -r  /etc/hosts root@192.168.140.129:/etc/hosts/
scp -r  /etc/hosts root@192.168.140.131:/etc/hosts/

5.解压hadoop并配置

cd /root
tar -xvf hadoop-3.1.2
#生成软链接
ln -sf hadoop-3.1.2 hadooop
#配置环境
vim /etc/profile

在这里插入图片描述
还有一个地方要配置:

vim /root/hadooop/etc/hadoop/hadoop-env.sh

结尾处如图,加:export JAVA_HOME=/usr/lib/jvm/java地址
在这里插入图片描述
6.hadoop配置文件
先创建文件目录

mkdir /data/hdfs/tmp
mkdir /data/hdfs/var
mkdir /data/hdfs/logs
mkdir /data/hdfs/dfs
mkdir /data/hdfs/data
mkdir /data/hdfs/name
mkdir /data/hdfs/checkpoint
mkdir /data/hdfs/edits

cd /root/data/hadoop-3.1.2/etc/hadoop
依次修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml以及workers文件。

a.core-site.xml

<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data/hdfs/tmp</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>

b.hdfs-site.xml

<property>
<name>dfs.replication</name>
<value>2</value>
</property>

<property>
  <name>dfs.namenode.name.dir</name>
  <value>file:/data/hdfs/name</value>
</property>

<property>
  <name>dfs.datanode.data.dir</name>
  <value>file:/data/hdfs/data</value>
</property>

<property>
 <name>dfs.namenode.secondary.http-address</name>
  <value>master:50090</value>
</property>

<property>
 <name>dfs.namenode.http-address</name>
  <value>master:50070</value>
<description>
The address and the base port where the dfs namenode web ui will listen on.
If the port is 0 then the server will start on a free port.
 </description>
</property> 

<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/data/hdfs/checkpoint</value>
</property>

<property>
 <name>dfs.namenode.checkpoint.edits.dir</name>
 <value>/data/hdfs/edits</value>
</property>

c.mapred-site.xml

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tarcker</name>
  <value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>

d.yarn-site.xml

<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandle</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tarcker.address</name>
<value>master:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8040</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>

e.workers
在这里插入图片描述
分别在master,slave1和slave2上的workers中配置另外两台机器如图.

7.把master上配置好的hadoop复制到slave1机器 (每台机器上都要配置hadoop哦)

scp -r /root/hadoop-3.1.2 root@slave1:/root/
#还有环境变量
scp -r /etc/profile  root@slave1:etc/profile/

8.关掉防火墙

由于hadoop中的程序都是网络服务,需要监听端口,这些端口默认会被linux防火墙挡住。因此要把hadoop中的端口一个个打开,或者把防火墙关掉。由于都是内网,所以关掉就好了。

sudo firewall-cmd –state 查看防火墙状态 如果是running表示是开启的
sudo systemctl stop firewalld.service 关闭防火墙 再查看应该是not running 就是 已经关闭了。但在下一次开机时还会自启动,因此 sudo systemctl disable firewalld.service 禁止开机时防火墙自启。

9.启动hadoop

#先格式化(每台机器都做)
hdfs namenode –format

#如果环境变量没有配置好,则
cd /root/hadoop/sbin/
./start-all.sh

我的机子出现了错误:
在这里插入图片描述
分别编辑开始和关闭脚本
vim sbin/start-dfs.sh
vim sbin/stop-dfs.sh
在顶部空白处添加内容:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

还有一个hdfs的错误,同理修改
vim sbin/start-yarn.sh
vim sbin/stop-yarn.sh

这里编辑好了之后,也要拷贝到slave1机器

cd  /root/hadoop/sbin/
scp -r start-dfs.sh root@slave1:/root/hadoop/sbin/
scp -r stop-dfs.sh root@slave1:/root/hadoop/sbin/
scp -r start-yarn.sh root@slave1:/root/hadoop/sbin/
scp -r stop-yarn.sh root@slave1:/root/hadoop/sbin/

#重新启动
./stop-all.sh
./start-all.sh
jps

master:

在这里插入图片描述
slave1和slave2:
在这里插入图片描述
如此就大功告成了。

测试:http://192.168.140.130:50070

在这里插入图片描述
附:hdfs的常用命令
在这里插入图片描述

注意:我之前在网上看到hdfs-site.xml的配置,里面有这样的配置:file:/data/hdfs/data,结果发现namenode一直启动不了

后面去查看日志:

cd /root/hadoop/logs
tail -f 100 hadoop-root-namenode-master.log

在这里插入图片描述
namenode格式化不成功。

修改后:/data/hdfs/data

重新格式化:hdfs namenode –format

重启就可以了

本文参考:https://www.cnblogs.com/zkj1204/p/11133498.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值