最近学习hadoop,看了很长时间《hadoop权威指南》一书,却一直未动手搭一下环境。为了更深一步的学习,开始摸索着在自己的Windows和ubuntu电脑上安装hadoop。
Hadoop以Java语言写就,因而需要在本地计算机上预安装Java6或更新版本。Hadoop能运行在Unix或Windows平台上。Linux是Hadoop唯一支持的生产平台,在其他的Unix系统(包括Mac OS x)上也可以运行Hadoop进行开发工作。Windows仅限于作为开发平台(可用于我们开发和学习),但是需要借助Cywin(如果计划以伪分布式模式运行Hadoop,则在安装Cygwin的过程中必须包含openssh)。因此,下面主要讲述怎样在ubuntu环境下的配置,配置好Cywin的Windows下的配置和前者一样。
1.ubuntu下配置说明
首先,决定以什么用户的身份来运行Hadoop。如果只是想尝试安装过程或开发Hadoop程序,最简单的方式就是用用户的私有帐号进行安装。也可以专门创建一个独有的账户,并加入管理员组。
(参见,下面安装尝试很大程度上借鉴了此博客,主要点出不必要和更高版本行不通的地方)
从Apache Hadoop发布页面(http://hadoop.apache.org/releases.html)下载一个稳定的发布包,再解压缩到本地文件系统的特定目录下。
tar xzf hadoop-0.23.10.tar.gz
运行Hadoop安装程序之前,需要指定Java在本地系统中的路径。如果在此次安装Hadoop安装程序之前,本地系统已经安装Java6以上的jdk并已经设置JAVA_HOME环境变量正确地指向Java安装,可以不进行其他配置。否则可以在安装jdk后,通过export JAVA_HOME=(实际安装路径)或编辑conf/hadoop-env.sh文件来设置JAVA_HOME。更新版本的Hadoop版本可能无法在解压的目录下找到conf文件夹并对其中的hadoop-env.sh进行编辑。这时怎么办呢?
通过 find . -name hadoop-env.sh查找发现,在./share/hadoop/common/templates/conf中找到所要的文件极其conf文件夹,可以将该 conf/* 复制到解压目录下或不复制直接进行JAVA_HOME和PATH的编辑(编辑修改前记得使用chown命令将文件夹或文件所有者改为当前用户) 。
进行上述操纵后,可输入以下指令来判断Hadoop是否运行。
Hadoop version
由于默认属性专为独立模式(无需运行任何守护进程,所有进程都在单个JVM上执行)所设,故进行上述操作后可以运行。运行一下Hadoop自带的例子来感受一下MadReduce过程。更新版本的Hadoop自带例子在./share/hadoop/mapreduce/hadoop-mapreduce-examples-0.23.10.jar。
在伪分布式模式下工作时必须启动守护进程,而启动过守护进程的前提是已经成功安装SSH。Hadoop并不严格区分伪分布模式和全分布模式,它只是启动集群主机集(由slaves文件定义)的守护进程:SSH-ing到各个主机并启动一个守护进程。在伪分布模式下,(单)主机就是本地计算机,因而伪分布模式可视为全分布模式的一个特例,需要指出的是,必须确保用户能够SSH到本地主机并不输入密码即可登录。
sudo apt-get install ssh //确保SSH已经安装。
基于空口令创建一个新SSH密钥,一启用无密码登录
ssh-keygen-t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
用以下指令进行测试,如果成功,则无需键入密码
ssh localhost
Apache Hadoop页面http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html给出的说明。
接下来格式化HDFS文件系统 hadoop namenode -fromat
启动HDFS和MapReduce守护进程: start-dfs.sh start-mapred.sh(如果配置文件没有默认的conf目录中,则在启动守护进程时使用--config选项,该选项采用绝对路径指向配置目录 如start-dfs.sh --config path-to-config-directory)
本地计算机将启动三个守护进程:一个namenode、一个辅助namenode和一个datanode。可以浏览logs目录(在Hadoop安装目录下)中的日志文件来检查守护进程是否成功启动,或通过web界面:在http://localhost:50030/查看jobtracker或在http://localhost:50070/查看namenode。此外,Java的jps命令也能查看守护进程是够正在运行。
2.Windows下Cywin注意