HDFS在Linux環境中的配置指南
sudo apt-get install openjdk-8-jdk
或sudo yum install java-1.8.0-openjdk-devel
),安裝后通過java -version
驗證是否成功。tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
解壓至指定目錄(如/usr/local/hadoop-3.3.4
)。編輯用戶或系統的環境變量文件(如~/.bashrc
或/etc/profile
),添加以下內容:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 根據實際JDK路徑調整
export HADOOP_HOME=/usr/local/hadoop-3.3.4 # 根據實際Hadoop解壓路徑調整
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存后執行source ~/.bashrc
(或source /etc/profile
)使配置生效。
Hadoop的配置文件位于$HADOOP_HOME/etc/hadoop/
目錄下,需修改以下關鍵文件:
配置HDFS的默認文件系統和臨時目錄:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- NameNode的URI,集群中替換為實際主機名 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value> <!-- Hadoop臨時目錄,建議使用獨立分區 -->
</property>
</configuration>
fs.defaultFS
是HDFS的核心配置,決定了客戶端訪問HDFS的默認路徑。
配置HDFS的具體參數,如副本數、數據存儲路徑:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 數據副本數,生產環境建議≥3,單機測試可設為1 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/namenode</value> <!-- NameNode元數據存儲路徑,需提前創建 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/datanode</value> <!-- DataNode數據存儲路徑,需提前創建 -->
</property>
</configuration>
dfs.replication
是HDFS的關鍵參數,決定了數據的冗余備份數量。
若需集成YARN資源管理,需配置yarn-site.xml
:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>resourcemanager</value> <!-- ResourceManager主機名 -->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- 支持MapReduce Shuffle服務 -->
</property>
</configuration>
YARN是Hadoop的資源管理系統,用于調度MapReduce、Spark等任務。
若需使用MapReduce框架,需配置mapred-site.xml
(通常需從mapred-site.xml.template
復制而來):
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 指定MapReduce運行在YARN上 -->
</property>
</configuration>
該配置讓MapReduce任務由YARN統一調度。
為了實現集群節點間的免密管理(如NameNode啟動DataNode),需配置SSH無密碼登錄:
ssh-keygen -t rsa
(直接回車,默認路徑);ssh-copy-id datanode1
、ssh-copy-id datanode2
(替換為實際節點主機名);ssh datanode1
,若無需輸入密碼則配置成功。首次啟動HDFS前,必須格式化NameNode以初始化元數據存儲目錄:
hdfs namenode -format
格式化會清除NameNode的所有元數據,請確保在全新環境或備份后操作。
start-dfs.sh
,該命令會自動啟動NameNode、DataNode及SecondaryNameNode(若配置了dfs.namenode.secondary.http-address
);jps
命令查看NameNode、DataNode進程是否啟動(NameNode節點應顯示NameNode
,DataNode節點應顯示DataNode
)。hdfs dfs -ls /
,若返回空目錄則表示正常;hdfs dfs -mkdir /user/test
、hdfs dfs -put /local/path/file.txt /user/test
;http://namenode:9870
(Hadoop 3.x版本),查看集群狀態、節點信息及文件系統。sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
(CentOS)或sudo ufw allow 9000/tcp
(Ubuntu)開放端口;/etc/hosts
文件,添加節點主機名與IP的映射(如192.168.1.100 namenode
、192.168.1.101 datanode1
),避免DNS解析問題;dfs.namenode.name.dir
和dfs.datanode.data.dir
指定的目錄存在且具有讀寫權限(如chmod -R 755 /data/namenode
)。