linux系统中安装Hadoop详解

1. 安装前准备java

Linux 系统有两种安装方式。一种是直接在裸机上安装Linux操做系统,另外一种是在安装了Windows操做系统的机器上,经过安装Linux虚拟机,在Windows系统上虚拟一个Linux 环境。对于已经安装了Linux的用户能够跳过步骤 1) ,直接从步骤 2) 开始。node


1)安装Linux虚拟机linux

首先,安装软件 VMware Workstation 。按照提示一步步完成Linux虚拟机的安装,方法与Linux操做系统的安装相似,咱们这里选择的是ubuntu-12.04.2-desktop-amd64.iso安装包。软件安装完成后,能够打开Linux虚拟机,进入虚拟机Linux环境。须要注意的是,必须安装虚拟机工具 VMware Tools。 不会安装的朋友能够参考:http://download.csdn.net/detail/cloudiance/4138471    http://download.csdn.net/detail/hrgxiguan/2713917ubuntu

经过VMware Workstation 软件的虚拟机设置选项,能够在Windows主机和Linux虚拟机之间创建共享文件夹,以下图所示:vim

虚拟机设置

添加共享文件夹以后,即可以在Linux虚拟机的/mnt/hgfs目录下看到对应的Windows主机的共享文件夹。浏览器


2)安装SSH服务器

Hadoop运行过程当中须要管理远端Hadoop守护进程,若是在安装Linux虚拟机时没有安装SSH Server,可使用下面的命令来安装:ssh

$    sudo apt-get install ssh      分布式


3)安装Java工具

咱们这里使用的是 jdk-7u25-linux-x64.gz ,软件放在共享文件夹下。咱们这里把Java安装到目录 /usr/java/jdk_1.7.0_25,使用以下命令:

$    cd /usr/java/   

$    tar -zxvf /mnt/hgfs/share/jdk-7u25-linux-x64.gz  

安装完jdk以后,须要配置jdk环境变量,具体配置请参考:http://www.linuxidc.com/Linux/2012-06/62078.htm 

注意:咱们这里的Ubuntu是64位的系统,若是你安装的32位系统,请选择32位的jdk版本,不然会安装失败。

4)解压 Hadoop 安装包

咱们这里使用的是hadoop-0.20.2.tar.gz,软件放在共享文件夹下。把Hadoop解压到Linux  usr/目录下,命令以下:

$    tar -zxvf /mnt/hgfs/share/hadoop-0.20.2.tar.gz  

5)编辑 conf/hadoop-env.sh 文件

咱们能够在 usr/hadoop-0.20.2/conf/ 目录下找到hadoop-env.sh,把JAVA_HOME设置为Java安装的根路劲,能够经过以下命令进行设置:

$    vim conf/hadoop-env.sh  

注意:编辑该文件须要安装 vim ,没有安装的能够经过命令  $    sudo apt-get install vim 来安装。


2. 三种安装模式

Hadoop 集群支持三种运行模式:单机模式、伪分布式模式和彻底分布式模式。

1)单机模式

默认状况下,Hadoop被配置成一个以非分布式模式运行的独立Java进程,适合开始时作调剂工做。


2)伪分布式模式

Hadoop能够在单节点上以伪分布式模式运行,用不一样的Java进程模拟分布式运行的各种节点(NameNode、DataNode、JobTracker、TaskTracker、Secondary NameNode)。

(1)Hadoop 配置

Hadoop-0.20.2 之前的版本的配置文件是conf/Hadoop-default.xml;而以后的版本中,该配置文件被拆分为 core-site.xml、hdfs-site.xml 和 mapred-site.xml。其中core-site.xml 和 hdfs-site.xml是站在HDFS角度上的配置文件;core-site.xml 和 mapred-site.xml 是站在MapReduce 角度上的配置文件。 配置内容以下:

core-site.xml 文档内容以下:


hdfs-site.xml 文档内容以下:



mapred-site.xml 文档内容以下:



(2)免密码SSH设置。

生成秘钥对,执行以下命令:

$    ssh-keygen -t rsa   

而后一直按<Enter> 键,就会按照默认的选项将生成的秘钥对保存在 .ssh/id_rsa文件中。

进入 .ssh 目录,执行以下命令:

$    cp id_rsa.pub authorized_keys  

此后执行 $    ssh localhost,能够实现用SSH链接而且不须要输入密码。

(3)Hadoop运行。

格式化分布式文件系统。使用以下命令进行格式化:

$    bin/hadoop namenode -format 

启动Hadoop守护进程。启动守护进程的命令以下:

$    bin/start-all.sh  

成功执行后将在本机上启动NameNode、DataNode、JobTracker、TaskTracker 和 Secondary NameNode 五个新的Java进程。

到此,你能够在你的本机浏览器上输入 "http:// (你的linux IP地址) :50030"来查看Hadoop执行任务时的状况。若是能看到,说明Hadoop安装成功了。

固然,你也能够中止Hadoop守护进程,命令以下:

$    bin/stop-all.sh  


