文章目录
- [时间急的可以看速成,虚拟机和配置方法已给出,提供下载的为一台主节点一台分结点的虚拟机下载,只需进行ip地址更换即可 [现成Hadoop配置,图文手把手交你](https://blog.csdn.net/weixin_52521533/article/details/132862703?spm=1001.2014.3001.5501)](#时间急的可以看速成,虚拟机和配置方法已给出,提供下载的为一台主节点一台分结点的虚拟机下载,只需进行ip地址更换即可 现成Hadoop配置,图文手把手交你)
- 1.事前准备
- 2.主机互联(namenode和datanode都做)
-
- [2.1 创建虚拟机](#2.1 创建虚拟机)
- [2.2 配置网络](#2.2 配置网络)
-
- 2.2.1寻找空闲IP地址
- 2.2.2配置ifcfg-eno16777736
- [2.2.3 pc端ssh登录linux(xshell也可以)](#2.2.3 pc端ssh登录linux(xshell也可以))
- [2.3 实现相互免密登录(namenode和datanode都做)](#2.3 实现相互免密登录(namenode和datanode都做))
- [3.配置java jdk(namenode和datanode都做)](#3.配置java jdk(namenode和datanode都做))
-
- 3.1winSCP上传java
- [3.2 配置全局变量](#3.2 配置全局变量)
- 4.配置Hadoop(datanode和namenode分开)
-
- [4.1主节点配置 (namenode做)](#4.1主节点配置 (namenode做))
-
- 4.1.1winSCP上传到software目录
- [4.1.2 修改Hadoop配置文件](#4.1.2 修改Hadoop配置文件)
-
- [4.1.2.1 core-site.xml](#4.1.2.1 core-site.xml)
- [4.1.2.2 hadoop-env.sh](#4.1.2.2 hadoop-env.sh)
- [4.1.2.3 hdfs-site.xml](#4.1.2.3 hdfs-site.xml)
- [4.1.2.4 mapred-site.xml](#4.1.2.4 mapred-site.xml)
- [4.1.2.5 slaves](#4.1.2.5 slaves)
- 4.1.2.6yarn-site.xml
- [4.1.3 上传至Linux](#4.1.3 上传至Linux)
- [4.1.3 打包Hadoop分发至datanode](#4.1.3 打包Hadoop分发至datanode)
- [4.2 分节点配置 (datanode做)](#4.2 分节点配置 (datanode做))
- [4.3 启动集群(namenode做)](#4.3 启动集群(namenode做))
- 5.如何检查错误
- 6.常见问题和解决方案
-
- [6.1 ifcfg-eno16777736 ping不通外网,外面ping不通虚拟机](#6.1 ifcfg-eno16777736 ping不通外网,外面ping不通虚拟机)
- [6.2 hdfs namenode -format失败](#6.2 hdfs namenode -format失败)
- [6.3 hdfs dfsadmin -report全为0](#6.3 hdfs dfsadmin -report全为0)
时间急的可以看速成,虚拟机和配置方法已给出,提供下载的为一台主节点一台分结点的虚拟机下载,只需进行ip地址更换即可 现成Hadoop配置,图文手把手交你
既然你选择自己配置了,那么我想想和你聊一聊,相信我这对你整体配置Hadoop流程会有一个跟全面的了解,我们抛开繁杂的学术名词,其实就是要实现我一个任务可以在多个电脑上跑的过程(分散算力),那交给我们应该如果来搞?我们是不是要对我们的虚拟机先分配地址(对应ip地址分配),分配完地址,是不是又需要我的机器可以相互连接(对应免密登录),可以相互登录之后,我就要开始安装我们的软件了,java、Hadoop,告诉他我可以免密的主机、我结点的个数、我启动的端口号。
我们做的每一步都是为了达成我们的某个目的,有的地方你可能配置了几个星期,很崩溃,还有的甚至你才刚刚接触Linux,就要进行如此复杂的操作,但请你相信自己,我一次配也花了几个星期,但在那之后是我对于Linux的进一步掌握,以及那全班第一个配出来时候的骄傲!希望本篇文章可以给予你一些帮助,下面正式开始
1.事前准备
Hadoop,说白了就是让我们计算机的算力可以进行分散,小唐这个月的搭建是真的,啊啊啊啊啊,为了让后人避免踩坑,以及后续自己也可以回来看看,就简单的说一下自己的搭建流程。
咱们首先准备好这些软件
1. VMware
2. CentOS-7-x86_64
3. hadoop-2.7.3.tar(Hadoop的安装文件)
4. jdk-8u65-linux-x64.t.gz(hadoop是基于java的,所以要有java的jdk)
5. SSH(远程连接工具)
6. winSCP(远程传输工具)
当然,小唐也帮大家全都整理出来了,大家可以直接通过网盘自行下载
c
链接:https://pan.baidu.com/s/1-bvzJBpRVCsgslOkYP26zA?pwd=yu9a
提取码:yu9a
--来自百度网盘超级会员V4的分享
说明,因为这里涉及到多台计算机的共同操作,对于主节点namenode 整篇文章照做,对于datanode节点,除了Hadoop的配置,其他照做,如果配置主机数为多太,只需在后更改hadoop配置文件即可
2.主机互联(namenode和datanode都做)
2.1 创建虚拟机
我们稍等一会,然后就可以看到我们的系统了!
2.2 配置网络
在这里说一下原理,原理就是让我们的主机和所有部署的虚拟机处于同一个网段下,然后我们的主机可以去连我们的虚拟机,我们虚拟机可以去连我们的主机,我们虚拟机之间也可以相互连接。实现了这一步,我们就可以在主机通过我们的ssh软件来对虚拟机进行访问了(只要虚拟机开着,都是这一个wifi,所有电脑都可以连你的虚拟机)
2.2.1寻找空闲IP地址
在windows里面,我们连上自己的wifi,win+r然后打开咱们的cmd窗口
输入ipconfig 在这里可以看到自己所有的网段配置信息
咱们去找到无线局域网适配器 WLAN
这个就是我们等会要用到的信息了,我们可以我现在是处于
c
192.168.2.6
这一个网段下,也就是我自己的电脑的IP地址(IP地址不可以重复,重复会引起冲突)
然后我们ping 一下
很明显,因为我现在的这台电脑在使用192.168.2.6这个ip所有他是会有回应的,但是为了让IP地址不重复,我们就要在这个网段下找没有人使用的
cpp
我的IP是192.168.2.6,那么我就找192.168.2.***(随便一个不超过255的数)
如果你的IP是172.20.43.5,那么你就找172.20.43.***(随便一个不超过255的数)
如果出现无法访问目标主机,那么恭喜你找到了,这个位置就是没有人使用的,也就是我们说的空闲ip,小唐选取了这两个来作为自己虚拟机分配的IP,这个ip我们先记住 (如果换了WiFi那么我们的ip也是会发生改变的)
c
192.168.2.125
192.168.2.126(这个是另外一台电脑的为了后面演示,我配置了两台虚拟机,每一个虚拟机都要分配一个IP地址)
2.2.2配置ifcfg-eno16777736
我们首先先进入这个文件夹
c
cd /etc/sysconfig/network-scripts
然后输入ls
就可以看到我们的这个文件了,使用vi对他进行编辑
c
vi ifcfg-eno16777736
注意:先按一下字母i(就是键盘上面的)进入编辑模式
上面的配置和俺一样,后面的依据每一个的IP地址不同,是要发生改变的
按键盘ESC(一般来说都在左上角)退出编译模式,然后输入
cpp
:wq
回车退出后重启,输入
cpp
service network restart
出现了,这个我们就基本配置好了,如果报错,请检查,你写得有没有和小唐一样,字母呀啥的
然后我们返回我们主机,再去ping一下我们现在配置好的192.168.2.125
我们的主机就可以访问到我们的虚拟机啦,然后我们也可以用我们的远程软件ssh直接去访问虚拟机,如果还是没有成功,请我们去检查一下有没有开网络防火墙 ,我们配置文件 有没有写对,还有就是我们的网络形式是不是桥接
为了不影响阅读体验,文章末尾给出了检查方法
2.2.3 pc端ssh登录linux(xshell也可以)
输入我们用户的密码
2.3 实现相互免密登录(namenode和datanode都做)
这一部分是为我们后续hadoop的实现打好基础,配置尤其重要,在这里要注意hostname和hosts里面的名字相同(小唐之前应为这个搞了好久)
2.3.1修改主机名及主机配置文件
修改咱们的主机名(修改完之后,不会马上显示)
cpp
vi /etc/hostname
还是一样的,先输入字母i进入编辑模式,然后改名,在输入Esc退出编辑模式,输入:wq保存
一般如果是主节点都叫做namenode,分结点就叫做datanode1,datanode2,datanode3,然后我们再将我们的ip地址和修改后的主机名写入hosts
c
vi /etc/hosts
这样之后,我们ping的时候,就可以直接使用对方的主机名啦!!!
2.3.1生成公钥实现免密登录
关闭我们的防火墙
cpp
systemctl stop firewalld.service
先回到最开始的目录
cpp
cd /
执行
cpp
ssh-keygen -t rsa
然后一直按回车
就可以看到我们现在生成的公钥和私钥了,然后我们将我们的公钥传到对方的主机上面
这里注意,我们的公钥和私钥只生产一次!!!
这里注意,我们的公钥和私钥只生产一次!!!
这里注意,我们的公钥和私钥只生产一次!!!
如果生成多次请删除所有文件,重新生成
cpp
ssh-copy-id root@datanode
ssh-copy-id root@你另外一台电脑的主机名(hosts里面的)
hosts里面我们写了几个,我们就重复操作几次操作,将主节点的生产的密钥传到我们的分结点
这里注意,如果你是namenode节点,那么你还需要自己可以免密登录你自己
cpp
ssh datanode
ssh XXX(你要登录的主机名)
如上图所示,我们就可以免密登录到我们的datanode节点了
如果需要退出,使用exit直接退出
cpp
exit
3.配置java jdk(namenode和datanode都做)
3.1winSCP上传java
我们输入我们ip地址和账号密码
创建software文件夹
将我们java的jdk拖入software文件里面
我们拖入后,使用
cpp
cd /software
ls
再用ls去看我们的目录下有了java的解压包
解压文件
cpp
tar -xzvf jdk-8u65-linux-x64.t.gz
修改文件夹名字
cpp
mv jdk1.8.0_65 jdk
3.2 配置全局变量
进入配置文件
cpp
vi /etc/profile
添加配置文件(为了避免hadoop配置,我们在这里就把Hadoop的配置好)
cpp
export JAVA_HOME=/software/jdk/
export PATH=.:$PATH:$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/software/hadoop
export PATH=.:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
直接把他们加在最后面
让配置文件生效
cpp
source /etc/profile
检查是否位置完成
cpp
java -version
像这样无论在哪里都可以看到我们java的版本就欧克啦!
4.配置Hadoop(datanode和namenode分开)
4.1主节点配置 (namenode做)
4.1.1winSCP上传到software目录
进入到我们software的文件夹,然后查看,再去解压
cpp
cd /software
ls
tar -xzvf hadoop-2.7.3.tar.gz
修改下名字
cpp
mv hadoop-2.7.3 hadoop
4.1.2 修改Hadoop配置文件
在小唐的配置文件里面,有一个Hadoop配置用例,作为参考,我们也在这个基础上面进行修改,在window上面修改,然后再通过winspc上传到Linux
4.1.2.1 core-site.xml
4.1.2.2 hadoop-env.sh
4.1.2.3 hdfs-site.xml
4.1.2.4 mapred-site.xml
4.1.2.5 slaves
4.1.2.6yarn-site.xml
4.1.3 上传至Linux
将我们刚刚修改过的所有文件上传至这个目录
cpp
/software/hadoop/etc/hadoop
全都选择进行覆盖
4.1.3 打包Hadoop分发至datanode
进入到software目录后,对hadoop进行打包
cpp
cd /software
tar -czvf hadoop.tar.gz hadoop
将其进行分发
cpp
scp hadoop.tar.gz datanode:/software
scp hadoop.tar.gz (文件名) datanode(hosts里面的节点):/software(分发位置)
4.2 分节点配置 (datanode做)
经过namenode分发之后,我们可以在各自的datanode里面看到
我们再对其进行解压
cpp
cd /software
tar -zxvf hadoop.tar.gz hadoop
4.3 启动集群(namenode做)
格式化集群
cpp
hdfs namenode -format
启动集群
cpp
start-all.sh
jps查看状态
cpp
jps
查看集群报告
cpp
hdfs dfsadmin -report
停止集群报告
cpp
stop-all.sh
5.如何检查错误
5.1jdk是否安装及是否为全局变量
cpp
java -version
查看是否可以现实java的信息,如果虚拟机java没有报错,但是我们在执行Hadoop时候java报错了,别忘记了在我们**hadoop-env.sh(详见4.1.2.2)**文件处,也有个java需要配置。
cpp
/software/jdk/bin/java:没有那个文件或目录
5.2是否互联互通
需要我每一台主机可以ping通我们hosts里面的主机名
Namendoe
Datanodea
Datanodeb
Datanodec
5.3检查免密登录
特别是namenode节点到namenode节点
还有namenode节点到其他的datanode节点
cpp
ssh xxx(主机名)
5.4hadoop的配置文件
我们主机名 hosts 还有slaves名字是否一致(主要对于datanode来说),我们主节点的名字有没有修改
6.常见问题和解决方案
6.1 ifcfg-eno16777736 ping不通外网,外面ping不通虚拟机
1.在虚拟机内ping 外网
cpp
ping wwww.baidu.com
前面IP请检查是否为你修改的IP,如果没有就是你没有ifcfg-eno16777736没有配置好
2.点击你的虚拟机设置,检查网络是否为桥接(详见 2.1 创建虚拟机)
3.检查在物理机(windows上),是否存在VM网络配置问题,一般vm没删干净和配置出错会有这个问题
在桌面空白处右击,点击个性化,进入设置,搜索控制面板
点击查询网络状态和任务
检查是否为感叹号
如果有请找到,VM的安装包,在管理员模式下运行,尝试修复,修复后再次检查,如果还不行,直接删除再重新安装也是可以的(记住你装虚拟机的位置,你的虚拟机不会被删除)
6.2 hdfs namenode -format失败
cpp
那是我们格式化多次,我们需要对我们每一个节点生成的格式化文件进行删除
详见4.1.2.1 core-site.xml需对里面那个路劲全删掉
(如果里面没有重要数据,直接全都删除,重新初始化即可,如果有需要打开内置文件对版本号进行手动修改)
结点信息存储在core-site.xml文件中
cpp
1.删除两台主机"/data/hadoop"里面的内容
rm -rf /data/hadoop
2.重新格式化
hadoop namenode -format
4.启动hadoop
start-all.sh
6.3 hdfs dfsadmin -report全为0
用户名不对
cpp
这个的原因是因为我们hostname和我们datanode主机名不一致导致的,比如我现在有三台
IP 主机名
172.2.111.10 namendoe
172.2.111.11 datandoe1
172.2.111.12 datandoe2
172.2.111.13 datandoe3
然后我为了省事在hosts这样写
172.2.111.10 namendoe
172.2.111.11 dn1
172.2.111.12 dn2
172.2.111.13 dn3
然后在slaves这样写
dn1
dn2
dn3
就会出现这个错误,我们直接修改我们的主机名就可以了,全改成一样的