linux系统中安装Hadoop详解

来源:互联网 发布:淘宝hd屡次停止运行 编辑:程序博客网 时间:2024/05/17 08:55

1. 安装前准备

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


1)安装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/2713917

通过VMware Workstation 软件的虚拟机设置选项,可以在Windows主机和Linux虚拟机之间建立共享文件夹,如下图所示:

虚拟机设置

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


2)安装SSH

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

$    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.100ubuntunamenode

192.168.11.101ubuntudata1

192.168.11.102ubuntudata2  

原创粉丝点击