环境:虚拟机ubuntu11.04
hadoop配置分3种:单机版,伪分布式,分布式。
伪分布式和分布式其实是一样的,只不过伪分布式是只有一台机器的集群。本文讲一下分布式hadoop配置方法。
一.安装准备
1.下载hadoop-1.0.3
2.下载jdk:jdk-6u33-linux-i586.bin(必须是1.6以上的版本)
二.安装操作
1.安装JDK
2.hadoop中需要用到ssh协议,所以需要集群中的机器都能通过ssh无密码访问其他机器。
在本机ssh -keygen -t dsa -P '' -f ~/.ssh/id_dsa,回车,完成后会在~/.ssh/生成两个文件:id_dsa 和id_dsa.pub。这两个是成对出现,类似钥匙和锁。再把id_dsa.pub(公钥)追加到授权key 里面(当前并没有authorized_keys文件)。
本机:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys,这样就能通过ssh无密码连接本机(ssh localhost,也可以在/etc/hosts文件中把本机映射成其他名,我的电脑192.168.1.108 michael,所以可以ssh michael连接)
其他电脑:scp id_dsa.pub clientIP:/home/chianyu (clientIP为另外一台机器IP地址)
登录clientIP,进入/home/chianyu目录执行:
cat id_dsa.pub >> .ssh/authorized_keys,把自己的公钥追加到对方的authorized_keys,那么本机就能ssh无密码到clientIP,同样可以在/etc/hosts中修改映射名。
3.解压hadoop-1.0.3.tar.gz到自己用户目录下
4.配置文件的修改
hadoop的体系结构为一个Master,多个Slavers,只需要把Master的配置文件改好,然后把整个文件夹通过远程拷贝的方式拷贝到各个Slavers的相同目录下。注意集群中所有的机器要取名一样,这样才能保证路径相同。配置文件都在conf目录下。
masters文件:加入作为master主机的IP地址
192.168.1.110
slaves文件:加入所有作为slaves主机的IP地址,一行一个(作为master的机器同时也可以作为slave)
192.168.1.108
192.168.1.125
192.168.1.127
...
slaves文件中也可以填写作为master主机的IP,那么这台机器即作为master也作为slave。如果是配置伪分布式的话,slaves文件只用填写自己的IP就行了。
hadoop-evn.sh
export JAVA_HOME=/home/chianyu/jdk_1.6.0_33(设置JAVA_HOME环境变量)
core-site.xml(设置文件系统的端口号和一些临时文件的目录等信息)
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoopdata</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.110:9000</value> <!--master的IP地址和hdfs的端口号-->
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>excludes</value>
</property>
</configuration>
hdfs-site.xml(设置文件系统的备份数和name数据,data数据存放的路径等信息)
<configuration>
<property>
<name>dfs.replication</name> <!--默认备份数为3,此处修改为1,因为伪分布式只有一台电脑-->
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/chianyu/Michael_Namenode/nameDir</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/chianyu/Michael_Namenode/dataDir</value>
</property》
</configuration>
mapred-site.xml(设置jobtracker的IP和port,IP一般是master的IP)
<property>
<name>mapred.job.tracker</name>
<value>192.168.1.110:9001</value>
<description>Thehost and port that the MapReduce job tracker runs
at. If "local", then jobs are runin-process as a single map
andreduce task.</description>
</property>
/etc/hosts文件:把集群中所有的IP和主机名的映射添加进来
192.168.1.110 cug
192.168.1.108 michael
192.168.1.125 geekpc
。。。
/etc/profile文件
export JAVA_HOME=/home/chianyu/jdk1.6.0_33
export JRE_HOME=/home/chianyu/jdk1.6.0_33/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/home/chianyu/hadoop-1.0.3
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile使之对于当前shell生效
5.把配置好的hadoop文件夹拷贝到其他主机 scp ... ... ,/etc/hosts和/etc/profile文件作同样的修改
6.启动hadoop
hadoop start-all.sh
使用jps查看进程启动情况。(具体的参看hadoop的几个进程,以及哪些进程会在master上启动,哪些会在slaves上启动。)
如果出现问题,多半是环境变量或者配置文件的问题。主要从这两个地方找错误,还有看日志文件。
finished