[大数据学习之路] Hadoop该怎样入门(二)
我们在第一节中详细介绍了该如何安装Hadoop及其配置细节。
接下来我们来看看如何运行第一个HelloWorld文件呢。
我们可以在命令行输入以下命令:
$mkdir input
$cd input
$echo "hello world">test1.txt
$echo "hello hadoop">test2.txt
$cd ..
$bin/hadoop dfs -put input in
$bin/hadoop jar build/hadoop-0.20.2-examples.jar wordcount in out
$bin/hadoop dfs -cat out/*
可以看到我们的运行结果,那这些命令都代表什么意思呢?
第1行,容易理解,我们在hadoop文件夹下建了一个input子文件夹;
第2行,进入input文件夹;
第3行,echo是指回显示,可以理解为print, 大于符(>)为重定向,正常echo是显示在屏幕上,而用了重定向后,即内容显示在了text1.txt文件里。那这句话意思是,创建一个test1.txt文件,其内容是"hello world"。 第4行类同;
第5行,回上一级目录
第6行,这里运行了一个hadoop命令, 参数为 dfs –put input in 意思是将input文件夹上传到hadoop文件系统中,并存于目录in中。
第7行,同样是hadoop命令,参数 jar XXX.jar wordcount in out 是指运行jar程序中wordcount类的程序,并传入参数 in out。 in 为输入目录 out 为输出结果目录,两个目录皆为hadoop文件系统中的目录,而并不是当前操作系统目录了。在第7行后,会看到屏幕在刷,是在计算。
第8行,cat是linux常用的命令,是将指定文件中的文本内容输出。 所以这里 cat out/* 是指把out文件夹下所有文件的文本内容输出,同时注意这里是dfs即是在hadoop文件系统中,且这个out正是第7步程序中输出的目录。所以输入该命令后,我们看到了上面的结果。
我们再来了解下还有哪些其他的文件操作命令,
bin/hadoop是一个批处理sh文件(与bat类似),运行时需要输入子命令。子命令列表如下:
这个简单的程序目的是什么,其实比较容易看出来了,就是统计每个文件中的单词出现的数量,并将结果合并后显示出来。
可能有人就想,有什么啊,这程序我们C#、java几行代码也就实现了,有什么特别的?的确,初看过程就是。但我们深入来看一下。Hadoop的框架最核心的设计就是:HDFS和MapReduce。
HDFS就是分布式数据存储,这就不一样了,也就是说我的这里需要统计的文件很多的话,可能就不存在一台机器上了,而且存在不同机器上,不需要我们人为控制,而是交给Hadoop自动完成,而我们,只需要统一的接口(bin/Hadoop dfs)来访问:
MapReduce当然就是负责计算咯,回头一想,的确这程序不简单,统计一个文件单词出现的频率容易,但时如果这些文件是分布在不同机器上,然后又需要将结果能很方便的合并起来,那就不是简单几行代码就能搞定的了。所以MapReduce就是来负责这一块的。后面我们会继续介绍一下MapReduce到底是怎么回事。
- 点赞
- 收藏
- 关注作者
评论(0)