HDFS高可用完全分布式搭建
集群规划:
NN-1:Namenode(active)
NN-1:Namenode(standby)
DN :Datanode
ZK:Zookeeper
ZKFC:Zookeeper Failover Controller
JUN:Journalnode
服务器名称 | 进程 |
---|---|
node01 | NN-1、ZKFC、JUN |
node02 | NN-2、DN、ZK、ZKFC、JUN |
node03 | DN、ZK、JUN |
node04 | DN、ZK |
- 1.同步服务器时间
①各个节点安装ntp
——命令:yum install ntp
②上网查找最新的时间服务器,这里使用阿里的
——地址:ntp1.aliyun.com
③同步时间
——命令:ntpdate ntp1.aliyun.com
- 2.配置免密登录
node01->node01
node01->node02
node01->node03
node01->node04
node02->node01
①所有节点执行
——命令:ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
②在node01节点执行,将node01的公钥加入到其他节点的白名单中
——命令:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node03
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node04
②在node02节点执行,将node02的公钥加入到node01的白名单中
——命令:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
注:node01~04为服务器名称,可用ip地址替换
- 3.所有节点配置JDK
①卸载自带jdk
——命令:yum remove *openjdk*
②下载想要的jdk版本并进入所在目录,解压
——命令:tar -zxvf jdk-8u131-linux-x64.tar.gz
③设置环境变量,打开etc下的profile文件
——命令:vim /etc/profile
④添加jdk所在目录
——命令:export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131
——命令:export PATH=$PATH:$JAVA_HOME/bin
⑤重新执行profile文件
——命令:source /etc/profile
或. /etc/profile
⑥检查新安装的jdk
——命令:java -version
显示以下内容jdk就配置完成了,还需要在每个节点配置jdk。
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
- 4.修改hdfs-site.xml配置文件
文件位于:/解压目录/etc/hadoop/hdfs-site.xml
<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>node01:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>node02:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>node01:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>node02:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node01:8485;node02:8485;node03: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_rsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
- 5.修改core-site.xml配置文件
文件位于:/解压目录/etc/hadoop/core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>node02:2181,node03:2181,node04:2181</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/abc/hadoop/cluster</value>
</property>
-
6.修改slaves配置文件
文件位于:/解压目录/etc/hadoop/slaves
将localhost修改为node02 node03 node04 -
7.将配置好的安装包分发到其他节点上
——命令:
scp -r hadoop-2.6.5 node02:·pwd·
scp -r hadoop-2.6.5 node03:·pwd·
scp -r hadoop-2.6.5 node04:·pwd·
注:安装包目录应该统一
- 8.搭建Zookeeper集群
8.1解压
——命令:tar zxf zookeeper-3.4.10.tar.gz
8.2修改zookeeper-3.4.10/conf目录下的llzoo_sample.cfg的名称,改为zoo.cfg
——命令:mv zoo_sample.cfg zoo.cfg
8.3修改zoo.cfg
① dataDir=/var/zfg/zookeeper
② server.1=node02:2888:3888
③ server.2=node03:2888:3888
④ server.3=node04:2888:3888
8.4在dataDir目录下创建一个myid文件,在这个文件中写上当前节点ID号,ID号为server的后缀(1,2,3)
8.5将配置好的zookeeper安装包拷贝到node03 node04
——命令:
scp -r zookeeper-3.4.10 node03:·pwd·
scp -r zookeeper-3.4.10 node04:·pwd·
8.6拷贝完毕后,在各自节点上创建myid号,ID号要依次递增
8.9启动Zookeeper
——命令:zkServer.sh start
查看Zookeeper状态,一个为leader,两个为follower则配置完成
——命令:zkServer.sh status
- 9.格式化NameNode
9.1在node01、node02、node03执行如下命令
——命令:hadoop-daemon.sh start journalnode
9.2随机选择一台NameNode执行(node01或node02)
——命令:
hdfs namenode -format
hadoop-daemon.sh start namenode
9.3在另外一台NameNode节点执行如下命令
——命令:hdfs namenode -bootstrapStandby
-
10.启动ZKFC
——命令:hdfs zkfc -formatZK
-
**11.关闭所有节点上的进程 **
——命令:stop-dfs.sh
-
**12.启动HDFS **
——命令:start-dfs.sh
至此高可用完全分布式的HDFS就搭建完成了
未完待续…