上一节中成功安装了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需要加‘.’
【记录】
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
(2)查看程序运行结果
(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ hadoop fs -ls /output
(3)此命令查看每个单词的统计结果
(base) wangwenzhuodeMacBook-Air:3.2.1 wangwenzhuo$ hadoop fs -cat /output/part-r-00000
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