Hadoop安装及初探

来源:互联网 发布:听音写谱软件 编辑:程序博客网 时间:2024/06/06 00:18

注:本文只是自己学习Hadoop的笔记,主要用来督促自己坚持学习,如果能对大家有点帮助,对我将是意外的惊喜。我假设您已经对Hadoop有基本了解,至少知道Hadoop是用来干嘛的。
一、Hadoop简介
    关于Hadoop的介绍已经很多,在此就不Ctrl+C、Ctrl+V了。这里只说一下,Hadoop项目起初的目的是将Google公司的三大宝GFS、Big Table以及Map-Reduce开源化。目前的Hadoop包含下面几个子项:
    Hadoop Common: Hadoop的基础套件,这是必需的
    HDFS:     Hadoop文件系统,对应GFS
    MapReduce: 不用翻译
    ZooKeeper: 分布式程序协调服务
与Hadoop相关的项目:
    HBase:    Hadoop版的Big Table,本来是Hadoop的子项,现在混好了,跟Hadoop平起平坐
    Avro:    数据序列化系统
    Chukwa:    用来管理大规模集群的数据收集系统
    Hive:    数据仓库工具
    Mahout:    机器学习与数据挖掘库
    Pig:    直接翻译就是猪,你懂的,呵呵

二、Hadoop安装需求
    平台:Hadoop旗帜鲜明地指出development and production platform是GNU/Linux, 而Windows只是作为development platform. 微软被鄙视了,呵呵。我用的Linux版本是RHEL5.5,不过据传说Ubuntu是最佳选择。
    软件需求:
    1. JAVA 1.6.x, 最好是Sun的版本
    2. SSH   (sshd服务必须启动)
三、Hadoop安装
1、下载Hadoop
    在哪下载?可以在http://hadoop.apache.org/core/releases.html上面找到相应的版本,我下载的是最新的稳定版hadoop-0.20.2.tar.gz(包含了HDFS和MapReduce), hbase-0.20.6.tar.gz(Hadoop的Big Table,此文暂不介绍)。下载了这两个文件,Google三大宝就到手了。

2、安装Hadoop
    因为有过当初安装MogileFS的痛苦经历,所以一开始我就做好了被折磨的准备。
    找到下载的hadoop-0.20.2.tar.gz(这个文件包括了HDFS和Map-Reduce)
    tar xzvf hadoop-0.20.2.tar.gz
    然后%¥@#*,说实话,我在Hadoop-0.20.2文件夹里找了半天安装说明(^-^). 没想到解压完毕,HDFS和Map-Redece就已经安装上了,是不是有点在Windows下用免安装软件的感觉?

3、配置Hadoop(h/表示刚才解压出来的Hadoop目录)
    Hadoop有三种工作模式:
    本地模式(Local/Standalone Mode): 这个模式一般用于调试,不管是实际应用还是学习都不合适
    伪分布式模式(Pseudo-Distributed Mode): 单机上模拟的分布式,其实就是多开几个Java进程。
    全分布式模式(Fully-Distributed Mode): 这才是Hadoop能真正给力的模式,目前Hadoop已经能支持数千个节点

JAVA环境变量配置:
    在h/conf/hadoop-env.sh脚本文件中加入export JAVA_HOME=/usr/java/jre1.6.0_20(用你机器上JAVA所在的路径替换),h/conf/hadoop-env.sh中有条注释# export JAVA_HOME=/usr/lib/j2sdk1.5-sun,实际所需要的只是JRE,不一定非得安装JDK。
    保存并退出,进入h/bin目录中执行./hadoop,这时会显示一堆提示输入参数的信息,表示JAVA环境变量配置成功。如果显示错误信息,请自己根据提示解决,因为我没碰到,呵呵。

学Hadoop就为了体验分布式的强大,但公司肯定不会给几十几百台机器让你玩,所以我就先在自己的本上配置了伪分布式模式,先尝尝鲜再说。
伪分布式模式配置:
    需要配置3个h/conf目录下的配置文件core-site.xml、hdfs-site.xml以及mapred-site.xml。这三个配置文件中分别添加如下信息(下面Hadoop文档提示的配置,你可根据你的情况配置)。
h/conf/core-site.xml (Hadoop核心节点配置)
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

h/conf/hdfs-site.xml (Hadoop文件系统节点配置)
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>    这个值表示你的数据做几个镜像备份,Google公司实际用的都是做3份冗余
  </property>
</configuration>

h/conf/hdfs-mapred-site(Hadoop的Map-Reduce节点配置)
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:9001</value>
  </property>
</configuration>

4、启动Hadoop
即使在本地,Hadoop也是通过ssh登录的,所以最好保存本地ssh登录密钥:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

运行Hadoop之前先格式化文件系统: h/bin/hadoop namenode -format
启动Hadoop服务:h/bin/start-all.sh
如果不出意外,Hadoop的文件系统和MapReduce服务已经在你的机器上跑起来了。可以用浏览器进行查看和管理。
NameNode(节点和文件系统信息):    http://localhost:50070/
JobTracker(MapReduce任务信息):    http://localhost:50030/

5、Hadoop文件系统操作
将文件存入HDFS: h/bin/hadoop fs -put [path]localfilename [path]hdfsfilename
将文件取到本地磁盘: h/bin/hadoop fs -get [path]hdfsfilename [path]localfilename
HDFS就是一个虚的文件系统,linux下的文件系统常用命令都可以在HDFS下使用.什么ls,mv,rm,mkdir,chmod等等都不在话下。

6、总结
这里只配置了Hadoop的伪分布式模式,还是在自己的老本上跑的,所以存取个小文件都要小等一会。Hadoop就是为打群架设计的,让它单挑也够为难它。下一步就是找几台机器把Fully-Distributed模式跑起来,真刀真枪地跟单机干一架。


流浪鱼
2011年1月7日