一、实验目的

了解Hadoop的MapeReduce工作原理

二、实验内容

实现基于单机的伪分布式运行模拟

三、实验需要准备的软件和源

1、Jdk1.6以上 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2、Cygwin       下载地址:http://www.cygwin.com/

3、稳定版hadoop  下载地址:http://hadoop.apache.org/common/releases.html#Download

四、实验步骤

1、了解Hadoop工作机制

a、Hadoop整体框架运行机制介绍

请参见http://hi.baidu.com/wongxuelei/blog/item/c1642050cfb56d481138c2fd.html

b、Hadoop中MapReduce部分执行流程

请参见http://www.blogjava.net/shenh062326/archive/2011/01/14/342959.html

c、Hadoop在线中文技术文档

请参见http://hadoop.apache.org/common/docs/r0.18.2/cn/

个人意见:

a和b说的非常详细,刚入门可以大体了解Hadoop的HDFS和MapeReduce工作框架,等做完实验后再回过头来看这个会更清楚;c上有实例的说明和代码。

2、安装JDK到本地机器

安装目录最好不要有空格(如果有在配置Hadoop的JAVA_HOME时有点麻烦,下面会具体介绍)

3、安装Cygwin

请参见《Hadoop开发者入门》第11页 ——>在Windows上安装Hadoop教程

个人意见:

a、注意选择上面说的需在Cygwin中安装的包;

b、上面说到的http://www.cygwin.cn好像链接不上了,目前内陆最快的是源有

http://mirrors.163.com/cygwin/  http://mirrors.sohu.com/cygwin/ 会到30 k/s左右,其他的速度一般只有3~5 k/s;

c、如果没装成功,最好运行regedit.exe进入注册表,删除Cygwin文件,目录所在位置如图1;

d、环境变量配置仅需把平时我们陪JDK的方法配好,Cygwin仅需把bin所在目录加入,usr下的不用配;

e、安装好sshd后,该服务可以在装好的Cygwin中输入net start sshd命令启动。

图1 、Cygwin所在注册表位置

4、安装Hadoop

a、下载Hadoop的稳定版本,我选择的是hadoop-0.18.3.tar.gz(最新版本不太好用),然后解压到任意盘下;

b、配置Hadoop用于在单机环境上运行的配置文件在最后,来源http://hi.baidu.com/shirdrn/blog/item/33c762fecf9811375c600892.html

注意事项:

a、在配置完JAVA_HOME后,如果路径有空格,运行$ bin/hadoop namenode -format命令也可能会出错,最好的办法是将Windows下的JDK映射到Cygwin中,命令如下:

LN  -s  /cygdrive/c/Program\ Files/Java/<jre name>  /usr/local/<jre name>

其中

/cygdrive/c/Program\ Files/Java/<jre name>表示在Windows中的JDK路径,

/usr/local/<jre name>表示你想映射到的Cygwin路径。

然后在把JAVA_HOME配置成 export  JAVA_HOME="/usr/local/<jre name>"

b、运行“ $ bin/hadoop dfs -put ./input input”命令时可能会出现让你把hadoop-site.xml中的“localhost:9000”改成“ hdfs:\\localhost:9000”的问题。未解决,据网上了解说是因为单机运行的问题。

来源http://hi.baidu.com/shirdrn/blog/item/33c762fecf9811375c600892.html

首先进行Hadoop配置:

1、conf/hadoop-env.sh文件中最基本需要指定JAVA_HOME,例如我的如下:

export JAVA_HOME="D:\Program Files\Java\jdk1.6.0_07"

如果路径中存在空格,需要使用双引号。

2、只需要修改conf/hadoop-site.xml文件即可,默认情况下,hadoop-site.xml并没有被配置,如果是基于单机运行,就会按照hadoop-default.xml中的基本配置选项执行任务。

将hadoop-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>localhost:9000</value>
</property>
<property>
    <name>mapred.job.tracker</name>
    <value>localhost:9001</value>
