上一节中成功安装了Hadoop,下面简单应用:Hadoop自带示例wordcount的运行。

目录

1. 开启Hadoop

2. 在/usr/local/Cellar/hadoop/3.2.1下创建本地file文件夹并创建file1.txt,查看创建成功

3.  在HDFS云端创建文件夹input,并将本地的file1.txt上传到input文件夹下。

4.  运行Hadoop 自带示例wordcount

5. 运行wordcount一直卡死


1. 开启Hadoop

cd /usr/local/Cellar/hadoop/3.2.1
sbin/start-dfs.sh

【警告】2019-10-23 22:06:17,626 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

    这是由于使用的hadoopSDK是在32位的机器上编译的,而本机系统是64位造成的,想解决此提示,可以在本机上重新编译hadoop的SDK,如果不想编译,有此提示也不妨碍正常功能的使用!

这个警告在成功安装Hadoop之后每一次运行都会出现,但具体不影响它的运行。有解决方法,在这里记录一下,下次解决。

 

2. 在/usr/local/Cellar/hadoop/3.2.1下创建本地file文件夹并创建file1.txt,查看创建成功

(我看了一下本地,这里我的hadoop路径是:/usr/local/Cellar/hadoop/3.2.1    大家注意每个人的路径并不一定相同

(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ mkdir file
(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ ls
INSTALL_RECEIPT.json	README.txt		libexec
LICENSE.txt		bin			my_wordcount.txt
NOTICE.txt		file			sbin
(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ cd file
(base) wangwenzhuodeMacBook-Air:file wangwenzhuo$ echo "hello word">file1.txt
(base) wangwenzhuodeMacBook-Air:file wangwenzhuo$ echo "hello hadoop">file2.txt
(base) wangwenzhuodeMacBook-Air:file wangwenzhuo$ ls
file1.txt	file2.txt

【几个常用的命令记录】

cd location     # 进入指定路径
                # 绝对路径:完整描述一个文件的位置,总是以斜杠 '/' 开头,如 /Users/michelle/Public
                # 相对路径:只描述一部分位置信息,从当前目录开始 如 Public/Drop Box 
                # 使用两个点(“..”)来代表父目录,如 cd ..甚至cd ../..
cd ~            # 返回root
cd -            # 返回上一层目录
ls              # 显示在上述路径下的文件目录
cat filename    # 显示该文件的内容
cat file1 file2 > file # 将几个文件合并为一个文件
mkdir  filename        # 新建文件夹
vim filename    # 编辑文件。这时terminal进入了文件编辑模式,想退出的话control+z

 3.  在HDFS云端创建文件夹input,并将本地的file1.txt上传到input文件夹下。

下面两步命令分别是:(1)创建文件夹 ,(2)上传文件 

(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ ./bin/hadoop fs -mkdir /input
(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ ./bin/hadoop fs -put -f ./file/file1.txt /input
# 注意在当前文件下的file需要加‘.’

win hadoop 本地库 运行hadoop自带的wordcount_hadoop

【记录】

1. file1.txt  的路径是 /usr/local/Cellar/hadoop/3.2.1/file

2. 同样注意第三条命令需要的是hadoop-mapreduce-examples-3.2.1.jar,不一定在我写的这个文件夹下,查询网上的资料发现不同系统不同版本的Hadoop导致文件的存放位置并不相同,需要自己手动查询,我的系统是Mac,该文件的位置是:

 /usr/local/Cellar/hadoop/3.2.1/libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar

 

4.  运行Hadoop 自带示例wordcount

(1)运行

(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ hadoop jar ./libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /input /output

 

win hadoop 本地库 运行hadoop自带的wordcount_hadoop_02

 

win hadoop 本地库 运行hadoop自带的wordcount_win hadoop 本地库_03

 

(2)查看程序运行结果

(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ hadoop fs -ls /output

win hadoop 本地库 运行hadoop自带的wordcount_hadoop_04

 (3)此命令查看每个单词的统计结果

(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ hadoop fs -cat /output/part-r-00000

win hadoop 本地库 运行hadoop自带的wordcount_win hadoop 本地库_05

5. 运行wordcount一直卡死

可能原因:
1、yarn-site.xml、mapred-site.xml配置错误,建议重新检查一下

2、太多任务在排队,建议:
1)用hadoop job -list查看正在运行的job
2)用hadoop job -kill <job Id>杀掉job

 

【error】 

couldn't find app application_1571624973107_0023 while processing FINISH_CONTAINERS event

 

【solve】

打开防火墙,且检查9000端口是否可用

(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ lsof -i:9000
COMMAND   PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    49169 wangwenzhuo  283u  IPv4 0x708fcd5c0d0932e1      0t0  TCP localhost:cslistener (LISTEN)
java    86607 wangwenzhuo  339u  IPv4 0x708fcd5c0e19f2e1      0t0  TCP 172.27.135.233:57691->192.168.1.101:cslistener (SYN_SENT)
java    86743 wangwenzhuo  282u  IPv4 0x708fcd5c0e19cce1      0t0  TCP 172.27.135.233:57690->192.168.1.101:cslistener (SYN_SENT)
(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ kill 49169
(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ kill 86607
(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ kill 86743