Hadoop集群配置

来源:互联网 发布:网络机顶盒怎么调试 编辑:程序博客网 时间:2024/05/19 04:05

1 环境

本文所述的配置步骤均是在Virtualbox虚拟机下完成,真实机器上的配置情况应该大体相同,但未经测试。

本环境一共虚拟三台机器,其中一台运行Namenode和Jobtracker,其余两台运行Datanode。在实际运行中,Jobtracker也许会放在单独的机器上,Datanode可能不止两个,但就实际配置方式而言,跟本文所述方法没有什么区别。

虚拟机:VirtualBox4.1.2

操作系统:Ubuntu10.10 Desktop

NamenodeJobtracker:用户名nn,主机名nn-namenode

Datanode1:用户名nn,主机名nn-datanode1

Datanode2:用户名nn,主机名nn-datanode2

Hadoop版本:0.20

Cloudera版本:cdh3

2 Namenode配置


2.1 操作系统安装

在虚拟机中安装Ubuntu10.10Desktop版本的操作系统,用Desktop的原因是方便操作,在Server版本的操作系统上,步骤完全一样。内存分配为1G。需要安装的软件是JDK,本文中使用的是OpenJDK1.6版,其余JDK版本也可以按照同样的方式配置。安装方法如下:

sudo apt-get install default-jdk

安装完成后,环境变量会自动配置完成。

2.2 Hadoop安装

我们使用Cloudera来进行Hadoop安装。
首先我们配置Ubuntu的源环境,用以下命令打开编辑器对源配置文件进行编辑:

sudo gedit /etc/apt/sources.list

加入以下两行:

deb http://archive.cloudera.com/debian <RELEASE>-cdh3 contribdeb-src http://archive.cloudera.com/debian <RELEASE>-cdh3 contrib

其中cdh的具体最新版本由Cloudera官网发布为准,本文当前最新版本为第三版。<RELEASE>指的是你的Ubuntu系统的版本代号,10.10版本请填入maverick,即maverick-cdh3,其他Ubuntu版本代号详见Ubuntu官网。

在访问Cloudera软件仓库的时候,需要GPG证书,所以我们需要首先安装curl,然后配置GPG:

sudo apt-get install curlcurl -s http://archive.cloudera.com/debian/archive.key | sudo apt-key add - 

源配置完成后需要进行更新,命令为:

sudo apt-get update

更新完成后,开始安装Hadoop,命令为:

sudo apt-get install hadoop-0.20

在安装过程中需要注意的是,操作系统中最好不要有hadoop、namenode等与Hadoop专有名词相关的用户名,否则会安装失败。所以本文用户名设置为nn。

在安装完成后,接下来,根据该电脑所完成的功能,来安装相应的组件:

sudo apt-get install hadoop-0.20-<daemon type>

<daemontype>有如下选项:

namenode

datanode

secondarynamenode

jobtracker

tasktracker

事实上,在Hadoop集群中,一个结点扮演什么角色是由配置文件决定,而与安装什么样的组件无关,所以,为了避免重复配置,我们对每台服务器都安装所有的组件。

2.3 配置SSH

Hadoop的结点之间访问需要使用SSH,为了避免在Hadoop调用SSH的时候输入密码,我们需要为结点配置无密码公钥认证方式。首先,我们安装SSH:

sudo apt-get install ssh

接下来,我们设置无密码公钥认证方式:

ssh-keygen -t rsa

在配置过程中,遇到提问,不输入任何内容直接回车,直到配置完成。所生成的证书保存在~/.ssh/目录中。接下来我们使之生效:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keysssh-add id_rsa

我们可以测试一下,输入以下命令:

ssh localhost

若无需输入密码即登录计算机,则证明配置成功。

2.4 修改配置文件

首先需要配置的文件是hadoop-env.sh,在该文件中配置JAVA_HOME:

sudo gedit /etc/hadoop-0.20/conf.empty/hadoop-env.sh

打开hadoop-env.sh后,取消有关JAVA_HOME的注释,然后进行如下配置:

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

Java的具体路径,由用户自己安装JDK时所配置的路径为准。

接下来打开core-site.xml文件:

sudo gedit /etc/hadoop-0.20/conf.empty/core-site.xml 

