Hadoop基于Java開發,需先安裝JDK并配置環境變量:
sudo apt update
sudo apt install openjdk-11-jdk -y
java -version
輸出應包含Java版本信息(如openjdk version "11.0.xx"
)。Hadoop通過SSH進行節點間通信,需配置本地免密登錄:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys # 設置文件權限
ssh localhost
若無需輸入密碼即可登錄,則配置成功。wget https://downloads.apache.org/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz
/usr/local
):sudo tar -zxvf hadoop-3.3.5.tar.gz -C /usr/local
sudo mv /usr/local/hadoop-3.3.5 /usr/local/hadoop # 重命名便于管理
sudo chown -R $USER:$USER /usr/local/hadoop
編輯~/.bashrc
文件,添加Hadoop相關環境變量:
nano ~/.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 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native
使配置生效:
source ~/.bashrc
hadoop version
輸出應顯示Hadoop版本及編譯信息。Hadoop的配置文件位于$HADOOP_HOME/etc/hadoop
目錄下,需修改以下核心文件:
設置Java路徑(若JAVA_HOME
已在環境變量中定義,可跳過):
nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
找到# export JAVA_HOME=
行,取消注釋并修改為:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根據實際Java路徑調整
配置HDFS的默認文件系統URI(指向NameNode):
nano $HADOOP_HOME/etc/hadoop/core-site.xml
替換為以下內容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
配置HDFS數據存儲路徑及副本數(單機模式副本數為1):
nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
替換為以下內容:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 單機模式設為1 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/tmp/dfs/name</value> <!-- NameNode數據目錄 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/tmp/dfs/data</value> <!-- DataNode數據目錄 -->
</property>
</configuration>
配置MapReduce框架為YARN(需先創建該文件,若不存在則復制模板):
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
替換為以下內容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置YARN資源管理器:
nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
替換為以下內容:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
首次啟動HDFS前,需格式化NameNode(會清除原有數據,僅第一次需要):
hdfs namenode -format
start-dfs.sh
start-yarn.sh
jps
正常輸出應包含以下進程:
NameNode
(HDFS主節點)DataNode
(HDFS數據節點)ResourceManager
(YARN資源管理器)NodeManager
(YARN節點管理器)hdfs dfs -ls /
localfile.txt
):hdfs dfs -put localfile.txt /user/$USER/
hdfs dfs -get /user/$USER/localfile.txt .
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar wordcount /user/$USER/input /user/$USER/output
若系統啟用了防火墻,需允許Hadoop相關端口通信:
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp # HDFS NameNode
sudo firewall-cmd --permanent --zone=public --add-port=50070/tcp # HDFS Web UI
sudo firewall-cmd --permanent --zone=public --add-port=8088/tcp # YARN Web UI
sudo firewall-cmd --reload
通過以上步驟,即可在Linux系統上完成Hadoop的單機部署。如需擴展為集群,需在多臺機器上重復上述步驟,并配置slaves
文件(指定DataNode節點)及集群間的SSH免密登錄。