hadoop学习笔记:运行wordcount对文件字符串进行统计案例
我最近使用四臺Centos虛擬機搭建了一套分布式hadoop環(huán)境,簡單模擬了線上上的hadoop真實分布式集群,主要用于業(yè)余學習大數(shù)據(jù)相關(guān)體系。
其中,一臺服務器作為NameNode,一臺作為Secondary NameNode,剩下兩臺當做DataNodes節(jié)點服務器,類似下面這樣一個架構(gòu)——
| master1(192.168.200.111) | √ | ||
| master2(192.168.200.112) | √ | ||
| slave1(192.168.200.117) | √ | ||
| slave2(192.168.200.115) | √ |
接下來,就是開始通過hadoop自帶的wordcount來統(tǒng)計一下文件當中的字符數(shù)量。
啟動hadoop集群后,在集群可用情況下,按照以下步驟:
一、進入到hadoop安裝目錄,創(chuàng)建一個測試文件example.txt
我的安裝目錄是:/opt/hadoop/app/hadoop/hadoop-2.7.5
[root@192 hadoop-2.7.5]# pwd /opt/hadoop/app/hadoop/hadoop-2.7.5新建一個example.txt,并隨機寫入一些字符:
aaa bbb cccc dedef dedf dedf ytrytrgtrcdscdscdsc dedaxa cdsvfbgf uyiuyi ss xaxaxaxa接著,在hdfs文件系統(tǒng)上新建一個input文件夾,用來存放example.txt文件——
[root@192 hadoop-2.7.5]# hdfs dfs -mkdir /input然后,將example.txt復制到hdfs系統(tǒng)上的input目錄下——
[root@192 hadoop-2.7.5]# hdfs dfs -put example.txt /input檢查一下,可以看到,example.txt文件已經(jīng)在input目錄底下了——
[root@192 hadoop-2.7.5]# hdfs dfs -ls /input Found 1 items -rw-r--r-- 3 root supergroup 84 2021-10-20 12:43 /input/example.txt這些準備工作做好后,就可以開始使用hadoop自帶的jar包來統(tǒng)計文件example.txt當中各字符的數(shù)量了。
二、運行wordcount對文件字符進行統(tǒng)計
直接在NameNode節(jié)點對應的服務器上執(zhí)行——
[root@192 hadoop-2.7.5]# hadoop jar /opt/hadoop/app/hadoop/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /input /output這行指令的大概意思是,分布式計算統(tǒng)計input目錄底下的文件中的字符數(shù)量,將統(tǒng)計結(jié)果reduce到output當中,故而,最后若執(zhí)行沒問題,可以在output目錄下獲取到統(tǒng)計結(jié)果記錄。
我第一次執(zhí)行時,發(fā)生了一個異常,即執(zhí)行完后,日志運行到INFO mapreduce.Job: Running job: job_1631618032849_0002這一行時,就直接卡在了這里,沒有任何動靜了——
[hadoop@192 bin]$ hadoop jar /opt/hadoop/app/hadoop/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /input /output 21/10/20 10:43:29 INFO client.RMProxy: Connecting to ResourceManager at master1/192.168.200.111:8032 21/10/20 10:43:30 INFO input.FileInputFormat: Total input paths to process : 1 21/10/20 10:43:30 INFO mapreduce.JobSubmitter: number of splits:1 21/10/20 10:43:31 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1631618032849_0002 21/10/20 10:43:31 INFO impl.YarnClientImpl: Submitted application application_1631618032849_0002 21/10/20 10:43:31 INFO mapreduce.Job: The url to track the job: http://master1:8088/proxy/application_1631618032849_0002/ 21/10/20 10:43:31 INFO mapreduce.Job: Running job: job_1631618032849_0002百度了一番后,根據(jù)一些思路,最后將mapred-site.xml最開始的配置由
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property> </configuration>改成這里——
<configuration><property><name>mapreduce.job.tracker</name><value>hdfs://master1:8001</value><final>true</final></property> </configuration>接著,重啟了hadoop集群,就正常了,日志信息就沒有卡頓,而是一步執(zhí)行完成,打印以下的日志記錄——
過程如果沒有出現(xiàn)問題,就可以到最后一步,查看統(tǒng)計完的結(jié)果。
三、獲取統(tǒng)計結(jié)果
以上步驟執(zhí)行完后,直接輸入指令查看output目錄下的信息,可以看到,里面生成了兩個文件——
[root@192 hadoop-2.7.5]# hdfs dfs -ls /output Found 2 items -rw-r--r-- 3 root supergroup 0 2021-10-20 12:47 /output/_SUCCESS -rw-r--r-- 3 root supergroup 101 2021-10-20 12:47 /output/part-r-00000part-r-00000文件是存放統(tǒng)計結(jié)果的,我們查看一下——
[root@192 hadoop-2.7.5]# hdfs dfs -cat /output/part-r-00000 aaa 1 bbb 1 cccc 1 cdsvfbgf 1 dedaxa 1 dedef 1 dedf 2 ss 1 uyiuyi 1 xaxaxaxa 1 ytrytrgtrcdscdscdsc 1對比前面的example.txt文件,可以看到,當中dedf字符串是有兩個,其他都是1個,hadoop統(tǒng)計結(jié)果也確實如此。
以上,便是初步認識hadoop的一個小案例,接下來,我會在學習過程當中把值得分享的經(jīng)驗都總結(jié)下來。
總結(jié)
以上是生活随笔為你收集整理的hadoop学习笔记:运行wordcount对文件字符串进行统计案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 好奇!仅 13kB 大小的游戏,源码长啥
- 下一篇: 最佳适应算法模拟内存分配