最近学习了hadoop很多理论,今天终于将集群环境配置好,中间遇到了许多坑,尤其ssh免密那里,自己也参考了很多文章,希望写这篇文章记录一下这一段历程,同时也希望帮助到需要的人。
主要的参考文章:
http://m.blog.csdn.net/shubingzhuoxue/article/details/49718095
http://m.blog.csdn.net/xiaoxiangzi222/article/details/52757168
虚拟机:VMware Workstation12
系统: Ubuntu 12.04
节点: 192.168.198.3 master
192.168.198.4 slaver1
192.168.198.5 slaver2
jdk-8u65-linux-x64.tar.gz
java version 1.8.0_65
hadoop version 2.6.5
二、安装步骤
1、安装虚拟机系统,并进行准备工作
2、修改各个虚拟机的hostname和host
3、创建用户组和用户
4、配置虚拟机网络,使虚拟机系统之间以及和host主机之间可以相互ping通
5、安装jdk和配置环境变量,检查是否配置成功
6、配置ssh,实现节点间的无密码登录,成功通过指令ssh slaver1、ssh slaver2免密登录到slaver1、slaver2
7、master配置hadoop,并将hadoop文件传输到node节点
8、配置环境变量,并启动hadoop,检查安装是否成功
三、安装虚拟机
在Windows10系统上安装VMware Workstation12软件,并安装下载好的Ubuntu 12.04系统,各虚拟机的配置均为1G运行内存,20G存储内存,一个一个安装,一共三台虚拟机,分别叫master、slaver1、slaver2。安装完成后启动虚拟机。具体虚拟机安装步骤可自行百度,虚拟机安装完成后的示意图如下:
四、修改虚拟机的hostname和hosts文件
以master上的机器为例,打开终端,执行如下操作,把hostname修改成master,hosts中,将各虚拟机的ip写入,如下图所示:
修改hostname的指令:
修改hosts的指令:
同样地,在slaver1和slaver2上做相似的操作,分别更改主机名为slaver1和slaver2,然后修改hosts文件同master的一样。
五、创建用户和用户组(三台机器上都要操作)
1、创建hadoop用户组
2、创建hadoop用户
3、给hadoop用户添加权限,打开/etc/sudoers文件
给hadoop用户赋予root用户同样的权限,如图:
此时,最重要的一步,输入命令su hadoop,进入刚刚创建的hadoop用户组
输入刚刚自己设定的密码,之后点击回车
发现@前已变为hadoop用户组。
六、检验各个主机之间能否ping通
分别以刚刚创建的hadoop用户重新登录系统,之后的操作都是以hadoop用户登录。采用命令 ping 主机名,检查能否与其他主机连通。
若如上图所示,则显示ping通,如果各个节点都能同其他节点ping通,则继续后面的操作。
七、安装jdk和配置环境变量
分别在各主机上安装jdk,并配置环境变量,需进行如下几步:
1、 下载jdk安装包
(1) 可以在自己的window系统中下完然后拖入到虚拟机当中
(2) 在Linux系统中输入命令java 后,按相关提示进行操作
本文采用的是第一种方式。
2、 通过cd命令进入到安装包的当前目录,利用如下命令进行解压缩。
tar –zvxf jdk-8u65-linux-x64.tar.gz(文章开头提到的)
3、 利用如下命令将解压后的文件夹移到/usr目录下
mv jdk jdk-8u65-linux-x64.tar.gz /usr/java
4、 配置环境变量
在末尾加上四行:
输入source /etc/profile使环境变量生效。
5、 查看配置是否成功
若出现以上信息,则说明Java配置成功。
八、配置ssh,实现节点间的无密码登录
自己在这一步耽误好长时间,参考了许多帖子,试了好几种方法,最终配置成功。步骤如下:
1、 安装ssh
首先确定自己的虚拟机是否安装了ssh,因为Ubuntu12.04自带ssh,所以我们输入如下命令进行查看:
会显示sshd以及ssh-agent,则说明已有ssh;若没有,则输入
sudo apt-get install openssh-server
进行ssh的安装。
2、 确定ssh是否成功安装
输入命令 ssh localhost
出现以上信息,则说明安装成功。此时若想退出登录,则输入命令 exit退出当前远程登录。
3、 生成密钥对
输入命令 ssh –keygen –t rsa
输入之后,一直按回车,发现生成的密钥位于~/.ssh文件夹下。
4、 在master上,导入authorized_keys 输入以下命令:
这样就可以实现无密码ssh自登陆,如下图所示:
之后exit退出登录。
为了实现master与slaver之间互相都能免密ssh登录,需要把id_dsa.pub发送到每一个主机的authorized_keys中,先通过scp命令将id_dsa.pub发送过去。此处,推荐进入slaver1和slaver2,把他们的id_dsa.pub发送到master上,然后再添加到master的authorized_keys中,再把master中的authorized_keys传到slaver1和slaver2中即可。其命令如下:
然后输入:
当把slaver1和slaver2的公钥都传给master后,再输入:
此时,在master下输入ssh slaver1,发现可以不需要输入密码就登录到slaver1上,证明配置完成。
九、master配置hadoop,然后将master的hadoop文件传送给slaver节点
1、解包移动
输入命令: tar –zvxf hadoop-2.6.5.tar.gz 解压hadoop包
mv hadoop-2.6.5 /home/hadoop 将安装包移到/home目录下
2、新建文件夹
在 /home/hadoop 目录下新建如下目录
mkdir /dfs
mkdir /dfs/name
mkdir /dfs/data
mkdir /tmp
建好后,ls得到如图文件目录结构:
3、配置文件hadoop-env.sh()
注意:接下来的几步,我们要修改的配置文件都在如图所示的目录下。
首先输入命令
修改JAVA_HOME值
5、 配置文件:slaves
首先输入命令:
修改内容为:
6、 配置文件:core-site.xml
注:此处千万记住fs.defaultFS 以及 hadoop.tmp.dir 的内容,否则以后运行时很容易报错。
7、 配置文件:hdfs-site.xml
8.配置文件:mapred-site.xml
因为所显示的配置文件列表中无此文件(不要参考之前的那个图,那个是已经创建好的),因此要先创建该文件,再编辑:
输入命令: cp etc/hadoop/mapred-site.xml.templete etc/hadoop/mapred-site.xml
再输入命令:sudo gedit etc/hadoop/mapred-site.xml
10.将hadoop传输到slaver1和slaver2 /home/hadoop目录
输入命令:scp –r /usr/hadoop hadoop@slaver1:/home/hadoop
scp –r /usr/hadoop hadoop@slaver2:/home/hadoop
十、配置环境变量,并启动hadoop,检查安装是否成功
1、配置环境变量
输入命令 sudo gedit /etc/profile
在文件末尾添加如下命令:
执行 source /etc/profile 使文件生效。
这里要注意的是:进行完该步骤后,输入ll,查看一下之前所创建的tmp,dfs的所属权限,可看到如下界面:
发现tmp和dfs都属于我们所创建的hadoop组。若不属于,通过chmod或者chgrp命令进行修改,具体写法可自行百度。
2、上述配置完成后,将配置好的文件发送给slaver1和slaver2,当然,也可以分别在slaver1和slaver2上配置,但是操作过程一样,浪费了不必要的时间。此处,我们通过命令: sudo scp –r /home/hadoop/hadoop hadoop@slaver1:~/
将整个hadoop复制过去。
3、启动hadoop
(1)格式化namenode: hdfs namenode –format
(2)启动hdfs,该命令以及hadoop中的一些其他命令都位于sbin下,如下图所示:
输入命令:
进入任意一个slaver节点,此处进入slaver1,输入jps,查看运行的进程:
说明一切都正常启动。
(3)启动yarn
在master节点上输入:
发现ResourceManager正常启动。
进入slaver1,输入jps,查看运行的进程:
发现NodeManager也正常启动。
至此,hadoop集群已全部配置完成!!!