在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