【Hadoop】Hadoop0.20.2的安装

Hadoop现时官网值提供1.x版本与2.x版本,而且力推2.x版本,然而现在市面上大多数书籍与资料都是经典的hadoop-0.20.2.tar.gz版本,据说,其属于Hadoop1.x版本体系,Hadoop1.x版本的安装是大同小异,区别于Hadoop2.x完全推翻重写。

不过我觉得还是从现在具有大多数研究的Hadoop0.20.2学起,在官方网站上已经删除了这个2010年的历史版本下载了。不过通过搜索引擎还能够找到。我给找到之后给大家上传了一份:http://download.csdn.net/detail/yongh701/9416878

一、虚拟机中Linux的安装

hadoop-0.20.2.tar.gz只能在Linux中安装,虽然现在Hadoop2.x貌似已经可以直接在Windows安装了,但是还是建议在Linux虚拟机上安装Hadoop,具体请看《【Linux】Ubuntu12.04的下载与安装》(点击打开链接)、《【Linux】在Ubuntu12.04安装VMware Tools》(点击打开链接

Hadoop相当于一个服务器,类似于Apache服务器的角色。我们可以在Linux上运行hadoop0.20.2,而在Windows下用改装的Eclipse开发Hadoop的Mapreduce应用。其中,这里Mapreduce是Hadoop的组件之一。

二、Java的安装

Hadoop是基于Java开发的,如同《【Linux】在Debian配置JDK1.7,与Linux Java Helloworld》(点击打开链接)一样,在Linux配置好Java环境。

三、SSH的安装、配置

同时使用Hadoop之前,我们先要在Linux中安装SSH免登录认证,用于避免使用Hadoop时的权限问题。

首先在终端中输入以下命令:

sudo apt-get install ssh

输入密码之后,让Linux完成ssh的下载、安装,如下图所示:


之后,我们要为ssh生成一个密匙,用于构建连接,输入以下命令:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

密匙生成完毕,如下图所示:


最后,还要输入如下代码,为密匙授权:

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

如下图所示,这一步成功之后是没有任何提示信息的:


因此,我们再输入如下命令,查看ssh是否安装成功:

ssh localhost

ssh成功安装会显示如下的信息:


至此,Hadoop的前置环境安装完毕。可以正式安装Hadoop了。

四、Hadoop0.20.2的安装

1、将下载的hadoop-0.20.2.tar.gz拖到Linux中解压,得到一个hadoop-0.20.2文件夹。


2、先对里面的conf目录的部分文件进行修改,需要修改的文件如下图所示:


(1)首先是hadoop-env.sh文件的修改:


如上图,先将第9行中表示JDK,前面的#除去,再于后面指明Linux中jdk的位置。

这个位置可以在终端利用如下的命令:

$JAVA_HOME

如下图地查出,当然前提是你成功在Linux中配置Java:


(2)core-site.xml、hdfs-site.xml、mapred-site.xml

类似的,需要修改的xml文件一开始都是如下的样式,在configuration中留下的一大片空白让你填写:


不填写Hadoop还真启动不了。

首先是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>fs.default.name</name>
		<value>hdfs://localhost:9000</value>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/pc/hadoop-0.20.2/tmp/hadoop-${user.name}</value>
	</property>
</configuration>

其中这里,临时文件的位置,不配置的话,会在启动时产生的日志文件,产生如下的错误:

org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.

org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.

原因就是hadoop在Linux对系统的tmp文件没有权限什么的,反正你指定一个在主文件目录下子目录给它就没有一个问题了。

上述的代码,文件夹hadoop后接一个当前用户的用户名。用于标识不同用户的临时文件。届时,编译成功之后,tmp目录下就会产生不同的文件夹。如我当前的Linux的用户名是pc,则产生如下的文件夹:


之后是hdfs-site.xml,标识此乃单机模式,先按单节点模式打开Hadoop吧,以后根据自己程序的需要,再回来修改:

<?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>
</configuration>
最后是组件mapreduce的配置文件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>localhost:9001</value>
	</property>
</configuration>

3、格式化Hadoop

至此,Hadoop配置完毕,我们需要对Hadoop的文件夹进行所谓的“格式化”,这区别于清除所有磁盘数据的“格式化”,完全不同的概念,就大概相当于将上述的配置应用的Hadoop而已。

先在终端中,通过命令进入Hadoop下的bin文件夹:

cd /home/pc/hadoop-0.20.2/bin

再通过如下的命令,以-format参数运行hadoop下的namenode类,用sudo也行,不用sudo也可以的。

./hadoop namenode -format

运行成功如下图所示:


这里,有些资料非常坑爹,如果你在Hadoop0.20.2格式化这一步,出现如上图的“错误:找不到或无法加载主类 NameNode”那么完全就不是什么问题,就是这些资料将这个NameNode的大小写写错了,用vi或者gedit来看Hadoop这个可执行文件,你会发现里面根本没有NameNode,就只有namenode,核心问题是系统区分大小写的,自然找不到这个类了!至少在Hadoop0.20.2中就有namenode这个东东,也正是这个东东。

4、打开Hadoop

这是大功告成的一步了,最后同在这个bin目录下,通过如下的命令打开Hadoop服务器

./start-all.sh

执行成功如下图所示,提示已经成功开始namenode、datanode、secondarynamenode、jobtracker、tasktracker,同时这些文件写入的Hadoop0.20.2的log文件夹中


此后,在Hadoop的运行过程中,无论出错与否还是什么的,都不会将内容打印都控制台,而是直接输出的log文件夹各个文件夹中,具体如下图所示:


打开Linux自带的野狐禅浏览器访问http://localhost:50030,看是否能看到如下网页,证明Mapreduce组件打开成功了:


再有就是最关键的namenode组件,也就是Hadoop的核心,用浏览器访问:http://loaclhost:50070看是否能够看到如下的网页,证明整个Hadoop运行成功了:


这里补充一句,利用如下命令,也就是在Hadoop0.20.2下的bin节点访问stop-all.sh可以关闭Hadoop服务器。

./stop-all.sh

五、连通Linux虚拟机与Windows主机

类似与《【Linux】用Winscp远程访问无图形界面的Linux系统》(点击打开链接)连同虚拟机与主机。

在虚拟机中通过如下的命令,查出当前虚拟机所在的内网IP,

-ifconfig

比如此处,我的Linux所在的内网IP是:192.168.230.129


那么你就在Windows下打开一个IE,输入http://192.168.230.129:50070,如果你可以看到如下的画面,证明可以在Windows下访问虚拟机下的Hadoop了。


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值