登陆成功后进入~/.ssh目录,
cd ~/.ssh
新建一个id_rsa文件,
这里用的是winscp(没有的可以上网搜索下载)。如下图:
登录后,找到/home/ubuntu/.ssh,进入后,在里面新建 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之间通信可自动完成验证过程。
三、下载hadoop和java运行环境
这里使用hadoop1.0.4和jdk7
sudo apt-get update
sudo apt-get install openjdk-7-jdk
wget http://www.fayea.com/apache-mirror/hadoop/common/hadoop-1.0.4/hadoop-1.0.4.tar.gz
(需要说明的是,上面的下载地址不能保证你也能够下载,所以去hadoop官方网站找:hadoop下载地址)。
解压hadoop
tar xzf hadoop-1.0.4.tar.gz
这一步之后很多教程建议将解压之后的文件夹放到/usr/local/目录下,可是如若如此会遇到很多关于用户权限的麻烦,因此这里就将其放在原位(/home/ubuntu/)。
对所有的slave进行相同操作。
四、配置相关参数。
此步参阅了熊天翼的博客
先将hadoop-1.0.4重命名下:
sudo mv hadoop-1.0.4 hadoop
回到master,进入hadoop/conf 目录,
cd ~/hadoop/conf
1.设置好三台机器上的/etc/hosts和/etc/hostname
host这个文件用于定义主机名与IP地址之间的对应关系。图所示为我的配置:
原本在第一行和第五行之间是没有内容的,这些内容是加上去的。那么这里要说下如何弄得ip地址了,在/etc/hostname里面。在AWS建立的虚拟机,用的主机名即是ip地址。
用
vim /etc/hostname
你将可以看到里面内容为:ip-10-130-186-142。这个就是这台虚拟机的ip地址了,记下后,将这个名字改为master或者slave1或者slave2,这样方便。
使用vim,如果出现无法保存,如图:
那么输入:
w !sudo tee %
之后强制退出即可。
2.修改hadoop-env.sh中的JAVA_HOME参数
vim hadoop-env.sh(当然也可以nano hadoop-env.sh,甚至也可以用之前提到的winscp工具)
具体vim,nano如何使用,自己网上找操作方法
将JAVA_HOME那一行去掉注释,后面修改为
JAVA_HOME = /usr/
如图:
此路径(仅)适用于EC2 ubuntu instance
3.修改core-site.xml
该配置文件指明了HDFS文件系统的服务器以及服务器内路径位置,加入如下配置:
nano core-env.xml
这里的master就是在之前/etc/hosts里面定义的主机名与IP地址之间的对应关系。而第二个value中间的路径是hadoop存储数据的位置,这个可以根据个人有所不同,但此文件夹需要手动创建。
4.修改hdfs-site.xml
该配置文件指明了文件需要备份的份数。加入如下配置:
nano hdfs-site.xml
5.修改mapred-site.xml
该配置文件指明了jobtracker的地址,以及其他和MapReduce相关的配置。此处只设置jobtracker为master
加入如下配置:
nano mapred-site.xml
6.masters和slaves两个文件中需要分别申明一下master和slave1,slave2外部dns地址
可以看到里面只是写了master slave1 slave2。这些在之前/etc/hosts里面已经定义的主机名与IP地址之间的对应关系。