用户登录
用户注册

分享至

hdfs原理wordcount

  • 作者: 湾仔大宇哥
  • 来源: 51数据库
  • 2020-04-21

1.如何运行自带wordcount

1.找到examples例子

我们需要找打这个例子的位置:首先需要找到你的hadoop文件夹,然后依照下面路径:

/hadoop/share/hadoop/mapreduce会看到如下图:

hadoop-mapreduce-examples-2.2.0.jar

第二步:

我们需要需要做一下运行需要的工作,比如输入输出路径,上传什么文件等。

1.先在HDFS创建几个数据目录:

hadoop fs -mkdir -p /data/wordcount

hadoop fs -mkdir -p /output/

2.目录/data/wordcount用来存放Hadoop自带的WordCount例子的数据文件,运行这个MapReduce任务的结果输出到/output/wordcount目录中。

首先新建文件inputWord:

vi /usr/inputWord

新建完毕,查看内容:

cat /usr/inputWord

将本地文件上传到HDFS中:

hadoop fs -put /usr/inputWord /data/wordcount/

可以查看上传后的文件情况,执行如下命令:

hadoop fs -ls /data/wordcount

可以看到上传到HDFS中的文件。

通过命令

hadoop fs -text /data/wordcount/inputWord

看到如下内容:

下面,运行WordCount例子,执行如下命令:

hadoop jar /usr/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /data/wordcount /output/wordcount

可以看到控制台输出程序运行的信息

查看结果,执行如下命令:

hadoop fs -text /output/wordcount/part-r-00000

结果数据示例如下:

登录到Web控制台,访问链接http.//master:8088/可以看到任务记录情况。

2.如何运行自带wordcount

1、在linux系统中,所在目录“/home/kcm”下创建一个文件input

[ubuntu@701~]$ mkdir input

2.在文件夹input中创建两个文本文件file1.txt和file2.txt,file1.txt中内容是“hello word”,file2.txt中内容是“hello hadoop”、“hello mapreduce”(分两行)。

[ubuntu@701~]$ cd input

[ubuntu@701~]$ vi file1.txt(编辑文件并保存)

[ubuntu@701~]$ vi file2.txt(编辑文件并保存)

[ubuntu@701~]$ ls -l /home/kcm/input

file1.txt file2.txt

显示文件内容可用:

[ubuntu@701~]$ cat/home/kcm/input/file1.txt

hello word

[ubuntu@701~]$ cat /home/kcm/input/file2.txt

hello mapreduce

hello hadoop

3.在HDFS上创建输入文件夹wc_input,并将本地文件夹input中的两个文本文件上传到集群的wc_input下

[ubuntu@701~]$ hadoop fs -mkdir wc_input

[ubuntu@701~]$ hadoop fs -put/home/kcm/input/file* wc_input

查看wc_input中的文件:

[ubuntu@701~]$ /hadoop fs -ls wc_input

Found 2 items

-rw-r--r-- 1 root supergroup 11 2014-03-13 01:19 /user/hadoop/wc_input/file1.txt

-rw-r--r-- 1 root supergroup 29 2014-03-13 01:19 /user/hadoop/wc_input/file2.txt

4.首先,在window下将wordcount进行打包,我们这里把它打包成wordcount.jar;然后,将wordcount.jar拷贝到linux系统中,存放的目录自己决定即可。我们这里存放到/home/kcm目录下面。

5.运行wordcount.jar包(转到该jar包存放的目录下):

[ubuntu@701~]$ hadoop jar wordcount.jar /user/hadoop/wc_input /user/hadoop/output

3.hadoop 运行wordcount 需要多久

hadoop fs -mkdir /input

在HDFS中创建input文件目录

hadoop fs -put LICENSE.txt /input

我当前在hadoop的目录下,有个LICENSE.txt的文件,把它放到hdfs的input目录下面

hadoop fs -ls /input

查看文件是否正确传入到/input目录下

hadoop fs -cat /input/LICENSE.txt查看文件内容

执行:hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output

或者绝对路径:

