hadoop快速入门,初步感受分布式文件系统
很抱歉,本篇文章有误,今(20100225)天已经修正。(请注意官方中文文档已经落后了,请尽量看英文文档)
一、准备工作:
Hadoop分布式文件系统,架构和设计:http://hadoop.apache.org/common/docs/r0.20.2/cn/hdfs_design.html
Hadoop快速入门:http://hadoop.apache.org/common/docs/r0.20.2/cn/quickstart.html
SSH认证登录(可后看):http://www.ibm.com/developerworks/cn/linux/security/openssh/part1/index.html
二、下面实际操作,初步感受分布式文件系统:1、ssh安装(linux:openssh,windwos:要先安装Cygwin),略过
2、下载Hadoop的发行版,从Apache的某个镜像服务器上下载最近的稳定发行版:
http://hadoop.apache.org/core/releases.html,解压所下载的Hadoop发行版。
$wgethttp://labs.renren.com/apache-mirror/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz
$tar-zxvfhadoop-0.20.2.tar.gz
$cdhadoop-0.20.2
3、编辑conf/hadoop-env.sh文件,至少需要将JAVA_HOME设置为Java安装根路径
4、稍微熟悉下使用文档
$bin/hadoop//将会显示hadoop脚本的使用文档。
现在你可以用以下三种支持的模式中的一种启动Hadoop集群:
*单机模式
*伪分布式模式
*完全分布式模式
5、单机模式的操作方法
默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。
下面的实例将已解压的conf目录拷贝作为输入,查找并显示匹配给定正则表达式的条目。输出写入到指定的output
目录。
$mkdirinput
$cpconf/*.xmlinput
我们看看下面的查找:
$egrepdfs[a-z.]+input/*
输出:
input/hadoop-policy.xml:dfsadminandmradmincommandstorefreshthesecuritypolicyin-effect.
运行hadoop命令:
$bin/hadoopjarhadoop-0.20.2-examples.jargrepinputoutput'dfs[a-z.]+'
执行上面的命令,会有一些输出日志,随便看看,了解了解。
$catoutput/*
结果:
1dfsadmin
6、伪分布式模式的操作方法
Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。
6.1、配置(中文官方文档落后了,我上面的链接是中文文档,请自己转到英文文档看):conf/core-site.xml
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
conf/hdfs-site.xml
<configuration> <property> <name>dfs.name.dir</name> <value>/home/lighttpd/hadoopfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/home/lighttpd/hadoopfs/data</value> </property> <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>
6.2、免密码ssh设置(参考我的另外一篇文章:http://jiajun.iteye.com/blog/621309)
现在确认能否不输入口令就用ssh登录localhost:
$sshlocalhost
如果不输入口令就无法用ssh登陆localhost,执行下面的命令:
$ssh-keygen-tdsa
$cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys
6.3、格式化一个新的分布式文件系统
$bin/hadoopnamenode-format
注意看看输出日志哦,有助于理解。
6.4、启动Hadoop守护进程:
$bin/start-all.sh
如果你设置了ssh的RSA认证,就不用输入密码,不然就要输入三次密码登录
6.5、日志
Hadoop守护进程的日志写入到${HADOOP_LOG_DIR}目录(默认是${HADOOP_HOME}/logs).
6.6、浏览NameNode和JobTracker的网络接口,它们的地址默认为:
*NameNode-http://localhost:50070/
*JobTracker-http://localhost:50030/
浏览观察一下,会看懂甚至更好的理解一些东西。6.7、将输入文件拷贝到分布式文件系统:
$bin/hadoopfs-putconfinput//把本地的文件夹conf拷贝到分布式文件系统input文件夹
$bin/hadoopfs-lsinput//浏览分布式文件系统中的input文件
上面的命令是hadoop的,你可以输入下面命令,获取帮助
$bin/hadoopfs
6.8、运行发行版提供的示例程序:
$bin/hadoopjarhadoop-*-examples.jargrepinputoutput'dfs[a-z.]+'
查看输出文件:
$bin/hadoopfs-getoutputoutput//将输出文件从分布式文件系统拷贝到本地文件系统
$catoutput/*
或者,在分布式文件系统中查看:
$bin/hadoopfs-catoutput/*
6.9、你可以多试试bin/hadoopfs下的javaFsShell,和操作本地文件差不多,很快能熟悉。
6.10、最后,完成全部操作后,可以停止守护进程:
$bin/stop-all.sh
bin下面有很多shell脚本这时可以适当看看名称,猜个大概意思。
下面我会继续给大家一个完全分布式模式的操作方法,敬请稍候。