在CentOS系统上配置Hadoop分布式文件系统(HDFS)并实现高可用性涉及多个步骤。以下是一个详细的指南,帮助你完成这一过程。
首先,确保你的CentOS系统上安装了Java运行环境。你可以从Oracle官网下载并安装JDK。
wget https://download.oracle.com/otn/java/jdk/8u212-b09/d7fc27d8d8f94d369ac70d8d89f8a2f29d/jdk-8u212-linux-x64.tar.gz
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /usr/local/
export JAVA_HOME=/usr/local/jdk1.8.0_212
export PATH=$JAVA_HOME/bin:$PATH
为了在节点之间进行无密码登录,需要配置SSH密钥。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
下载所需版本的Hadoop安装包,并解压到指定目录。
wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.16.2.tar.gz
tar -zxvf hadoop-2.6.0-cdh5.16.2.tar.gz -C /usr/local/
export HADOOP_HOME=/usr/local/hadoop-2.6.0-cdh5.16.2
export PATH=$HADOOP_HOME/bin:$PATH
编辑 /etc/profile
文件,添加Hadoop环境变量。
vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop-2.6.0-cdh5.16.2
export PATH=$HADOOP_HOME/bin:$PATH
source /etc/profile
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/path/to/namenode/data</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/path/to/datanode/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</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>
</configuration>
在所有DataNode节点上编辑 /etc/hosts
文件,添加NameNode的主机名。
namenode 192.168.1.100
node2 192.168.1.101
node3 192.168.1.102
在NameNode节点上执行以下命令初始化NameNode的元数据存储目录。
hadoop namenode -format
在NameNode节点上启动HDFS:
start-dfs.sh
在所有DataNode节点上启动DataNode:
start-dfs.sh datanode
在浏览器中访问NameNode的Web界面:http://namenode:50070,查看集群状态。
Secondary NameNode用于定期合并NameNode的编辑日志。
hadoop-daemon.sh start secondarynamenode
为了实现自动故障转移,需要配置ZooKeeper和ZKFC。
# 在所有节点上安装ZooKeeper
yum install zookeeper -y
# 配置ZooKeeper
vi /etc/zookeeper/conf/zoo.cfg
# 添加以下内容
dataDir=/var/lib/zookeeper
clientPort=2181
server.1=node1:2888
server.2=node2:2888
server.3=node3:2888
# 启动ZooKeeper
systemctl start zookeeper
systemctl enable zookeeper
# 在NameNode节点上配置ZKFC
hadoop-daemon.sh start zkfc
模拟NameNode故障并验证自动切换。
# 停止NameNode
systemctl stop hadoop-namenode
# 检查Standby NameNode是否接管
hdfs dfsadmin -report
通过以上步骤,你可以在CentOS系统上配置一个高可用的HDFS集群。确保在实际配置过程中根据具体环境和需求进行调整,并进行充分的测试以验证其正确性。