HBase在Debian上的網絡配置指南
使用netplan
工具配置靜態IP,編輯/etc/netplan/01-netcfg.yaml
文件(文件名可能因系統而異),設置節點的靜態IP、子網掩碼、網關和DNS服務器。例如:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24] # 替換為節點實際IP
gateway4: 192.168.1.1 # 替換為網關地址
nameservers:
addresses: [8.8.8.8, 8.8.4.4] # 替換為DNS服務器地址
應用配置:sudo netplan apply
。
編輯/etc/hosts
文件,添加集群中所有節點的IP地址與主機名映射(包括HMaster、RegionServer等),確保節點間可通過主機名互相訪問。例如:
192.168.1.100 namenode
192.168.1.101 datanode1
192.168.1.102 datanode2
192.168.1.103 hmaster
192.168.1.104 regionserver1
HBase集群節點間需要無密碼SSH通信(如HMaster與RegionServer交互)。步驟如下:
hmaster
)上生成SSH密鑰對:ssh-keygen -t rsa
(直接按回車鍵使用默認路徑和空密碼)。ssh-copy-id root@datanode1
、ssh-copy-id root@regionserver1
(替換為目標節點主機名)。ssh root@datanode1
,確認無需輸入密碼即可登錄。編輯HBase的conf/hbase-site.xml
文件,設置網絡相關的核心參數:
hbase.cluster.distributed
設為true
(分布式部署必須)。hbase.rootdir
指向HDFS的NameNode地址(如hdfs://namenode:9000/hbase
)。hbase.zookeeper.property.dataDir
設置為ZooKeeper數據存儲路徑(如/usr/local/zookeeper/data
)。hbase.zookeeper.quorum
填寫ZooKeeper節點主機名列表(如namenode,datanode1,datanode2
)。<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://namenode:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper/data</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>namenode,datanode1,datanode2</value>
</property>
</configuration>
編輯/etc/sysctl.conf
文件,優化內核網絡參數以提高HBase網絡性能:
net.core.somaxconn = 1024
(默認128可能不足)。net.ipv4.tcp_window_scaling = 1
(啟用窗口縮放,提升大數據量傳輸效率)。net.ipv4.tcp_timestamps = 1
(優化TCP擁塞控制)。sudo sysctl -p
。使用ufw
(Uncomplicated Firewall)開放HBase相關端口,確保節點間通信不受阻礙:
sudo ufw allow 22/tcp
。sudo ufw allow 16000/tcp
。sudo ufw allow 16020/tcp
。sudo ufw allow 2181/tcp
、sudo ufw allow 2888/tcp
、sudo ufw allow 3888/tcp
。sudo ufw enable
。ping
命令測試節點間網絡連通性:ping namenode
、ping datanode1
(替換為目標節點主機名)。telnet
命令測試端口連通性:telnet namenode 9000
(驗證HDFS端口)、telnet hmaster 16000
(驗證HBase Master端口)。hbase shell
,輸入status
命令,確認集群節點狀態正常(如2 servers, 0 dead, 3.0000 average load
)。