Ubuntu12.04+Hadoop2.6.5实现全分布式集群搭建

来源:互联网 发布:大数据平台发展趋势 编辑:程序博客网 时间:2024/05/20 05:24

最近学习了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


 9.配置文件:yarn-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下,如下图所示:
 
输入命令: 

 


此时输入jps,查看master上面运行的进程:
 
进入任意一个slaver节点,此处进入slaver1,输入jps,查看运行的进程:
 
说明一切都正常启动。
(3)启动yarn
 在master节点上输入: 

 


此时输入jps,查看master上面运行的进程:
 
发现ResourceManager正常启动。
进入slaver1,输入jps,查看运行的进程:
 
发现NodeManager也正常启动。
至此,hadoop集群已全部配置完成!!!