在centos系統上搭建hdfs高可用集群,需要進行一系列配置,包括ip地址、主機名、免密登錄、zookeeper和hadoop本身。以下步驟將詳細闡述該過程:
1. 配置靜態IP地址
首先,為每個節點(例如node1、node2、node3)配置靜態IP地址。
- 編輯網絡配置文件:使用sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33 (接口名稱可能不同,請根據實際情況修改)。
- 添加或修改以下配置,將IPADDR替換為節點的實際IP地址:
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FaiLURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx DEVICE=ens33 ONBOOT=yes IPADDR=192.168.1.11 # 替換為實際IP地址 DNS1=8.8.8.8 DNS2=114.114.114.114
- 保存并重啟網絡服務:sudo systemctl restart network
2. 設置主機名
為每個節點設置相應的主機名(例如node1、node2、node3)。使用以下命令:
sudo hostnamectl set-hostname node1 # 替換node1為實際主機名
3. 配置免密ssh登錄
在所有節點上生成SSH密鑰對,并將公鑰分發到其他節點的~/.ssh/authorized_keys文件中。
- 生成密鑰對:ssh-keygen -t rsa
- 分發公鑰:ssh-copy-id user@node2; ssh-copy-id user@node3 (替換user為實際用戶名)
4. 配置ZooKeeper
- 下載并解壓ZooKeeper:(版本號可能需要更新)
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz tar -xzf apache-zookeeper-3.8.0-bin.tar.gz cd apache-zookeeper-3.8.0
- 配置zoo.cfg文件:vi conf/zoo.cfg
- 修改以下配置:
dataDir=/tmp/zookeeper clientPort=2181
- 在每個節點的/tmp/zookeeper目錄下創建myid文件,文件內容分別為1, 2, 3 (對應node1, node2, node3)。
- 啟動ZooKeeper服務:./bin/zkServer.sh start
5. 配置Hadoop
- 下載并解壓Hadoop:(版本號可能需要更新)
wget https://downloads.apache.org/hadoop/core/hadoop-3.3.1/hadoop-3.3.1.tar.gz tar -xzf hadoop-3.3.1.tar.gz cd hadoop-3.3.1
- 配置core-site.xml文件:vi etc/hadoop/core-site.xml
- 添加以下配置:
<property> <name>fs.defaultFS</name> <value>hdfs://mycluster</value> </property>
- 配置hdfs-site.xml文件:vi etc/hadoop/hdfs-site.xml
- 添加以下配置: (請根據實際情況修改namenode和datanode的端口號以及目錄)
<property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>node1:8020</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>node2:8020</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>node1:50070</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>node2:50070</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/tmp/hdfs/data</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value> </property>
6. 格式化NameNode
在node1上格式化NameNode:hdfs namenode -format
7. 啟動HDFS集群
在node1和node2上分別啟動HDFS服務:start-dfs.sh
8. 驗證配置
在任意節點上執行hdfs dfs -ls /驗證HDFS是否正常運行。
注意: 以上配置中,ens33、node1、node2、node3、用戶名、IP地址和端口號需要根據實際情況替換。 確保所有節點的/etc/hosts文件配置正確,能夠通過主機名互相訪問。 此外,需要配置Hadoop環境變量。 這只是一個基本的配置示例,實際部署中可能需要根據具體需求進行更細致的調整和優化,例如配置HA,配置安全等。 強烈建議在正式環境中使用高可用性配置。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END