Hadoop wordcount实例
Hadoop环境搭建成功后,运行一下wordcount实例
1、终端切换到root:su-
2、启动HDFS,如果是第一次用的话,先格式化namenode: hdfs namenode -format(格式化一次就行,总格式化会导致集群id不一致,会报错,不要问我咋知道的😂)
3、在HDFS创建目录:/data/wordcount存放本地上传的文件,/output目录存放MapReduce任务的结果输出文件。
4、在本地建一个文件,输入点单词,然后查看一下,目录自己安排
5、上传文件到hdfs中:/usr/inputone是本地目录,/data/wordcount/是hdfs的目录
上传以后再查看一下
6、可以看到具体内容:
7、以上已经传完了,现在就运行了。wordcount好像是hadoop自带的函数。outputone是输出的目录(上面我建了一个output,运行以后报错,可能是我之前测试的时候用过了,还没具体搞清楚为啥错,请教大佬)
8、查看结果,part-r-00000:MapReduce有相应的输出格式。默认情况下只有一个 Reduce,输出只有一个文件,默认文件名为 part-r-00000
新手上路,还在学习,有错误请指正!
遇到的问题以及解决方法:
1、错误:“jar is not exist or …”
原因:hadoop jar /usr/opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /data/wordcount /output目录不对
解决办法:
用winscp找到位置,直接copy目录就可,在Hadoop安装目录下,别找错啦!
2、错误:HADOOP/HDFS ls: ‘.’: No such file or directory:没有这样的文件或目录
原因:-ls默认目录是在hdfs文件系统的/user/用户名,但是你的hdfs系统内没有这个文件夹,所以会显示No such file or directory
解决办法:
自己创建:$ hdfs dfsadmin -safemode leave
$ hdfs fs -mkdir -p /user
查看文件和目录:$ hdfs fs -ls /
3、问题:WARN hdfs.DFSClient: DataStreamer Exceptionorg.apache.hadoop.ipc.RemoteException上传文件失败
解决办法:
- 1、先查看和关闭防火墙: systemctl status firewalld systemctl stop
firewalld.service systemctl disable firewalld.service
这个不好使的话,看第二步
-
2、查看磁盘使用情况 如果查出来的结果,磁盘使用空间都是0.,那就是这个问题了
-
hadoop dfsadmin -report
造成这个问题的原因可能是使用hadoop namenode -format格式化多次造成clusterID不一致 -
解决:
1.停止集群:stop-all.sh
2.删除在hdfs中配置的tmp目录(即在core-site.xml中配置的hadoop.tmp.dir对应文件)下面的所有数据: rm -rf /opt/hadoop/hadoop-2.8.5/tmp/*(注意这个目录不是hadoop安装目录下的,这个是指定的,注意区分)
- 3.重新格式化:hadoop namenode -format
4.重启:start-all.sh
5.再查:hadoop dfsadmin -report
如果还是0的话,那就看第三步。
- 3、
用winscp软件,连接成功以后直接在root下,在hadoop安装目录下,找到tmp、data、name目录,把她们仨中的version打开,把clusterID的值都改成一样的!
这个改完再查的时候应该就好使了,结果是这样的:
这时候再传文件就可以了。
新手上路,还有一些小问题没写出来,欢迎交流,有错误请指正。