前言:说真的我是真不喜欢搭建Hadoop,什么奇葩问题都有。最近有个课程需要做这个实验,无奈自己的mac空间不够我折腾,特意租了三个服务器来做这个实验。我其实也是差不多照着网上的教程来的,但他们说的都不是很细,遇到的问题也很多。下面这篇博客记录了我在三台服务器上搭建Hadoop完全分布式的记录。本地的搭建也适用,并不要求是云服务器。
OK进入正题。我的结构是用阿里云(Centos7.5)作为master,腾讯云(Centos6.3)作为两个slave。博客分成三个部分:
一、环境设置:
在安装好Linux系统的基础上,在master节点上先做以下准备工作:(云服务器自带操作系统)
1.安装jdk1.8:
正常安装就好,不需要配置Java环境变量的位置。可以通过java -version命令来查看是否安装成功。
2.关闭防火墙:其实centos的防火墙默认是关闭了,但是为了防止这个问题的影响,还是要关闭一下:
没有任何输出则证明执行成功。
3.修改hosts文件:(root模式)
这一步非常关键!一定不能填错IP地址。(如果是本地的话则没有这个限制)云服务器一般会有公网和内网两个IP。首先在master上hosts文件需要填入的是:master内网ip(我这里是阿里云服务器,因此填入阿里云的内网ip),然后填入两个slave的外网IP。然后再修改两个slave的hosts文件,内容填入三台服务器的外网IP即可。
打个码。。毕竟是我自己的服务器。
4.创建Hadoop用户:
后面Hadoop环境的配置都要在这个用户下面了。
adduser hadoop --> passward hadoop 然后输入密码。
之后切换到Hadoop用户:su hadoop。
到此准备工作完成!
二、设置master和slave之间免密登录
这是搭建Hadoop最恶心的部分了,很多奇怪的问题都是从这产生的。废话不多话进入正题。
1.创建公匙:
输入ssh-******指令,按回车是默认存储位置。然后cd ~/.ssh进入目录查看是否创建了id_rsa id_rsa_pub以及authorized_keys等文件夹。
如果没有!!或者找不到.ssh目录的!!!自己手动创建!然后再执行ssh-******指令!存储位置选择自己创建的.ssh!!
一般执行下来都会有authorized_keys文件夹!但我们要删掉它!删掉它!!!我们自己手动创建!!因为这要不会受一些奇奇怪怪的权限影响!!当前位置确保是:.ssh目录上一级,输入指令:touch .ssh/authorized_keys。
2.更改权限:
紧接着回到.ssh目录上一级,输入:chmod 700 .ssh 然后再输入chmod 600 .ssh/authorized_keys。
3.添加id_rsa_pub到authorized_keys文件
如果不像我那样做,就会出现找不到authorized_keys这个文件夹或目录,哪怕root模式也不行。这个坑算是我踩的最深的了!一直报错没有这个文件夹,从stackflow上面看了才知道,自己手动创建比较好。
输入指令:cat .ssh/id_rsa_pub >> .ssh/authorized_keys。确保自己是在.ssh目录上一级。
4.重启ssh服务:如果Hadoop用户没有权限就切换到root去重启:指令如下:service sshd restart
5.测试本地是否免密登录:ssh localhost 不贴图了。。没了。。成功的标志是不需要密码直接连接,可能会弹经过信息,输入yes就好。
上面说的是master节点的设置,slave节点也重复上面的操作就行了!
6.添加slave节点的公匙到master的authorized_keys:
scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/ slave01上:scp .ssh/id_rsa.pub [email protected]:/home/hadoop/id_rsa_01.pub slave02上:scp .ssh/id_rsa.pub [email protected]:/home/hadoop/id_rsa_02.pub
本地搭建也是一样的,就相当于你的服务器在本地。
完成上面的步骤应该就会在master的/home/hadoop路径找到上面的两个公匙
然后我们将这两个文件添加到master的authorized_keys文件:
cat id_rsa_01.pub >> .ssh/authorized_keys cat id_rsa_02.pub >> .ssh/authorized_keys
然后重启ssh服务,这要刚刚的设置才能生效。
7.测试slave节点是否能免密登录master:
我从腾讯云的服务器登录阿里云服务器并没有提示输入密码,而是直接登录,可见免密登录访问成功。
8.配置master免密登录slave
既然slave可以免密登录master,那么自然master也要免密登录slave。步骤和上面一样(1-7),也是将master的id_rsa_pub添加到两台slave的authorized_keys文件夹。指令和上面的一样的。添加完以后务必记得重启ssh服务,如果没有权限就切换root。讲道理严格按照我的步骤来是不会出错的。
这是master成功免密登录访问slave节点。
三、安装hadoop并配置:
以前博客给的其实都不太能用了,那些安装包的地址都失效了,如果你有可视化的操作界面,直接到hadoop官网下载然后解压,安装包大小在300MB左右。如果是服务器这边只有大黑框,可以通过wget指令来实现安装:这里贴一个还能用的下载源:http : //archive.apache.org/dist/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
这速度要下载到猴年马月。。
下面的配置就是通用的了,自己到网上看别人的博客吧。。我懒。。最难搞的部分搞通了就行了。
有时间我会更新后续的。