本节接着上节继续和大家一起学习一下Hadoop安装与使用,内容主要包括部署hadoop,启动hadoop,hadoop文件系统操作和使用hadoop来做计算等内容,希望通过本节的介绍大就能够掌握Hadoop安装和使用方法。在为大家讲解之前先看一下Hadoop的概念。
Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。
简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。
Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streamingaccess)文件系统中的数据。下面是Hadoop安装使用步骤。
1.部署hadoop
前面讲的这么多Hadoop的环境变量和配置文件都是在dbrg-1这台机器上的,现在需要将hadoop部署到其他的机器上,保证目录结构一致。
wukong@wukong1:~/hadoop-config$scp-r/home/wukong/hadoop-0.13.0wukong2:/home/wukong
wukong@wukong1:~/hadoop-config$scp-r/home/wukong/hadoop-0.13.0wukong3:/home/wukong
wukong@wukong1:~/hadoop-config$scp-r/home/wukong/hadoop-configwukong2:/home/wukong
wukong@wukong1:~/hadoop-config$scp-r/home/wukong/hadoop-configwukong3:/home/wukong
至此,可以说,Hadoop已经在各个机器上部署完毕了
如果要新加入节点的话,新的节点要重复前面2,3步,本地安装好hadoop后,从其它节点把hadoop-config复制过来,还要修改其它所有机器的/ets/hosts和.ssh/authorized_keys,加入对新节点的识别。
2.启动hadoop
Hadoop安装完成之后就可以启动了,启动之前,我们先要格式化namenode,先进入~/hadoop目录,执行下面的命令
wukong@wukong1:~/hadoop$bin/hadoopnamenode-format
不出意外,应该会提示格式化成功。如果不成功,就去hadoop/logs/目录下去查看日志文件
下面就该正式启动hadoop啦,在bin/下面有很多启动脚本,可以根据自己的需要来启动。
*start-all.sh启动所有的Hadoop守护。包括namenode,datanode,jobtracker,tasktrack
*stop-all.sh停止所有的Hadoop
*start-mapred.sh启动Map/Reduce守护。包括Jobtracker和Tasktrack
*stop-mapred.sh停止Map/Reduce守护
*start-dfs.sh启动HadoopDFS守护.Namenode和Datanode
*stop-dfs.sh停止DFS守护
在这里,简单启动所有守护
wukong@wukong1:~/hadoop$$bin/start-all.sh
同样,如果要停止hadoop,则
wukong@wukong1:~/hadoop$bin/stop-all.sh
3.hadoop文件系统操作
wukong@wukong1:~/hadoop$bin/hadoopdfsadmin-report查看当前文件系统状态
Totalrawbytes:107354136576(99.98GB)
Usedrawbytes:8215538156(7.65GB)
%used:7.65%
Totaleffectivebytes:143160206(136.52MB)
Effectivereplicationmultiplier:57.38702384935098
-------------------------------------------------
Datanodesavailable:2
Name:192.168.100.3:50010
State:InService
Totalrawbytes:39395708928(36.69GB)
Usedrawbytes:3089165011(2.87GB)
%used:7.84%
Lastcontact:TueJul1013:09:24CST2007
Name:192.168.100.2:50010
State:InService
Totalrawbytes:67958427648(63.29GB)
Usedrawbytes:5126373145(4.77GB)
%used:7.54%
Lastcontact:TueJul1013:09:25CST2007
说明wukong2和wukong3作为datanode节点,总的容量,有效数据大小等。
4.使用hadoop来做计算
我们来看一下Hadoop安装完成以后如何使用它来做计算。hadoop基于mapreduce模型进行计算。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同java程序员可以不考虑内存泄露一样,MapReduce的run-time系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的失效,并且管理机器之间的通讯请求。这样的模式允许程序员可以不需要有什么并发处理或者分布式系统的经验,就可以处理超大的分布式系统得资源。
hadoop自带了一些测试用的例子:
wukong@wukong1:~/hadoop$jar-tfhadoop-0.13.0-examples.jar
然后可以看到有如下几个:grep,wordcount,sort等
我们在文件系统上新建一个文件夹:grepin
wukong@wukong1:~/hadoop$./bin/hadoopdfs-mkdirgrepin
在本地创建一个文件,test.txt
wukong@wukong1:~/hadoop$cat/tmp/tmp_miao/test.txt
test
传到文件系统上去
wukong@wukong1:~/hadoop$./bin/hadoopdfs-put/tmp/tmp_miao/test.txtgrepin
然后wukong@wukong1:~/hadoop$./bin/hadoopdfs-lsrgrepin,可以看到:
/user/wukong/grepin/test.txt<r1>50
说明这个文件已经上传了。
然后就可以跑grep了:
$./bin/hadoopjarhadoop-0.13.0-examples.jargrepgrepingrepouttest
输入文件在grepin中,计算结果写入grepout中,grepout之前要不存在,不能把结果写入已存在的文件中。
grepout中的文件有:(好像是指定几个reducertask,会生成几个结果文件,在hadoop-site.xml中通过mapred.reduce.tasks来指定reducertask的数量)
wukong@wukong1:~/hadoop$./bin/hadoopdfs-lsrgrepout
/user/wukong/grepout/part-00000<r1>8
/user/wukong/grepout/part-00001<r1>0
你也可以测试其它的例子。本节关于Hadoop安装与使用内容就介绍到这里。
【编辑推荐】