hadoop分布式计算demo实践

          真正的分布式计算实验需要好多台服务器,因此我暂时只在本机做了1和2两种模式,这里做个笔记,发表是最好 的记忆嘛。 apahce的网站上有hadoop的安装文档,非分布式计算安装文档说明:http://hadoop.apache.org/common/docs/current/single_node_setup.html

hadoop的运行模式有三种:

1 单节点模式

2 伪分布式模式

3 分布式模式

关于hadoop配置文件的使用说明和常用命令,这里有篇文章,是中文的哦:

http://www.iteye.com/topic/284849

 

关于平台的支持

hadoop对linux支持得非常好,但是对于win32,按照apache的说法,可以是开发环境,对于生产环境没有做很好的测试,因此我也是基于linux系统来做实践的,我装的是ubantu。


必须准备的软件

1:jdk1.6以上(包括1.6),必须的

2:ssh,如果没有安装,在ubantu环境下,只需要输入ssh,系统会提示你安装。或者直接执行以下两行命令

sudo apt-get install ssh
sudo apt-get install rsync

3:hadoop发行包,到http://hadoop.apache.org去下载,我下的是hadoop-0.20.2,下载到本地的文件是hadoop-0.20.2.tar.gz,我解压的目录是/home/james/devlopment/hadoop-0.20.2。


单机模式启动

在hadoop根目录依次执行以下命令

mkdir input
cp conf/*.xml input

bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'

cat output/*

上面这几个命令的意思是:

第一行,在hadoop根目录新建一个input目录

第二行,将conf目录下的所有xml文件复制到刚才新建的input目录

第三行,执行hadoop命令,统计input目录包含正则表达式'dfs[a-z.]+'匹配的字符串数量,并将结果输出到output目录

第四行,打印出统计结果

单机模式不可能用在实际的分布式环境中,它一般被用来检验MapReduce程序是否有问题。这个比较简单,就不多说了。

执行单机模式的时候,必须保证hadoop的配置文件没有被修改过。


伪分布式启动

所谓伪分布式,其实是模拟分布式。在实际的分布式计算环境中,每个节点都是一台独立服务器,在伪分布式里,只是启动了多个java进程,模拟了几个必须的节点。

在hadoop根目录

修改conf/core-site.xml ,加入以下信息到<configuration>标签对里面:

<property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property>




加完之后如下:

<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>




修改conf/hdfs-site.xml为如下:

<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>




修改conf/mapred-site.xml为如下:

<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>





设置没有密码验证的ssh

先测试下,在本机命令行下执行 ssh localhost,如果要求你输入密码,那就要设置没有密码验证的ssh,依次输入如下命令

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

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


启动

先格式化hdfs文件系统

bin/hadoop namenode -format

再启动hadoop进程

bin/start-all.sh

如果配置没什么问题,那么hadoop就启动了,启动过程中,有一些信息打印出来,告诉你日志的输出目录。下面做个测试,执行以下命令

bin/hadoop fs -put conf inpu

这个命令的意思是将当前目录下的conf目录的内容拷贝到hdfs文件系统的input目录

再执行这个命令

bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'

再执行这个命令

bin/hadoop fs -get output output     这句意思是将hdfs文件系统的output目录你内容拷贝到本地的output目录

cat output/*    打印本地output目录内容,其实就是打印执行结果拉。

或者直接在hdfs文件系统上查看:

bin/hadoop fs -cat output/*


web界面

下面是默认地址和端口

NameNode     http://localhost:50070/

JobTracker     http://localhost:50030/

NameNode界面,主要显示以下信息:

启动时间

编译时间

版本

HDFS文件目录结构

NameNode日志信息

分布式集群节点信息,如果死亡的节点,活动的节点,HDFS空间大小和使用率以及存储状态


JobTracker界面,其实是一个MapReduce管理界面,里面描述了以下信息

分布式计算的任务调度信息

集群分布式计算信息

如 正在运行的计算

已经完成的计算

失败的计算

本地的日志

你可能感兴趣的:(mapreduce,hadoop,linux,正则表达式,ssh)