3)彻底分布式模式

对于Hadoop,不一样的系统会有不一样的节点划分方式。在HDFS看来,节点分为Namenode 和 DataNode,其中NameNode只有一个,DataNode能够有多个;在MapReduce看来,节点又分为JobTracker 和 TaskTracker,其中JobTracker只有一个,TaskTracker能够有多个。NameNode 和 JobTracker能够部署在不一样的机器上,也能够部署在同一机器上。部署NameNode 和 / 或 JobTracker 的机器是 Master(主服务器),其他的都是Slaves (从服务器)。用户甚至能够将 NameNode、DataNode、JobTracker 和 TaskTracker 所有部署在一台机器上。详细的配置方法介绍以下。

(1)配置NameNode 和 DataNode。

配置成功的关键在于确保各机器的主机名和IP地址之间能正常解析。修改每台机器的 /etc/hosts,若是该台机器做 NameNode用,则须要在文件中添加集群中全部机器的 IP 地址及对应的主机名;若是该台机器仅做DataNode用,则只须要在文件中添加本机和 NameNode的 IP 地址及其对应的主机名。

假设把ubuntunamenode做为 NameNode,配置该节点的 /etc/hosts,以下图所示:



把ubuntudata1,ubuntudata2 做为 DataNode,分别配置他们的 /etc/hosts,以下图所示:



(2)在全部的机器上创建相同的用户 grid

这一步经过如下命令实现:

$    useradd -m grid  

$    passwd grid  

成功创建grid 用户后,输入的密码就是该用户的密码。


(3)SSH 配置

该配置主要是位了实如今机器之间执行指令时不须要输入密码。在全部机器上创建 .ssh 目录,执行:

$    mkdir  .ssh  

在ubuntunamenode 上生成秘钥对,执行:

$    ssh -keygen -t rsa  

而后一直按<Enter>键,就会按照默认的选项将生成的秘钥对保存在 .ssh/id_rsa 文件中。接着执行以下命令:

$    cd ~/.ssh  

$    cp id_rsa.pub authorezed_keys  

$    scp authorized_keys ubuntudata1:/home/grid/.ssh  

$    scp authorized_keys ubuntudata2:/home/grid/.ssh  

最后进入全部机器的 .ssh 目录,改变authorized_keys 文件的许可权限:

$    chmod 644 authorized_keys  

这时从 ubuntunamenode 向其余机器发起SSH 链接,只有在第一次登录时须要输入密码,之后则再也不须要。

(4)在全部机器上配置Hadoop。

首先在ubuntunamenode 上配置,执行以下的解压缩命令:

$    tar  -zxvf  /mnt/hgfs/share/hadoop-0.20.2.tar.gz  

(a)编辑 core-site.xml、hdfs-site.xml 和 mapred-site.xml ,配置方法请参考伪分布式模式。

(b)编辑conf/masters ,修改成Master 的主机名,每一个主机名一行,此外即为ubuntunamenode。

(c)编辑 conf/slaves,加入全部 Slaves 的主机名,即 ubuntudata1 和ubuntudata2。

(d)把 Hadoop 安装文件复制到其余机器上:

$    scp  -r  hadoop-0.20.2 ubuntudata1:/home/grid  

$    scp  -r  hadoop-0.20.2 ubuntudata2:/home/grid  

(e)编辑全部机器的 conf/hadoop-env.sh 文件,将 JAVA_HOME 变量设置为各自 Java 安装的根目录,不一样机器可使用不一样的 Java 版本。

至此,Hadoop 已经在集群上部署完毕。若是要新加入或删除节点,仅需修改 NameNode 的Master和Slaves。


(5)Hadoop 运行

格式化分布式文件系统,操做命令以下:

$    bin/hadoop namenode -format  

启动 Hadoop 守护进程。在ubuntunamenode 上启动 NameNode、JobTracker 和 Secondary NameNode,在ubuntudata1 和ubuntudata2 上启动DataNode 和 TaskTracker,而且用以下jps命令检测启动状况:

$    bin/start-all.sh  

$    /usr/java/jdk1.7.0_25/bin/jps  

用户能够根据本身的须要来执行以下命令:

(a)start-all.sh :启动全部的Hadoop 守护进程,包括 NameNode、DataNode、JobTracker 和 TaskTracker。

(b)stop-all.sh :中止全部的Hadoop 守护进程。

(c)start-mapred.sh :启动 Map/Reduce 守护进程,包括 JobTracker 和 TaskTracker。

(d)stop-mapred.sh :中止 Map/Reduce 守护进程。

(e)start-dfs.sh :启动Hadoop DFS 守护进程,包括 NameNode 和 DataNode。

(f)stop-dfs.sh :中止DFS守护进程。


修改 C:\WINDOWS\system32\drivers\etc\hosts 文件,加入三台虚拟机的 IP 地址及其对应的主机名,即:

127.0.0.1 localhost

192.168.11.100 ubuntunamenode

192.168.11.101 ubuntudata1

192.168.11.102ubuntudata2