</property>
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
</configuration>

实现过程

1、认证配置

启动cygwin,同时使用下面的命令启动ssh:

$ net start sshd

如图所示:

接着,需要对身份加密认证这一部分进行配置,这也是非常关键的,因为基于分布式的多个Datanode结点需要向Namenode提供任务执行报告信息,如果每次访问Namenode结点都需要密码验证的话就麻烦了,当然我要说的就是基于无密码认证的方式的配置,可以参考我的其他文章。

生成RSA公钥的命令如下:

$ ssh-keygen

生成过程如图所示:

上面执行到如下步骤时需要进行设置:

Enter file in which to save the key (/home/SHIYANJUN/.ssh/id_rsa):

直接按回车键即可,按照默认的选项将生成的RSA公钥保存在/home/SHIYANJUN/.ssh/id_rsa文件中,以便结点之间进行通讯认证。

继续执行,又会提示进行输入选择密码短语passphrase,在如下这里:

Enter passphrase (empty for no passphrase):

直接按回车键,而且一定要这么做,因为空密码短语就会在后面执行过程中免去结点之间通讯进行的认证,直接通过RSA公钥(事实上,我们使用的是DSA认证,当然RSA也可以进行认证,继续看后面)认证。

RSA公钥主要是对结点之间的通讯信息加密的。如果RSA公钥生成过程如上图,说明正确生成了RSA公钥。

接着生成DSA公钥,使用如下命令:

$ ssh-keygen -t dsa

生成过程与前面的RSA类似,如图所示:

然后,需要将DSA公钥加入到公钥授权文件authorized_keys中,使用如下命令:

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

如图所示,没有任何信息输出:

到此,就可以进行Hadoop的运行工作了。

2、Hadoop处理的数据文件准备

我使用的是hadoop-0.16.4版本,直接拷贝到G:\根目录下面,同时,我的cygwin直接安装在G:\Cygwin里面。

在目录G:\hadoop-0.16.4中创建一个input目录,里面准备几个TXT文件,我准备了7个,文件中内容就是使用空格分隔的多个英文单词,因为是运行WordCount这个例子,后面可以看到我存入了多少内容。

3、运行过程

下面,切换到G:\hadoop-0.16.4目录下面

$ cd http://www.cnblogs.com/cygdrive/g/hadoop-0.16.4

其中通过cygdrive(位于Cygwin根目录中)可以直接映射到Windows下的各个逻辑磁盘分区中。

在执行任务中,使用HDFS,即Hadoop的分布式文件系统,因此这时要做的就是格式化这个文件系统,使用下面命令可以完成:

$ bin/hadoop namenode -format

格式化过程如图所示:

此时,应该启动Namenode、Datanode、SecondaryNamenode、JobTracer,使用这个命令启动:

$ bin/start-all.sh

启动过程如图所示:

如果你没有配置前面ssh的无密码认证,或者配置了但是输入了密码短语,那么到这里就会每启动一个进程就提示输入密码,试想,如果有N多进程的话,那岂不是要命了。

然后,需要把上面我们在本地的input目录中准备的文件复制到HDFS中的input目录中,以便在分布式文件系统管理这些待处理的数据文件,使用下面命令:

$ bin/hadoop dfs -put ./input input

执行上述命令如果没有信息输出就复制成功。

现在,才可以执行Hadoop自带的WordCount列子了,使用下面命令开始提交任务,进入运行:

$ bin/hadoop jar hadoop-0.16.4-examples.jar wordcount input output

最后面两个参数分别为数据输入目录和数据处理完成后的输出目录,这里,不能在你的G:\hadoop-0.16.4目录中存在output这个目录,否则会报错的。

运行过程如图所示:

通过上图,可以看出在运行一个Job的过程中,WordCount工具执行任务的进度情况,非常详细。

最后查看执行任务后,处理数据的结果,使用的命令行如下所示:

