最近搭建了一个hadoop-hdfs得高可用集群,想来有必要做一个记录,已被后面查看。
第一、首先要规划网络拓扑图
第二、准备环境
1)由于hdfs是Java编写的,所以需要安装jdk,然后配置环境变量
2)第二,由于高可用需要通过zookeeper进行分配起作用,所以需要安装zookeeper集群来实现
3)两个namenode失效需要通过zkfc进行失效切换,这时候需要两台namenode之间可以进行免密进入到对方得系统中进行操作,所以需要互相配置免密登录
第三、搭建zookeeper集群
安装完zookeeper以后需要,进行配置,首先将cp zoo_example.cfg zoo.cfg ,然后进行配置
dataDir=/var/sxt/hadoop/zk
server.1=192.168.0.104:2888:3888
server.2=192.168.0.107:2888:3888
server.3=192.168.0.108:2888:3888
然后新建目录
mdkir -p /var/sxt/hadoop/zk
echo 1 > /var/sxt/hadoop/zk/myid
两外两台也这样操作,搭建好zookeeper以后启动,查看zookeeper集群状态
zkServer.sh status
第四、安装hadoop并且配置
去到官网下载安装包,并且安装编译,
1)安装步骤
./configurate --prefix=/opt/sxt/
make && make install
2)修改配置文件
将带有env得配置文件中的jdk路劲都修改为绝对路径,
3)修改主要的配置文件搭建高可用得hadoop-hdfs系统
slaves配置如下(这里表示datanode,namenode服务器中都需要配置)
rs2
rs3
rs4
首先hdfs-site.xml配置如下
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<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>rs1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>rs2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>rs1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>rs2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://rs1:8485;rs2:8485;rs3:8485/mycluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/var/sxt/hadoop/ha/jn</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
core-site.xml配置文件如下
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/sxt/hadoop/ha</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>rs2:2181,rs3:2181,rs4:2181</value>
</property>
第五、启动的顺序
1、首先需要将zookeeper集群启动起来
2
hadoop-daemon.sh start journalnode
jps
hdfs namenode -format
hadoop-daemon.sh start namenode
#在另一台namenode上执行下面的这奥命令进行同步
hdfs namenode -bootStrapStad=ndby
hdfs zkfs -formatZK
#最后启动hdfs
start-dfs.sh
如果关掉了zkfc,那么启动命令如下
hadoop-daemon.sh start zkfc