Ubuntu虛擬機配置Hadoop(偽分布式/單節點模式)
Hadoop是用Java開發的,需先安裝JDK(推薦OpenJDK 8/11/17):
# 更新軟件包列表
sudo apt update
# 安裝OpenJDK 11(可根據需求替換為8/17)
sudo apt install -y openjdk-11-jdk
# 驗證安裝
java -version # 應輸出JDK版本信息
配置Java環境變量(編輯~/.bashrc):
vim ~/.bashrc
在文件末尾添加:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根據實際JDK路徑調整
export PATH=$PATH:$JAVA_HOME/bin
使配置生效:
source ~/.bashrc
從Apache官網下載穩定版Hadoop(如3.3.4),解壓至/usr/local/:
# 下載Hadoop(以3.3.4為例)
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
# 解壓
tar -xzvf hadoop-3.3.4.tar.gz
# 移動至/usr/local/并重命名
sudo mv hadoop-3.3.4 /usr/local/hadoop
# 修改目錄權限(避免后續操作權限問題)
sudo chown -R $USER:$USER /usr/local/hadoop
編輯~/.bashrc,添加Hadoop相關變量:
vim ~/.bashrc
在文件末尾添加:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
使配置生效:
source ~/.bashrc
進入Hadoop配置目錄($HADOOP_HOME/etc/hadoop),修改以下文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- HDFS NameNode地址 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value> <!-- 臨時目錄 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 副本數(偽分布式模式設為1) -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoop/dfs/name</value> <!-- NameNode數據目錄 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoop/dfs/data</value> <!-- DataNode數據目錄 -->
</property>
</configuration>
若文件不存在,可復制模板生成:
cp mapred-site.xml.template mapred-site.xml
修改內容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 使用YARN作為資源管理器 -->
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- Shuffle服務 -->
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
# 創建NameNode數據目錄
mkdir -p /usr/local/hadoop/dfs/name
# 創建DataNode數據目錄
mkdir -p /usr/local/hadoop/dfs/data
格式化會清除HDFS中的所有數據,僅首次啟動時執行:
hdfs namenode -format
啟動HDFS和YARN服務:
# 啟動HDFS
start-dfs.sh
# 啟動YARN
start-yarn.sh
查看服務狀態:
# 查看Hadoop進程
jps # 應顯示NameNode、DataNode、ResourceManager、NodeManager等進程
# 查看HDFS健康狀態
hdfs dfsadmin -report
運行Hadoop自帶的WordCount示例,驗證集群是否正常工作:
# 創建輸入目錄
hdfs dfs -mkdir -p /input
# 將Hadoop配置文件復制到輸入目錄(作為測試數據)
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /input
# 運行WordCount程序
hdfs dfs -cat /output/*
chmod -R 755 /usr/local/hadoop調整目錄權限。core-site.xml中的fs.defaultFS端口(如改為9001)。~/.bashrc修改后執行了source ~/.bashrc,或重啟終端。通過以上步驟,即可在Ubuntu虛擬機上完成Hadoop的單節點(偽分布式)配置,并驗證其基本功能。