ITPub博客

首页 > 大数据 > 可视化 > Amazon EC2平台Hadoop集群搭建

Amazon EC2平台Hadoop集群搭建

可视化 作者:11868 时间:2013-02-27 09:05:35 0 删除 编辑
最近需要在EC2平台上用Hadoop上完成一些作业和项目,网上中文资料几乎没有关于EC2平台的Hadoop的配置,英文资料里各个关键点又十分分散,花了不少时间才完成,因此总结一下整个配置流程,也算是给自己加深一下印象。

1. 前期准备

在EC2控制台上新建3个instance,可分别命名为master,slave1和slave2 ,其中master将作为namenode和jobtracker ,slave1 和 slave2 将作为datanode和tasktracker。(本例采用free-tire的ubuntu 12.10 服务器)。
Amazon <wbr>EC2平台Hadoop集群搭建

Amazon <wbr>EC2平台Hadoop集群搭建

选中一个服务器,在页面下半部会出现instantce的外部dns地址,用来远程访问,比如我这里master的地址为:ec2-46-137-63-2.eu-west-1.compute.amazonaws.com

2. 配置SSH代理

aws instance之间通信使用RSA加密,在建立instance时会自动下载一个.pem文件,这个就是RSA的私钥,而公钥在建立instance的时候就已经自动设置好了。

打开SSH终端工具,输入ssh 命令连接master,需要用-i参数指明本地私钥的位置,替换红色部分

$ ssh -i your/path/to/your.pem ubuntu@your.instance.adress , ubuntu是aws中所有ubuntu instance的默认用户名。

如果你使用linux或者mac系统,可把私钥文件复制到~目录下的.ssh隐藏目录里,并重新命名为id_rsa(无扩展名),并打开本地ssh-agent服务(mac10.7之后版本默认开启),即可免声明私钥路径直接登陆.

登陆成功后进入~/.ssh目录,
$cd ~/.ssh

新建一个id_rsa文件,

$nano id_rsa

用记事本之类的工具打开本地的私钥文件,全部复制到id_rsa中,保存关闭,将文件权限降低至600。
        
$chmod 600 id_rsa
然后设置ssh代理,

$ssh-agent bash
$ssh-add

若出现Identity added: /home/ubuntu/.ssh/id_rsa (/home/ubuntu/.ssh/id_rsa)则表示设置成功,此时可以试着在master上ssh其他slave看是否成功。

以上是关键的步骤之一,因为hadoop工作时需要master和slave之间的交互,而在EC2平台上任意instance之间交互都是需要进行RSA验证的。至此,master与slave之间通信可自动完成验证过程。

3. 下载hadoop和java运行环境

本例使用hadoop1.0.4+jre7

$sudo apt-get update
$sudo apt-get install openjdk-7-jre
$wget http://mirrors.ukfast.co.uk/sites/ftp.apache.org/hadoop/common/hadoop-1.0.4/hadoop-1.0.4.tar.gz   
(hadoop地址可在官方网站上找到)。

解压hadoop

$tar xzf hadoop-1.0.4.tar.gz    

这一步之后很多教程建议将解压之后的文件夹放到/usr/local/目录下,可是如若如此会遇到很多关于用户权限的麻烦,因此本例就将其放在原位(/home/ubuntu/)。

对所有的slave进行相同操作。

4. 配置相关参数。

此部分参阅了石头儿的博客。

回到master,进入hadoop-1.0.4/conf 目录,

$cd ~/hadoop/conf

首先修改hadoop-env.sh中的JAVA_HOME参数

$nano  hadoop-env.sh

将JAVA_HOME那一行去掉注释,后面修改为

JAVA_HOME = /usr/ 
此路径(仅)适用于EC2 ubuntu instance

接着修改core-site.xml,该配置文件指明了HDFS文件系统的服务器以及服务器内路径位置,在 之间加入如下配置,将红字部分换成master的外部dns地址:

 
       fs.default.name 
      hdfs://your.master.address:9000 
 

然后是hdfs-site.xml,该配置文件指明了文件需要备份的份数,此处我们设置为1。在 之间加入如下配置

       dfs.replication
       3
 

接着是mapred-site.xml,该配置文件指明了jobtracker的地址,以及其他和MapReduce相关的配置,我们此处只设置jobtracker为master。在 之间加入如下配置:
 
       mapred.job.tracker
        http://your.master.address:9001 
 

最后还有masters和slaves两个文件中需要分别申明一下master和slave1,slave2外部dns地址,去掉localhost每个占一行:

Amazon <wbr>EC2平台Hadoop集群搭建

用scp命令将master的配置推送到slave。

确认自己是在conf目录下。

/conf$ scp * your.slave1.adress:/home/ubuntu/hadoop-1.0.4/conf/
/conf$ scp * your.slave2.adress:/home/ubuntu/hadoop-1.0.4/conf/

将红色部分分别替换成slave1 和 slave2 的外部dns地址。

如果这一步失败,提示"public key denied"说明ssh代理设置不成功。
至此,instance配置全部完成。

5. 配置EC2 Security Group

Security Group 起到了instance的分组和防火墙的作用,新建instance的时候默认会加入quicklaunch分组。

如下图所示,目前Security Group只开放了22(SSH)端口,Source 0.0.0.0/0 表示允许任意来源访问该端口。
Amazon <wbr>EC2平台Hadoop集群搭建

还记得之前配置HDFS和JobTracker的时候用到了9000 和 9001端口吗?这些端口默认没有打开,但却是Hadoop运行所必须的。

在左侧添加Hadoop所需的端口,并将source设置成instance所在的Security group,点击Apply Rule Changes ,完成后如下图所示。

Amazon <wbr>EC2平台Hadoop集群搭建



 
<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24068295/viewspace-1119529/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-06-10