一、環境準備:系統與依賴配置
在Debian上部署Hadoop前,需完成基礎環境配置。首先,升級系統至最新版本以修復安全漏洞:sudo apt update && sudo apt upgrade -y
。接著,移除不必要的軟件包(如Apache、Bind等)以減少資源占用:sudo apt -y purge apache2-* bind9-*
。然后,安裝Java 8或更高版本(Hadoop依賴Java環境):sudo apt install openjdk-8-jdk -y
,并通過java -version
驗證安裝。最后,安裝SSH服務用于節點間無密碼通信:sudo apt install openssh-server -y
,并生成密鑰對實現免密登錄。
二、Hadoop安裝與基礎配置
/usr/local/
目錄:wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz && sudo tar -xzvf hadoop-3.3.1.tar.gz -C /usr/local/
,并重命名目錄為hadoop
以簡化操作。~/.bashrc
文件,添加Hadoop路徑:export HADOOP_HOME=/usr/local/hadoop
、export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
,執行source ~/.bashrc
使配置生效。hdfs://namenode:9000
)和臨時目錄(如/usr/local/hadoop/tmp
)。/usr/local/hadoop/dfs/name
、/usr/local/hadoop/dfs/data
)。mapreduce.framework.name=yarn
)。yarn.nodemanager.aux-services=mapreduce_shuffle
)及類路徑(yarn.nodemanager.aux-services.mapreduce.shuffle.class=org.apache.hadoop.mapred.ShuffleHandler
)。三、集群啟動與驗證
hdfs namenode -format
。start-dfs.sh
;在ResourceManager上啟動YARN服務:start-yarn.sh
。jps
命令檢查進程(NameNode、DataNode、ResourceManager、NodeManager需全部運行);或訪問HDFS Web UI(http://namenode:9000
)確認集群狀態。四、性能優化關鍵措施
/etc/sysctl.conf
,添加fs.file-max=800000
,執行sysctl -p
生效);關閉swap分區(sudo swapoff -a
,并在/etc/fstab
中注釋swap行);調整TCP參數(如net.core.rmem_max=67108864
、net.core.wmem_max=67108864
)提升網絡傳輸效率。dfs.namenode.handler.count=20*log2(集群規模)
)、數據塊大?。?code>dfs.block.size=128MB,適合大數據處理)。yarn.nodemanager.resource.memory-mb=4096
、yarn.nodemanager.resource.cpu-vcores=4
),合理分配Container資源(yarn.scheduler.minimum-allocation-mb=1024
、yarn.scheduler.maximum-allocation-mb=8192
)。mapreduce.map.memory.mb=2048
、mapreduce.reduce.memory.mb=4096
)、設置Shuffle環形緩沖區大?。?code>mapreduce.task.io.sort.mb=100MB),減少磁盤IO。export HADOOP_OPTS="-Xmx4g"
),選擇低延遲垃圾回收器(如G1GC:-XX:+UseG1GC
),減少Full GC次數。五、安全與管理實踐
hadoop
),并設置sudo
權限;配置Hadoop用戶組(如hadoop
組包含所有集群節點用戶),限制訪問權限。core-site.xml
中配置hadoop.security.key.provider.path
),保護敏感數據;設置HDFS訪問控制列表(ACL),限制用戶對目錄的讀寫權限。/usr/local/hadoop/logs/hadoop-*-namenode-*.log
),及時排查故障;制定備份策略(如備份NameNode元數據至異地),定期測試故障恢復流程。