hadoop jar /home/yy/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output

按我前面的配置会卡在mapreduce.Job: Running job

在etc/hadoop/mapred-site.xml中,如果配置

mapreduce.framework.nameyarn

则使用yarn来进行计算,那么必须启动nodemanager,

如果不使用yarn,进行mapreduce.job.tracker配置,也可以用MRv2来执行job,这样就不需要启动nodemanager:

mapreduce.job.trackerhdfs://192.168.1.51:8001true

修改后可以正常运行,看到这个就成功了

hadoop fs -ls /output

查看输出结果的目录

hadoop fs -cat /output/part-r-00000

查看输出结果

结果就是对LICENSE.txt文件中单词进行计数统计了,到这就运行完成了。

这时你就可以把这个example导入了eclipse中去试试啦。

4.在hadoop环境下运行一个wordcount例子

首先进入hadoop安装目录下,新建一个hdfs下的目录,./bin/hadoop fs -mkdir /input,如果你有了,就不必了。

接着上传你要进行wordcount的文件到hdfs中,比如这个文件是test.txt,命令是./bin/hadoop fs -put test.txt /input/。然后执行./bin/hadoop jar hadoop-0.20.2-examples.jar wordcount /input /output,然后等执行完,在hdsf下的/output路径下找到结果就好了。

你说的权限问题,你执行 ls -l . 查看是不是你文件的所有者或者群组不一致了,可以用命令chown 或者chgrp来改动。

5.如何写wordcount在hadoop2.7.1中运行

1. 创建本地的示例数据文件:

依次进入【Home】-【hadoop】-【hadoop-1.2.1】创建一个文件夹file用来存储本地原始数据。

并在这个目录下创建2个文件分别命名为【myTest1.txt】和【myTest2.txt】或者你想要的任何文件名。

分别在这2个文件中输入下列示例语句:

2. 在HDFS上创建输入文件夹

呼出终端,输入下面指令:

bin/hadoop fs -mkdir hdfsInput

执行这个命令时可能会提示类似安全的问题,如果提示了,请使用

bin/hadoop dfsadmin -safemode leave

来退出安全模式。

当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结 束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入 安全模式。

意思是在HDFS远程创建一个输入目录,我们以后的文件需要上载到这个目录里面才能执行。

3. 上传本地file中文件到集群的hdfsInput目录下

在终端依次输入下面指令:

cd hadoop-1.2.1

bin/hadoop fs -put file/myTest*.txt hdfsInput

4. 运行例子:

在终端输入下面指令:

bin/hadoop jar hadoop-examples-1.2.1.jar wordcount hdfsInput hdfsOutput

注意,这里的示例程序是1.2.1版本的,可能每个机器有所不一致,那么请用*通配符代替版本号

bin/hadoop jar hadoop-examples-*.jar wordcount hdfsInput hdfsOutput

应该出现下面结果:

Hadoop命令会启动一个JVM来运行这个MapReduce程序,并自动获得Hadoop的配置,同时把类的路径(及其依赖关系)加入到Hadoop的库中。以上就是Hadoop Job的运行记录,从这里可以看到,这个Job被赋予了一个ID号:job_201202292213_0002,而且得知输入文件有两个(Total input paths to process : 2),同时还可以了解map的输入输出记录(record数及字节数),以及reduce输入输出记录。

查看HDFS上hdfsOutput目录内容:

在终端输入下面指令:

bin/hadoop fs -ls hdfsOutput

从上图中知道生成了三个文件,我们的结果在"part-r-00000"中。

使用下面指令查看结果输出文件内容

bin/hadoop fs -cat output/part-r-00000

6.hadoop 2.6.0 wordcount 例子在哪

1,在hadoop包中的hadoop-2.6.0->share->hadoop->mapreduce中的hadoop-mapreduce-examples 2.6.0.jar

2,运行命令hadoop jar share/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input/ /output/wordcount就可以了,其中的input和output是存放计算文件的文件夹

转载请注明出处51数据库 » hdfs原理wordcount

软件
前端设计
程序设计
Java相关