Hadoop平台搭建有三种模式,分别是单机模式、伪分布模式、完全分布模式。单机模式是在单一计算机或者服务器上运行Hadoop,没有分布式的文件上传和任务分配等功能。它执行的流程仍然是Map/Reduce,但是是文件和程序都在本机上,可以看成只有一个节点的Hadoop平台。伪分布模式也是单一计算机或者服务器,但是它在单一节点上用不同的Java进程模拟出来NameNode、DataNode、JobTracke、TaskTracker等节点。实际工作时,它会把不同的节点,每个模拟出来的节点执行时和在完全分布式情况下真实的节点执行是相同的。完全分布式的Hadoop平台建立在多个计算机或者服务器上,每个节点有着固定的角色,各司其职。这种模式的优势就是能够真正的体现出分布式计算的快速和便捷。
本实验平台由三台服务器构成,包括一台NameNode节点,两个DataNode节点。服务器安装的是Ubuntu14.04系统。整个实验室的所有电脑和Hadoop平台配置在在一个局域网下,每台电脑都可以通过远程登录来登录三个服务器中的任意一个来查看该节点的信息,也可以在自己的电脑上通过eclipse插件直接上传任务到Hadoop平台上。所有的设备都通过交换机连接。搭建Hadoop平台主要有以下几步:
一、设置相关参数及Hadoop安装
1.1设置静态IP
如果不进行静态IP地设定,每次运行Hadoop环境时,Hadoop会自动分配IP,并不影响使用。但为了方便查看各个节点信息和状态,将它们设定为静态IP。本Hadoop平台一共有三个服务器,对这三个服务器的静态IP设定方法相同。三个服务器中有一个NameNode和两个DataNode。它们的静态IP设定如下:
hadoop-namenode 192.168.1.110
hadoop-datanode1 192.168.1.111
hadoop-datanode2 192.168.1.112
下面以hadoop-namenode这个节点服务器为例,对静态IP设置进行描述。
首先,在终端中输入命令sudo gedit /etc/network/interfaces
打开interfaces文件后,根据下图进行更改。点击保存,保存修改。eth3表示是这个网卡连接网线接入到Hadoop集群中,用户根据自己的接入网卡选择eth。
然后修改DNS解析,在终端输入命令sudo gedit /etc/resolv.conf
打开resolv.conf,根据下图进行修改。点击保存。这里的DNS域名为中国天津移动提供的DNS服务器。一共设置两个DNS,后一个为备用。
用户可以根据自己的实际DNS进行配置。
最后,在终端输入命令:sudo /etc/init.d/network restart重启网卡。
在datanode1和datanode2中也需要进行静态IP设置,方法同上。只是IP不同。
1.2安装ssh
ssh是建立在应用层和传输层基础上的安全协议,它的目的是为远程通信和远程登录建立安全可靠的传输协议。使用ssh可以对传输文件进行加密,并且对传输的文件进行压缩,增加传输速度。Hadoop集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,Hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果Hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点。
启动Hadoop后,NameNode采用ssh来启动或者停止各个DataNode,所以需要在每个服务器上都安装ssh,并将节点之间执行指令的时候设定为不需要输入密码的形式。配置ssh使用无密码公钥认证模式,让NameNode和DataNode之间可以无密码进行登录。
首先在终端中输入sudo apt-get install openssh-server ,然后输入Y完成安装。
安装之后,输入sudo /etc/init.d/ssh start启动服务 ,可以输入ps -e | grep ssh来查看服务器是否启动无误,如下图所示:
由于需要多个服务器之间进行通信,所以需要设置免密码登录,在终端中输入ssh-keygen -t rsa -P ""
然后会在/home/hadoop/.ssh下生成id_rsa私钥文件和id_rsa.pub公钥文件。
输入命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys将公钥添加到authorized_keys中,登录ssh。显示如下:
在其他两台DataNode服务器上按照相同的步骤进行配置。最终实现服务器之间的无密码访问。
1.3给Hadoop用户添加权限
本Hadoop集群中,每个电脑的用户名都为Hadoop。给Hadoop用户添加权限是为了让其具有访问其他文件的权力。
在终端输入:sudo gedit /etc/sudoers
打开sudoers后,在其中添加:hadoop ALL=(ALL:ALL) ALL
如图所示:
1.4安装Java环境
本服务器安装的是jdk1.7.0,JDK(Java Development Kit)是java语言的软件开发工具包。安装JDK后,可以使用eclipse对Hadoop进行编程。
在终端输入sudo apt-get install openjdk-7-jdk
然后输入Y,完成安装。
1.5安装Hadoop
本集群安装的是hadoop2.5.2,在官网可以直接下载。
在终端输入
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.5.2/hadoop -2.5.2.tar.gz
下载hadoop2.5.2版本。
下载完成后输入tar zxvf hadoop-2.5.2.tar.gz进行解压,解压完成后需要对Hadoop的文件进行配置。
二、配置Hadoop相关文件
2.1配置 .bashrc文件
.bashrc文件主要用于保存用户的个人设置,如命令别名,路径等信息。跟windows系统下的环境变量的作用类似。在这个文件里,我们添加java的JDK路径和Hadoop的各种路径。
在配置.bashrc之前,先通过输入update-alternatives - -config java查看java的安装路径为:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java,在后面的配置中,只取前面:/usr/lib/jvm/java-7-openjdk-amd64部分。
在终端中输入sudo gedit ~/.bashrc 配置java路径和Hadoop安装路径。
打开之后,在文件最后添加下图中所示的路径。
然后点击保存,再在终端中执行source ~/.bashrc使其生效。
在 Ubuntu中搭建Hadoop2.5.2完全分布式系统(二)中,将会继续进行阐述