$ bin/hadoop dfs -cat output/part-00000

输出结果如图所示:

最后,停止Hadoop进程,使用如下命令:

$ bin/stop-all.sh

如图所示:

以上就是全部的过程了。

5、hadoop自带example的代码和分析

请参见Hadoop MapReduce教程

http://www.cnblogs.com/panderen/archive/2011/05/17/2048651.html

Hadoop入门实验的更多相关文章

  1. Hadoop入门学习笔记---part4

    紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...

  2. Hadoop入门学习笔记---part3

    2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...

  3. Hadoop入门学习笔记---part2

    在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...

  4. Hadoop入门学习笔记---part1

    随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...

  5. 初识Hadoop入门介绍

    初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...

  6. 汇编语言程序入门实验一:在dos下对用户输入作出应答

    汇编语言程序入门实验一:在dos下对用户输入作出应答 1,背景 成功预言了今天要上计算机操作系统上机实验课,昨天预习后,今天的两个上机实验做得很成功.但是也有一些问题.问题1:学校的系统目前是wind ...

  7. 汇编语言程序入门实验二:在dos下建立子目录操作

    汇编语言程序入门实验二:在dos下建立子目录操作 1,背景 在读此文,并读懂前,建议读者先阅读这两篇博客 1,在dos环境下汇编语言程序设计入门(输出hello world)和masm32的下载.安装 ...

  8. 大数据:Hadoop入门

    大数据:Hadoop入门 一:什么是大数据 什么是大数据: (1.)大数据是指在一定时间内无法用常规软件对其内容进行抓取,管理和处理的数据集合,简而言之就是数据量非常大,大到无法用常规工具进行处理,如 ...

  9. 一.hadoop入门须知

    目录: 1.hadoop入门须知 2.hadoop环境搭建 3.hadoop mapreduce之WordCount例子 4.idea本地调试hadoop程序 5.hadoop 从mysql中读取数据 ...

随机推荐

  1. 【50.26%】【hdu 5907】Find Q

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others) 问题描述 Byteasar迷恋上了 ...

  2. js 鼠标坐标

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 【34.25%】【BZOJ 2648】SJY摆棋子

    Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 2718  Solved: 931 [Submit][Status][Discuss] Descrip ...

  4. 华为上机试题(java)

    一.题目描述:通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉.比如字符串“abacacde”过滤结果为“abcde”. ...

  5. [React] Render Basic SVG Components in React

    React loves svg just as much as it loves html. In this lesson we cover how simple it is to make SVG ...

  6. 剑指Offer面试题10(Java版):二进制中的1的个数

    题目:请实现一个函数,输入一个整数.输出该数二进制表示中1的个数. 比如把9表示成二进制是1001,有2位是1.因此假设输入9.该函数输出2. 1.可能引起死循环的解法 这是一道非常主要的考察二进制和 ...

  7. BZOJ 2783 树 - 树上倍增 + 二分

    传送门 分析: 对每个点都进行一次二分:将该点作为链的底端,二分链顶端所在的深度,然后倍增找到此点,通过前缀和相减求出链的权值,并更新l,r. code #include<bits/stdc++ ...

  8. 【9309】求Y=X1/3

    Time Limit: 1 second Memory Limit: 2 MB 问题描述 求Y=X1/3次方的值.X由键盘输入(x不等于0,在整型范围内).利用下列迭代公式计算: yn + 1=2/3 ...

  9. 【codeforces 782D】 Innokenty and a Football League

    [题目链接]:http://codeforces.com/contest/782 [题意] 每个队名有两种选择, 然后第一个选择队名相同的那些队只能选第二种; 让你安排队名 [题解] 首先全都选成第一 ...

  10. Swagger 专题

    随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染.前后端分离的形态,而且前端和后端在各自的技术道路上越走越远. 前端和后端的唯一联系,变成了API接口:API文档成了前后端 ...