目的
这篇文档的目的是帮助你快速完成在三台以上服务器搭建Hadoop应用平台。
先决条件
VirtualBox 虚拟机共3台
操作系统:Ubuntu 10.4
内存: 256M以上
机器名 | IP | 作用 |
master | 10.9.9.100 | NameNode、master、jobTracker |
slave01 | 10.9.9.101 | DataNode、slave、taskTracker |
slave02 | 10.9.9.102 | DataNode、slave、taskTracker |
安装Hadoop集群前的准备工作
一、在每台机子上创建hadoop用户
$ group hadoop
$ useradd -g hadoop hadoop
$ passwd hadoop
当然也可以用图形界面中 系统设置-〉用户和组 添加。添加之后注销使用hadoop用户登录,接下来的配置都用hadoop用户操作
二、修改hosts,在三台机子配置如下host
sudo vi /etc/hosts
10.9.9.100 master 10.9.9.101 slave01 10.9.9.102 slave02
三、开启ssh服务
安装ssh服务 :sudo apt-get install openssh-server
(1)在 master 上实现无密码登录本机
$ ssh-keygen –t dsa
一路回车,
完成后会在/home/hadoop/.ssh下生成两个文件:id_dsa和id_dsa.pub。这两对是成对出现的。再把id_dsa.pub加到authorized_keys文件里。方法如下:进入/home/hadoop/.ssh目录:
$ cat id_dsa.pub >> authorized_keys
完成后可以实现无密码登录本机:
$ ssh localhost
若无密码输入提示,则配置成功。
(2)实现 master 无密码登录其他slave01, slave02
在master机子上把id_dsa.pub文件复制给其它两台子
scp /home/hadoop/.ssh hadoop@slave01:/home/hadoop/
scp /home/hadoop/.ssh hadoop@slave02:/home/hadoop/
测试ssh 无密码登录
$ ssh slave01
$ ssh slave02
安装
一、下载 jdk7 jdk-7-linux-x64.tar.gz
http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html
$ sudo tar -zxvf jdk-7-linux-x64.tar.gz -C /usr/local/java/
$ sudo mv /usr/local/java/jdk1.7.0 /usr/local/java/jdk
二、下载 hadoop hadoop-0.21.0.tar.gz
http://www.apache.org/dyn/closer.cgi/hadoop/common/
解压重命名
$ sudo tar -zxvf hadoop-0.21.0.tar.gz -C /usr/local/
$ sudo mv /usr/local/hadoop-0.21.0 /usr/local/hadoop
(2) 添加环境变量
$sudo vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop export JAVA_HOME=/usr/local/java/jdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
注意:上面的路径要和你解压的路径相一致,以上的配置三台机子都要相同
配置hadoop
(1)建立目录
在master服务器上,建立目录 /data/hadoop/name、/data/hadoop/tmp
在slave01,slave02服务器上,建立目录 /data/hadoop/data01、/data/hadoop/data02、/data/hadoop/tmp
(2)建立无密码验证的ssh密钥及更改文件权限
(mster)
# chown hadoop:hadoop -R /usr/local/hadoop
# chown hadoop:hadoop -R /data/hadoop/name /data/hadoop/tmp
( slave01、slave02 )
# chown hadoop:hadoop -R /usr/local/hadoop
# chown hadoop:hadoop -R /data/hadoop/data01 /data/hadoop/data02 /data/hadoop/tmp
(3) 在master上修改配置文件 ,修改完成后,拷贝到slave01和slave02 ,保证配置文件保持一致
要修改的文件有 {hadoop-install-dir}/conf/目录下的,
hadoop_env.sh core-site.xml hdfs-site.xml mapred-site.xml masters slaves 六个文件
======= hadoop_env.sh==========
配置Hadoop需要的环境变量,其中JAVA_HOME是必须设定的变量 。
export JAVA_HOME=/usr/java/jdk1.6.0
======= core-site.xml==========
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
=======hdfs-site.xml=======
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/data01,/data/hadoop/data02</value>
</property>
</configuration>
================ mapred-site.xml ======================
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
===============masters=====================
master
slave01 slave02
运行hadoop
(1)格式化namenode
$ hadoop namenode -format
注意查看相关log是否报错, 如将/data/hadoop/name文件夹整个删除或者给文件加上777权限 然后再格,一定要成功才能继续
(2)启动hdfs服务
$ start-all.sh
(3)启动hdfs服务
$ stop-all.sh
(4) 查看结果
(5)其它
查看进程情况: jps可以用来查看当前hadoop运行的进程情况。
hadoop dfsadmin –report可以用来查看当前hadoop的运行情况。