文章目录
- 1.事前准备
- 2.主机互联(namenode和datanode都做)
- 2.1 创建虚拟机
- 2.2 配置网络
- 2.2.1寻找空闲IP地址
- 2.2.2配置ifcfg-eno16777736
- 2.2.3 pc端ssh登录linux
- 2.3 实现相互免密登录(namenode和datanode都做)
- 2.3.1修改主机名及主机配置文件
- 2.3.1生成公钥实现免密登录
- 3.配置java jdk(namenode和datanode都做)
- 3.1winSCP上传java
- 3.2 配置全局变量
- 4.配置Hadoop(datanode和namenode分开)
- 4.1主节点配置 (namenode做)
- 4.1.1winSCP上传到software目录
- 4.1.2 修改Hadoop配置文件
- 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
- 4.1.3 打包Hadoop分发至datanode
- 4.2 分节点配置 (datanode做)
- 4.3 启动集群(namenode做)
- 5.如何检查错误
- 5.1jdk是否安装及是否为全局变量
- 5.2是否互联互通
- 5.3检查免密登录
- 5.4hadoop的配置文件
- 6.常见问题和解决方案
- 6.1 hdfs namenode -format失败
- 6.2 hdfs dfsadmin -report全为0
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(远程传输工具)
当然,小唐也帮大家全都整理出来了,大家可以直接通过网盘自行下载
链接:https://pan.baidu.com/s/1IAOofQIrLV8s4k_5K-44YA
提取码:s6ly
说明,因为这里涉及到多台计算机的共同操作,对于主节点namenode 整篇文章照做,对于datanode节点,除了Hadoop的配置,其他照做
2.主机互联(namenode和datanode都做)
2.1 创建虚拟机
我们稍等一会,然后就可以看到我们的系统了!
2.2 配置网络
在这里说一下原理,原理就是让我们的主机和所有部署的虚拟机处于同一个网段下,然后我们的主机可以去连我们的虚拟机,我们虚拟机可以去连我们的主机,我们虚拟机之间也可以相互连接。实现了这一步,我们就可以在主机通过我们的ssh软件来对虚拟机进行访问了(只要虚拟机开着,都是这一个wifi,所有电脑都可以连你的虚拟机)
2.2.1寻找空闲IP地址
在windows里面,我们连上自己的wifi,win+r然后打开咱们的cmd窗口
输入ipconfig在这里可以看到自己所有的网段配置信息
咱们去找到无线局域网适配器 WLAN
这个就是我们等会要用到的信息了,我们可以我现在是处于
192.168.2.6
这一个网段下,也就是我自己的电脑的IP地址(IP地址不可以重复,重复会引起冲突)
然后我们ping 一下
很明显,因为我现在的这台电脑在使用192.168.2.6这个ip所有他是会有回应的,但是为了让IP地址不重复,我们就要在这个网段下找没有人使用的
我的IP是192.168.2.6,那么我就找192.168.2.***(随便一个不超过255的数)
如果你的IP是172.20.43.5,那么你就找172.20.43.***(随便一个不超过255的数)
如果出现无法访问目标主机,那么恭喜你找到了,这个位置就是没有人使用的,也就是我们说的空闲ip,小唐选取了这两个来作为自己虚拟机分配的IP,这个ip我们先记住 (如果换了WiFi那么我们的ip也是会发生改变的)
192.168.2.125
192.168.2.126(这个是另外一台电脑的为了后面演示,我配置了两台虚拟机,每一个虚拟机都要分配一个IP地址)
2.2.2配置ifcfg-eno16777736
我们首先先进入这个文件夹
cd /etc/sysconfig/network-scripts
然后输入ls
就可以看到我们的这个文件了,使用vi对他进行编辑
vi ifcfg-eno16777736
注意:先按一下字母i(就是键盘上面的)进入编辑模式
上面的配置和俺一样,后面的依据每一个的IP地址不同,是要发生改变的
按键盘ESC(一般来说都在左上角)退出编译模式,然后输入
:wq
回车退出后重启,输入
service network restart
出现了,这个我们就基本配置好了,如果报错,请检查,你写得有没有和小唐一样,字母呀啥的
然后我们返回我们主机,再去ping一下我们现在配置好的192.168.2.125
我们的主机就可以访问到我们的虚拟机啦,然后我们也可以用我们的远程软件ssh直接去访问虚拟机,如果还是一样的,请我们去检查一下有没有开网络防火墙,还有就是我们的网络形式是不是桥接
2.2.3 pc端ssh登录linux
输入我们用户的密码
2.3 实现相互免密登录(namenode和datanode都做)
这一部分是为我们后续hadoop的实现打好基础,配置尤其重要,在这里要注意hostname和hosts里面的名字相同(小唐之前应为这个搞了好久)
2.3.1修改主机名及主机配置文件
修改咱们的主机名(修改完之后,不会马上显示)
vi /etc/hostname
还是一样的,先输入字母i进入编辑模式,然后改名,在输入Esc退出编辑模式,输入:wq保存
一般如果是主节点都叫做namenode,分结点就叫做datanode1,datanode2,datanode3,然后我们再将我们的ip地址和修改后的主机名写入hosts
vi /etc/host
这样之后,我们ping的时候,就可以直接使用对方的主机名啦!!!
2.3.1生成公钥实现免密登录
关闭我们的防火墙
systemctl stop firewalld.service
先回到最开始的目录
cd /
执行
ssh-keygen -t rsa
然后一直按回车
就可以看到我们现在生成的公钥和私钥了,然后我们将我们的公钥传到对方的主机上面
这里注意,我们的公钥和私钥只生产一次!!!
这里注意,我们的公钥和私钥只生产一次!!!
这里注意,我们的公钥和私钥只生产一次!!!
如果生成多次请删除所有文件,重新生成
ssh-copy-id root@datanode
ssh-copy-id root@你另外一台电脑的主机名(hosts里面的)
hosts里面我们写了几个,我们就重复操作几次
这里注意,如果你是namenode节点,那么你还需要自己可以免密登录你自己
ssh datanode
ssh XXX(你要登录的主机名)
如上图所示,我们就可以免密登录到我们的datanode节点了
如果需要退出,使用exit直接退出
exit
3.配置java jdk(namenode和datanode都做)
3.1winSCP上传java
我们输入我们ip地址和账号密码
创建software文件夹
将我们java的jdk拖入software文件里面
我们拖入后,使用
cd /software
ls
再用ls去看我们的目录下有了java的解压包
解压文件
tar -xzvf jdk-8u65-linux-x64.t.gz
修改文件夹名字
mv jdk1.8.0_65 jdk
3.2 配置全局变量
进入配置文件
vi /etc/profile
添加配置文件(为了避免hadoop配置,我们在这里就把Hadoop的配置好)
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
直接把他们加在最后面
让配置文件生效
source /etc/profile
检查是否位置完成
java -version
像这样无论在哪里都可以看到我们java的版本就欧克啦!
4.配置Hadoop(datanode和namenode分开)
4.1主节点配置 (namenode做)
4.1.1winSCP上传到software目录
进入到我们software的文件夹,然后查看,再去解压
cd /software
ls
tar -xzvf hadoop-2.7.3.tar.gz
修改下名字
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
将我们刚刚修改过的所有文件上传至这个目录
/software/hadoop/etc/hadoop
全都选择进行覆盖
4.1.3 打包Hadoop分发至datanode
进入到software目录后,对hadoop进行打包
cd /software
tar -czvf hadoop.tar.gz hadoop
将其进行分发
scp hadoop.tar.gz datanode:/software
scp hadoop.tar.gz (文件名) datanode(hosts里面的节点):/software(分发位置)
4.2 分节点配置 (datanode做)
经过namenode分发之后,我们可以在各自的datanode里面看到
我们再对其进行解压
cd /software
tar -zxvf hadoop.tar.gz hadoop
4.3 启动集群(namenode做)
格式化集群
hdfs namenode -format
启动集群
start-all.sh
jps查看状态
jps
查看集群报告
hdfs dfsadmin -report
停止集群报告
stop-all.sh
5.如何检查错误
5.1jdk是否安装及是否为全局变量
5.2是否互联互通
需要我每一台主机可以ping通我们hosts里面的主机名
Namendoe
Datanodea
Datanodeb
Datanodec
5.3检查免密登录
特别是namenode节点到namenode节点
还有namenode节点到其他的datanode节点
ssh xxx(主机名)
5.4hadoop的配置文件
我们主机名 hosts 还有slaves名字是否一致(主要对于datanode来说),我们主节点的名字有没有修改
6.常见问题和解决方案
6.1 hdfs namenode -format失败
那是我们格式化多次,我们需要对我们每一个节点生成的格式化文件进行删除,详见4.1.2.1core-site.xml需对里面那个路劲全删掉
6.2 hdfs dfsadmin -report全为0
这个的原因是因为我们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
就会出现这个错误,我们直接修改我们的主机名就可以了,全改成一样的