Hadoop分布式文件系统(HDFS)和MapReduce计算框架实训
Hadoop分布式文件系统(HDFS)和MapReduce计算框架实训
叶玖洛·星尘内容大概
本次实训报告主要围绕Hadoop分布式文件系统(HDFS)和MapReduce计算框架进行。
大概可以这样子总结需要的命令:
- HDFS操作:
- 使用
hadoop fs -mkdir
命令在HDFS根目录下创建了一个名为/project
的目录。 - 使用
hadoop fs -put
命令将本地文件系统中的/opt/test.txt
文件上传到HDFS的/project
目录下。 - 使用
hadoop fs -ls
命令查看HDFS中/project
目录下的内容,确认test.txt
文件已成功上传。
- 使用
- MapReduce作业执行:
- 使用
hadoop jar
命令执行了hadoop-mapreduce-examples-3.1.4.jar
中的wordcount
程序,对/project/test.txt
文件进行单词计数。 - 将MapReduce作业的输出结果保存到了HDFS的
/result
目录下。 - 通过
hadoop fs -cat
命令查看了/result
目录中的part-r-00000
文件,该文件包含了单词计数的结果。
- 使用
- 结果下载与查看:
- 使用
hadoop fs -get
命令将HDFS中/result
目录的所有内容下载到了Linux本地文件系统的/opt/result
目录。 - 在Linux中使用
ls
和cat
命令查看下载的文件,确认了part-r-00000
文件中包含了单词计数的结果。
- 使用
在电脑上创建文本文件test.txt, 将以下内容复制进文件内
Is a quiet village in which there was a military camp. It was far from the towns and cities and there were some high mountains around. Of course it was a good place for training the new soldiers. But it was difficult for the young men to go outside. Mr. White,an officer of forty,was strict with them and he hardly let them leave the camp.
Once Mr. White was ill in bed. He couldn’t work and a young officer,Mr. Hunt,began to train the new soldiers instead of him. He knew the young men well and let nine soldiers go to the nearest town to have a holiday. But night fell and none came back to the camp. He was worried about it and stood at the gate. It was five to twelve when Mr. Hunt decided to go to the town and see what was happening with the young men. He started the car quickly and set off. At that moment the nine soldiers came back. It seemed they were all drunk. Of course they found the officer was angry.
“I’m sorry,sir,” said the first soldier. “I left the town on time. But something was wrong with my bus on my way here. I had to buy a horse and made it run fast. Bad luck!It died and I had to run back.”
And the other seven soldiers said they were late for the same reasons. It was the last soldier’s turn. He said,”I’m sorry,sir. I got on a bus on time,but…”
Having heard this,the officer became even angrier and stopped him at once. He called out,”If you say something was wrong with your bus,I’ll punish you at once!”
“No,no,sir,” said the young man. “My bus was all right,but the dead horses were in its way!”
上传之前创建并写入内容的test.txt
使用xftp将文本文件test.txt上传到安装好Hadoop的虚拟机Centos的/opt目录之下。
使用hadoop命令 在hdfs中根目录之下创建目录 /project
在Hadoop文件系统(HDFS)中创建目录可以使用hadoop fs
命令。
hadoop fs -mkdir /project |
要查看上一步在Hadoop分布式文件系统(HDFS)中创建的目录,可以使用`hadoop fs -ls`命令:
hadoop fs -ls /这个命令会列出HDFS根目录(
/
)下的所有文件和目录。输出将类似于以下内容:
drwxr-xr-x - hadoop supergroup 0 2023-04-01 12:00 /project这里,
drwxr-xr-x
表示目录的权限,hadoop
是目录所有者的用户名,supergroup
是组名,0
表示目录的大小(字节),最后是目录的路径和名称。
如果你需要创建嵌套的目录结构,即使父目录不存在,也可以使用-p
选项,该选项会同时创建所有必要的父目录:
hadoop fs -mkdir -p /project/subdirectory |
上述命令会在HDFS中创建/project
以及/project/subdirectory
目录。如果/project
目录不存在,它也会被创建。
使用hadoop 命令将linux中的test.txt文件上传至 hdfs中的project目录之下
要将本地文件系统中的文件/opt/test.txt
上传到Hadoop分布式文件系统(HDFS)中的/project
目录下,可以使用hadoop fs -put
命令。如果/project目录不存在,命令会报错。
hadoop fs -put /opt/test.txt /project |
如果文件上传成功,hadoop fs - ls /project
可以看到上传的文件。
hadoop fs -ls /project |
使用hadoop命令查看hdfs里面的test.txt文件
要查看Hadoop分布式文件系统(HDFS)中的test.txt
文件内容,可以使用hadoop fs -cat
命令:
hadoop fs -cat /project/test.txt |
这个命令会输出/project
目录下test.txt
文件的内容到终端上。如果你只想查看文件的部分内容,可以使用hadoop fs -tail
命令来查看文件的最后几行:
hadoop fs -tail /project/test.txt |
运用hadoop里面的示例包hadoop-mapreduce-examples-3.1.4.jar 中的wordcount功能 统计 test.txt文档的单词出现次数,将统计结果输出到 /result目录中。
要使用Hadoop的hadoop-mapreduce-examples-3.1.4.jar
中的wordcount
功能来统计test.txt
文档中的单词出现次数,并将统计结果输出到HDFS的/result
目录中,你可以按照以下步骤操作:
- 确保你的Hadoop集群正在运行,并且你已经将
test.txt
文件上传到了HDFS的/project
目录下。 - 使用Hadoop的
wordcount
示例程序来处理文件。以下是你需要运行的命令:将hadoop jar /path/to/hadoop-mapreduce-examples-3.1.4.jar wordcount /project/test.txt /result
/path/to/hadoop-mapreduce-examples-3.1.4.jar
替换为实际hadoop-mapreduce-examples-3.1.4.jar
文件所在的路径。这个命令会启动一个MapReduce作业,读取/project/test.txt
文件,统计单词出现次数,并将结果输出到/result
目录。
我执行的命令路径作为参考:
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar wordcount /project/test.txt /result |
如果你不知道实际路径,可以使用find命令查询:
find / -name "hadoop-mapreduce-examples-3.1.4.jar" |
这个命令会在整个文件系统中搜索名为hadoop-mapreduce-examples-3.1.4.jar的文件,并返回它的路径。
- 等待作业完成。作业完成后,你可以查看输出结果。使用以下命令来查看
/result
目录的内容:hadoop fs -ls /result
- 请注意,如果
/result
目录已经存在,你可能会遇到错误,因为Hadoop不允许输出目录已经存在。如果发生这种情况,你可以先删除/result
目录,或者使用一个不同的输出目录。以下是如何删除/result
目录的命令:确保在运行hadoop fs -rm -r /result
wordcount
作业之前/result
目录不存在!
执行完毕后的输出分析
以下为我的输出:
2024-05-10 13:53:18,768 INFO client.RMProxy: Connecting to ResourceManager at master/192.168.200.133:8032 |
输出信息分析:
- 作业ID为
job_1715319391222_0001
。 - 作业运行在非uber模式(即不是在同一个JVM中运行Map和Reduce任务)。
- 总共启动了1个Map任务和1个Reduce任务。
- Map任务读取了11条记录,输出了296条记录。
- Reduce任务接收了168个组,输出了168条记录。
- 作业读取了1573字节的数据,并写出了1370字节的数据。
- 作业完成时间为2024-05-10 13:53:38。
使用hadoop命令下载输出的结果,也就是HDFS里面的/result文件夹所有内容,将文件保存至 linux中的 /opt/result 目录
要将HDFS中的/result
文件夹的所有内容下载到Linux中的/opt/result
目录,你可以使用hadoop fs -get
命令。以下是如何操作的命令:
hadoop fs -get /result /opt/result |
这个命令会将HDFS中/result
目录下的所有内容下载到Linux的/opt/result
目录。如果/opt/result
目录不存在,命令会自动创建它。
如果你只想下载/result
目录下的特定文件,你可以指定文件名。例如,如果你只想下载part-r-00000
文件,可以使用以下命令:
hadoop fs -get /result/part-r-00000 /opt/result |
这会将part-r-00000
文件下载到/opt/result
目录。
请确保你有足够的权限来写入/opt/result
目录,否则你可能需要使用sudo
来执行这些命令。
使用命令查看 下载的结果
首先使用ls命令查看你下载下来的文件名字,然后将输出的实际名字替换到后面的命令
ls /opt/result |
这个命令会输出/opt/result
目录中的part-r-00000
文件的内容到终端上。
一旦你使用Hadoop命令将/result
目录的内容下载到Linux的/opt/result
目录,你可以使用Linux的cat
命令来查看下载的文件内容。以下是如何查看/opt/result
目录下的文件的命令:
cat /opt/result/part-r-00000 |
请确保替换文件名为你实际下载的文件名。如果你下载了整个/result
目录,那么/opt/result
目录下应该有所有输出的文件。
多说几句
在Hadoop中,当一个MapReduce作业成功完成后,它会在输出目录中创建一个名为_SUCCESS
的空文件,这表示作业已经成功完成。这个文件本身不包含任何结果数据,它只是一个标志,表明作业已经完成了。
要查看实际的输出结果,你应该查看part-r-00000
文件,因为它通常包含了MapReduce作业的输出数据。在你的情况下,你可以使用cat
命令来查看part-r-00000
文件的内容:
cat /opt/result/part-r-00000 |
这个命令会显示文件的内容,即单词计数的结果。每个单词及其计数将会占据一行,通常以制表符分隔。
如果你想要以更友好的格式查看结果,你可以使用less
命令,它允许你上下滚动查看文件内容:
less /opt/result/part-r-00000 |
或者,如果你想要在文本编辑器中打开文件,你可以使用nano
或vim
命令:
nano /opt/result/part-r-00000 |
或者
vim /opt/result/part-r-00000 |
这些命令会打开文本编辑器,让你可以查看和编辑文件内容。
本次实训总结
- 通过本次实训,深入理解了Hadoop分布式文件系统HDFS的基本操作,包括创建目录、上传文件、查看文件等。
- 学习了如何使用Hadoop的MapReduce框架执行wordcount程序,对文本文件进行单词频率统计。
- 掌握了如何将HDFS中的输出结果下载到本地文件系统,并使用Linux命令查看结果文件。
- 本次实训不仅提高了对Hadoop生态系统组件的实际操作能力,也为进一步学习大数据处理和分析打下了坚实的基础。
总体来说,本次实训是一次成功的Hadoop实践,通过实际操作,加深了对Hadoop分布式计算环境的理解,并提高了使用Hadoop进行数据处理的能力。