您的位置:首页 > 运维架构 > Linux

Hadoop的安装---在真实的linux集群上安装

2011-10-30 22:44 405 查看
1.在每台linux节点上安装好jdk,最好把ant一并装了,装的目录最好一致,然后统一配好java所需要的环境变量,例如:
a) $export JAVA_HOME=/usr/java/jdk1.6.0_16
b) $export ANT_HOME=/usr/ant/ant-1.7.0
c) $export JRE_HOME=/usr/java/jdk1.6.0_16/jre
d) $export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib:$ANT_HOME/lib
e) $export PATH=/usr/java/jdk1.6.0_16/bin:/usr/ant/ant-1.7.0/bin:$PATH
注:最好将这些写到~/.bash_profile里面去

2.配置每个节点上的用户权限,强烈建议使用root用户,因为在运行hadoop的时候,hadoop会生成tmp文件,并且对这些文件修改,用户必须得具有足够的权限,这一点曾让我欲哭无泪,曾通宵一夜调bug,未果,特引以为戒!!
(a)给用户添加sudo的权限:

$chmod +w /etc/sudoers

$vi /etc/sudoer 添加一行: 用户名 ALL=(ALL) ALL

$chmod –w /etc/sudoers 注:必须得把写权限去掉,因为系统只是别具有只读权限的sudoers文件

(b)干脆直接将用户设为root用户组:

$chmod +w /etc/passwd

$vi /etc/passwd 更改对应用户那一行的信息:

例如:zhangliuhang:x:0:0::/home/zhangliuhang:/bin/bash

$chmod –w /etc/passwd

3.配置每个节点上的网络环境,这是比较重要而且比较费事,首先安装ssh,安装好后,配置ssh,使得各个节点间可以互相访问,不需要手动的密码验证。

(1)生成RSA密钥,公钥:
$ssh-keygen –t rsa –f ~/.ssh/id_rsa
注:(一直按回车键就好)此时在~/.ssh目录下会有密钥id_rsa,和公钥id_rsa.pub

(2)将公有密钥id_rsa.pub追加到其他所有节点的~/.ssh/authorized_keys文件中,以使得本节点访问别的节点时候不需要手动输入密码验证。这有两种处理方法:
(A)在一台机器上的~./ssh/authorized_keys文件中收集好所有节点的公有密钥id_rsa.pub,然后将该文件分发到其他各个节点的相应位置。最后保证authorized_keys文件的读写权限只对所有者有读写权限,否则ssh是不会工作的!
(B) 当集群较小的情况下,推荐使用命令ssh-copy-id -i ~/.ssh/id_rsa.pub user@machine的方法将本节点的公钥传到别的节点上。

配好后可以试试ssh 看能不能不输入密码直接登录上别的节点

4.到官网上下载hadoop,我这里下的是hadoop 0.20.2版本。
(1)首先配置环境变量:
$ export HADOOP_HOME=/home/zhangliuhang/hadoop
$ export HADOOP_INSTALL=$HADOOP_HOME
$ export PATH=.:$HADOOP_HOME/bin:$PATH
(注:最好将当前安装hadoop/bin目录放在前面,由于我之前放在后面,导致我运行hadoop的时候看上去是我自己的版本,实际上运行的是别人的版本(注:我运行的节点上有别人安装过的残留的hadoop),会出现诡异的错,很难发现,所以一定得确定后面运行hadoop指令的时候是自己当前版本的!)

(2)在各个节点中选择一台作为master,其他的节点都作为slave。
(注:这时候可以给ip进行映射,这样就不要显示的敲击ip了,
$chmod +w /etc/hosts
$vi /etc/hosts
修改例子如下:
100.100.100.101 主机名1或域名1 slave1
100.100.100.102 主机名2或域名2 master
100.100.100.103 主机名3或域名3 slave2
$chmod –w /etc/hosts)

(3)对于所有节点配置:
$HADOOP_HOME/conf/目录下:
(a)Hadoop-env.sh:
export JAVA_HOME=/usr/java/jdk1.6.0_16
其他的选项可以自己看着办
(b)Core-site.xml:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/zhangliuhang/tmp</value>
</property>

<property>
<name>fs.default.name</name>
<value>hdfs://master:9910/</value>
</property>
</configuration>
注:最好把tmp目录给设了,这样以后重新安装hadoop的时候知道在哪可以直接把各个节点上hadoop的tmp文件删掉,然后重新安装,否则如果没删掉tmp文件就重新安装容易造成新安装的hadoop运行时报版本错误!本人深刻体会了这一点!!
(c)hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
其他的属性可以自行设置

(d)mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9007</value>
<final>true</final>
</property>
</configuration>
其他的属性可以自行设置,该处端口号和(b)中的端口号无法使用的时候可以自行换

(e)masters:
master
注:此处是设置secondnode的并不是namenode

(f)slaves:
slave1
slave2

(4)当配好这一切后就可以在namenode(也就是我们的master)上启动了!~
$hadoop namenode –format 注:对于hadoop文件系统格式化
$start-all.sh
运行后可以查看是否正常,在namenode上输入jps应该可以看到
Jps
Namenode
JobTracker
SecondaryNameNode
在slave节点上敲击jps看到
Jps
Datanode
TaskTracker
那么整个安装系统就结束了,可以跑跑hadoop的benchmark
注:整个过程比较麻烦,最好可以写一些脚本,这样以后再次搭建的时候就会方便很多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: