# 怎么配置Hadoop單機模式并運行Wordcount
## 一、Hadoop單機模式簡介
單機模式(Standalone Mode)是Hadoop最簡單的運行模式,適合初學者快速驗證基礎功能。該模式下:
- 不使用HDFS文件系統
- 不啟動任何守護進程(如NameNode/DataNode)
- 直接在本地文件系統運行MapReduce程序
## 二、環境準備
### 1. 系統要求
- Linux/MacOS系統(Windows需使用WSL)
- Java 8或11(推薦OpenJDK)
- 至少2GB空閑內存
### 2. 軟件下載
```bash
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -xzvf hadoop-3.3.6.tar.gz
cd hadoop-3.3.6
編輯~/.bashrc
文件:
export HADOOP_HOME=/path/to/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin
hadoop version
# 應顯示版本信息如:
# Hadoop 3.3.6
# Source code repository...
創建輸入目錄和測試文件:
mkdir input
echo "Hello World Hello Hadoop" > input/file1.txt
echo "Goodbye Hadoop Goodbye MapReduce" > input/file2.txt
Hadoop自帶示例JAR包:
hadoop jar \
$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar \
wordcount input output
cat output/part-r-00000
# 預期輸出:
# Goodbye 2
# Hadoop 2
# Hello 2
# MapReduce 1
# World 1
查看示例源碼(偽代碼):
// Mapper
map(LongWritable key, Text value, Context context) {
String[] words = value.toString().split(" ");
for (String word : words) {
context.write(new Text(word), new IntWritable(1));
}
}
// Reducer
reduce(Text key, Iterable<IntWritable> values, Context context) {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
context.write(key, new IntWritable(sum));
}
錯誤現象:
Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
解決方案:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
錯誤現象:
Output directory output already exists
解決方案:
rm -rf output
錯誤現象:
Permission denied: user=root, access=WRITE...
解決方案:
chmod -R 777 /tmp/hadoop-${USER}
代碼調試:
HADOOP_ROOT_LOGGER=DEBUG,console hadoop jar [jarfile]
性能監控:
# 查看任務日志
ls $HADOOP_HOME/logs/userlogs/
下一步學習:
提示:單機模式僅用于功能驗證,實際開發建議使用偽分布式或完全分布式模式 “`
(全文約1050字,實際字數可能因格式略有差異)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。