購(gòu)物網(wǎng)站技術(shù)方案河南鄭州最新消息今天
🧠 1. 什么是偽分布式模式(Pseudo-distributed Mode)?
在 Hadoop 中,偽分布式模式是一種 用一臺(tái)機(jī)器模擬多節(jié)點(diǎn)集群 的運(yùn)行方式。
-
每個(gè) Hadoop 組件(如 NameNode、DataNode、ResourceManager、NodeManager)都在 獨(dú)立的 Java 進(jìn)程中運(yùn)行。
-
適合做開(kāi)發(fā)、調(diào)試、學(xué)習(xí)使用。
簡(jiǎn)單來(lái)說(shuō):“一臺(tái)電腦,裝扮成一群電腦”。
🔁 2. 什么是 MapReduce?
MapReduce 是一種用于大數(shù)據(jù)處理的編程模型,由兩個(gè)階段組成:
階段 | 作用說(shuō)明 |
---|---|
Map | 對(duì)數(shù)據(jù)進(jìn)行切分處理,比如統(tǒng)計(jì)每個(gè)詞出現(xiàn)一次 |
Reduce | 對(duì)中間結(jié)果合并,比如把相同的詞頻加總 |
經(jīng)典例子是:統(tǒng)計(jì)一篇文章中每個(gè)單詞出現(xiàn)了幾次(WordCount)
🔧 3. 開(kāi)始運(yùn)行 WordCount 示例程序
我們使用的是 Hadoop 自帶的 MapReduce 示例程序:hadoop-mapreduce-examples-3.3.4.jar
里面包括了經(jīng)典的應(yīng)用程序,比如:wordcount
, grep
, pi
等。
🪜 步驟一:查看有哪些示例程序
$ hadoop jar /usr/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar
📌 這條命令會(huì)列出 JAR 包里的所有示例,比如:
-
wordcount
:統(tǒng)計(jì)詞頻 -
grep
:用正則表達(dá)式匹配文本 -
pi
:估算圓周率
🪜 步驟二:查看 wordcount
的用法
$ hadoop jar /usr/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount
你會(huì)看到提示:
Usage: wordcount <input> <output>
說(shuō)明它需要兩個(gè)參數(shù):
-
輸入路徑(input):HDFS 上的目錄,里面放文本文件
-
輸出路徑(output):結(jié)果存儲(chǔ)的目錄(注意不能事先存在)
🪜 步驟三:準(zhǔn)備環(huán)境
? 1)啟動(dòng) HDFS 和 YARN
$ start-dfs.sh?$ start-yarn.sh
-
start-dfs.sh
啟動(dòng)分布式文件系統(tǒng)(NameNode、DataNode) -
start-yarn.sh
啟動(dòng)任務(wù)調(diào)度系統(tǒng)(ResourceManager、NodeManager)
? 2)創(chuàng)建用戶目錄(如果沒(méi)建過(guò))
$ hdfs dfs -mkdir -p /user/user
這一步是給你在 HDFS 上建一個(gè)“個(gè)人文件夾”。
🪜 步驟四:上傳輸入文件
? 創(chuàng)建輸入目錄并上傳文件:
$ hdfs dfs -mkdir input$ hdfs dfs -put text.txt input
-
mkdir input
是在 HDFS 上建一個(gè)input
文件夾 -
put text.txt input
把本地的text.txt
文件上傳進(jìn)去
🪜 步驟五:運(yùn)行 WordCount 程序!
$ hadoop jar /usr/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount input output
-
輸入目錄是
input
-
輸出目錄是
output
-
程序會(huì)在后臺(tái)運(yùn)行 Map 和 Reduce 任務(wù),統(tǒng)計(jì)每個(gè)單詞的出現(xiàn)次數(shù)。
🪜 步驟六:查看結(jié)果
? 方法一:下載輸出結(jié)果到本地
$ hdfs dfs -get output/part-* $ cat part-r-00000
-
part-r-00000
是 Reduce 階段的輸出文件。 -
里面是每個(gè)單詞及其頻率,比如:
a 5 and 3 hadoop 10
? 方法二:直接在終端查看輸出內(nèi)容
$ hdfs dfs -cat output/part-*
?
?
?
?
?? 常見(jiàn)錯(cuò)誤:輸出目錄已存在!
如果你再次運(yùn)行程序,而 output
文件夾還存在,就會(huì)報(bào)錯(cuò)。
🧹 解決方案一:刪掉舊的輸出目錄
$ hdfs dfs -rm -r output
🧳 解決方案二:用新的輸出目錄
比如:
$ hadoop jar ... wordcount input output2$ hdfs dfs -cat output2/part-*
? 總結(jié)流程圖(簡(jiǎn)化)
Step 1: 啟動(dòng) Hadoop → start-dfs.sh → start-yarn.shStep 2: 準(zhǔn)備數(shù)據(jù) → 上傳 text.txt 到 HDFS 的 input 文件夾Step 3: 運(yùn)行程序 → hadoop jar ... wordcount input outputStep 4: 查看結(jié)果 → cat output/part-*
? 一句話總結(jié)
Hadoop 的 MapReduce 示例程序(如 wordcount)能在偽分布式模式中運(yùn)行,讀取 HDFS 上的文本文件,統(tǒng)計(jì)詞頻,并將結(jié)果保存到 HDFS 的輸出目錄中。