Hadoop分布式集群平台搭建
目的
这篇文档的目的是帮助你快速完成在三台以上服务器搭建Hadoop应用平台。
先决条件
? ? VirtualBox?虚拟机共3台
????? 操作系统:Ubuntu 10.4
? ? ? 内存: 256M以上
安装Hadoop集群前的准备工作
一、在每台机子上创建hadoop用户
$ group hadoop
$ useradd -g hadoop hadoop
$ passwd hadoop
?
? 当然也可以用图形界面中 系统设置-〉用户和组 添加。添加之后注销使用hadoop用户登录,接下来的配置都用hadoop用户操作
二、修改hosts,在三台机子配置如下host
sudo vi ?/etc/hosts
?
10.9.9.100 master10.9.9.101 slave0110.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/hadoopexport JAVA_HOME=/usr/local/java/jdkexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport 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.xmlhdfs-site.xmlmapred-site.xmlmastersslaves 六个文件
=======?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?
?
?
slave01slave02?
?
运行hadoop
? (1)格式化namenode
???????????$ ?hadoop namenode -format
??????????? 注意查看相关log是否报错,如将/data/hadoop/name文件夹整个删除或者给文件加上777权限 然后再格,一定要成功才能继续
? (2)启动hdfs服务
? ? ? ? ? ?$ start-all.sh
? (3)启动hdfs服务
? ? ? ? ? ?$ stop-all.sh
? ? (4) ?查看结果
http://10.9.9.100:50070/
? ?(5)其它
? ? ? ? ??查看进程情况:?jps可以用来查看当前hadoop运行的进程情况。
? ? ? ? ?hadoop dfsadmin report可以用来查看当前hadoop的运行情况。
? ? ? ? ? ?