将该文件修改如下:

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>  <property>    <name>fs.default.name</name>      <value>hdfs://nn-namenode:8020</value>  </property></configuration>

HadoopNamenode默认端口号就是8020,这里所设置的<value>就是Namenode的具体位置所在,设置的格式为:hdfs://Namenode的主机名:端口号。

再打开hdfs-site.xml文件:

sudo gedit /etc/hadoop-0.20/conf.empty/hdfs-site.xml 

将该文件修改如下:

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>  <property>    <name>dfs.replication</name>    <value>2</value>  </property></configuration>

这里的<value>是指文件在HDFS中所要保存的份数,该份数不能超过Datanode的数量,否则会报错,因为我们这里只有两个Datanode,所以我们可以设置为2。

需要注意的是,该配置文件中有许多参数可以配置,但是我们这里只是为了尽快将Hadoop运行,所以只配置了最简单的参数,具体配置方法可以参见相应的Hadoop技术文档。

最后打开mapred-site.xml文件:

sudo gedit /etc/hadoop-0.20/conf.empty/mapred-site.xml 

将该文件修改如下:

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>  <property>    <name>mapred.job.tracker</name>    <value>nn-namenode:8021</value>  </property></configuration>

这里所设置的是Jobtracker的地址,Jobtracker的默认端口号是8021,设置的格式为:Jobtracker的主机名:端口号。

2.5 设置权限

Hadoop在运行时需要对/usr/lib/hadoop-0.20/logs/和/usr/lib/hadoop-0.20/pids/这两个文件夹进行访问,所以我们需要设置这两个文件夹的权限为777:

sudo chmod -R 777 /usr/lib/hadoop-0.20/logs/sudo chmod -R 777 /usr/lib/hadoop-0.20/pids/

2.6 设置主从结点

打开主结点配置文件:

sudo gedit /etc/hadoop-0.20/conf.empty/masters

修改为:

nn-namenode

打开从结点配置文件:

sudo gedit /etc/hadoop-0.20/conf.empty/slaves

修改为:

nn-datanode1nn-datanode2

3 Datanode设置

使用Virtualbox中的clone功能,把刚才配置好的Namenonde服务器的虚拟硬盘复制两份,分别叫做Datanode1Datanode2。

3.1 修改主机名

clone过来的虚拟硬盘的主机名都是一模一样的,所以必须修改,现以Datanode1为例,打开主机名配置文件:

sudo gedit /etc/hostname

修改为:

nn-datanode1

再打开hosts配置文件:

sudo gedit /etc/hosts

将里面的所有nn-namenode替换为nn-datanode1。删掉含有“#Added byNetworkManager”的那一行。Datanode2可采用同样的方式进行操作。

在修改完成后,重启两个Datanode结点。

3.2 结点互联

将所有虚拟机的网络设置为Host-onlyAdapter。这样所有的虚拟机都处于同一个内网之下,而不能访问外网。获取所有结点的ip地址,假设在本机上为:

Namenode: 192.168.56.101

Datanode1: 192.168.56.102

Datanode2: 192.168.56.103

我们对每个结点的hosts文件的IPv4的配置下面,添加如下几行:

192.168.56.101    nn-namenode     nn-namenode192.168.56.101    nn-jobtracker   nn-jobtracker192.168.56.102    nn-datanode1    nn-datanode1192.168.56.103    nn-datanode2    nn-datanode2

这样就可以保证每台机器都能够访问其他机器。

4 运行Hadoop

4.1 格式化

对Namenode结点进行格式化:

hadoop namenode -format

对Datanode不需要进行格式化。

4.2 启动Hadoop服务

启动Hadoop所有服务

/usr/lib/hadoop-0.20/bin/start-all.sh

启动完成后,可以在Namenode结点上访问配置站点,以观察目前Hadoop的情况,HDFS站点为:

localhost:50070

MapReduce站点为:

localhost:50030

4.3 测试Hadoop

我们试着将用户根目录下的一个文件aa拷贝到服务器上去,命令为:

hadoop dfs -copyFromLocal /home/nn/aa aa

执行完之后,若未报错,我们可在HDFS站点上,观察该文件是否已经被拷贝到服务器中,以判断服务器是否正常运行。



本文的PDF版本下载地址:http://download.csdn.net/source/3576092

Copyright© 2011 Dadoo.im, All rights reserved

原创粉丝点击