本节和大家学习一下Hadoop安装与使用方法,内容主要包括系统配置,设置ssh无密码登录和配置Hadoop等,希望通过本节的学习你一定会对Hadoop有更加深刻的认识。
Hadoop安装与使用
主要参考:http://blog.chinaunix.net/u/4764/index.html
0. 介绍
对于Hadoop来说,在HDFS看来,节点分为Namenode和Datanode,其中Namenode只有一个,Datanode可以是很多;在 MapReduce看来,节点又分为Jobtracker和Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很 多。当前将namenode和jobtracker部署在wukong1上,wukong2,wukong3作为datanode和 tasktracker。当然也可以将namenode,datanode,jobtracker,tasktracker全部部署在一台机器上。
1. 系统配置
操作系统:unbuntu-7.04
jdk: sun-java6-jdk
hadoop:hadoop-0.13.0 http://www.apache.org/dyn/closer.cgi/lucene/hadoop/
硬件:三台机器,IP配置如下:
wukong1:192.168.100.1,210.45.114.2
wukong2:192.168.100.2
wukong3:192.168.100.3
系统使用:ssh 210.45.114.2 wukong:wukong123
2. 修改每台机器的/etc/hosts,保证每台机器间都可以通过机器名解析
加入下面几行:
192.168.100.1 wukong1 wukong1
192.168.100.2 wukong2 wukong2
192.168.100.3 wukong3 wukong3
3. 设置ssh无密码登录
Hadoop安装在安装时需要设置ssh无密码登录,因为在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。在没进行下面的配置前,在wukong1上执行ssh wukong2的操作时,需要输入wukong@wukong2的密码。
配置wukong1上ssh的过程如下。生成密钥对:ssh-keygen -t rsa, 会在~/.ssh/目录下生成id_rsa和id_rsa.pub, 其中id_rsa是私钥,id_rsa.pub是公钥,需要把公钥拷到所有节点的~/.ssh/authorized_keys这个文件中(包括自己本 身,保证ssh登录自己时也不需要密码),如果该文件已经存在则追加到这个文件中。要正确设置authorized_key的权限为644,不然还是不 行,chmod 644 authorized_key。当wukong1向wukong2发起ssh连接的时候,wukong2上就会生成随机数并用wukong1的公钥对这个 随机数进行加密,并发送给wukong1;wukong1收到这个加密的数以后用私钥进行解密,并将解密后的数发送回wukong2,wukong2确认 解密的数无误后就允许wukong1进行连接了。这就完成了一次公钥认证过程。这时,可以测试一下,ssh wukong2是不是已经不再需要输入密码了。
对于每个节点都要进行上面类似的操作,保证该节点到其它节点的ssh连接不需要输入密码。
4. 配置hadoop
由于Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户。
三台机器上是这样的:都有一个wukong的帐户,主目录是/home/wukong。
把hadoop-0.13.0.tar.gz放到所有节点的~/目录下,wukong@wukong1:~$tar zxvf hadoop-0.13.0.tar.gz
会在~/目录下生成一个hadoop-0.13.0目录,为了方便以后版本升级,建立一个链接指向要使用的hadoop版本,不妨设为hadoopwukong@wukong1:~$ln -s hadoop0.12.0 hadoop
这样一来,所有的配置文件都在/hadoop/conf/目录中,所有执行程序都在/hadoop/bin目录中。
但是由于上述目录中hadoop的配置文件和hadoop安装目录是放在一起的,这样一旦日后升级hadoop版本的时候所有的配置文件都会被覆盖,因 此将配置文件与安装目录分离,一种比较好的方法就是建立一个存放配置文件的目录,/home/wukong/hadoop-config/,然后将 /hadoop/conf/目录中的hadoop_site.xml,slaves,hadoop_env.sh,masters,这4个文件拷贝到 hadoop-config/目录中,并指定环境变量$HADOOP_CONF_DIR指向该目录。环境变量在/home/wukong/.bashrc 中设定。
在hadoop-conf/目录下,打开slaves文件,该文件用来指定所有的从节点,一行指定一个主机名,slaves内容如下:
wukong@wukong1:~/hadoop-config$ cat slaves
wukong2
wukong3
在hadoop-conf/目录下,打开masters文件指定主节点,masters内容如下:
wukong@wukong1:~/hadoop-config$ cat masters
wukong1
在conf/目录中的hadoop-default.xml中包含了Hadoop的所有配置项,但是不允许直接修改!可以在hadoop-conf/目录 下的hadoop-site.xml里面定义我们需要的项,其值会覆盖hadoop-default.xml中的默认值。可以根据自己的实际需要来进行定 制。
Hadoop环境变量
在/home/wukong/hadoop-conf目录下的hadoop_env.sh中设置Hadoop需要的环境变量,其中JAVA_HOME是必 须设定的变量。HADOOP_HOME变量可以设定也可以不设定,如果不设定,HADOOP_HOME默认的是bin目录的父目录,即本文中的 /home/wukong/hadoop。当前设置:
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export HADOOP_HOME=/home/$USER/hadoop
这样以后升级的时候只要把hadoop的联接指向新的版本就行了,不需要修改配置文件。请期待下节关于Hadoop安装与使用介绍。
【编辑推荐】