设为首页 加入收藏

TOP

HDFS高可用性的完全分布式搭建过程
2019-03-12 12:12:21 】 浏览:20
Tags:HDFS 可用 完全 分布式 搭建 过程
版权声明:本文为博主原创文章,请评论后转载,谢谢合作!!! https://blog.csdn.net/qq_33247435/article/details/83017380

提前准备

1、准备四台centos服务器(一个wmware启动四个服务器就行)
2、关闭防火墙
3、配置静态ip
4、更改主机名
5、准备好jdk压缩包,下面是我的jdk压缩包,分享一下
链接:https://pan.baidu.com/s/1-AjRRbqinh-oa4VLai4WgA 提取码:syl3
6、准备一个hadoop压缩包;我这里有两个hadoop压缩包,我用的2.7。都可以用
hadoop-2.6.5.tar.gz链接:https://pan.baidu.com/s/1wRZct3nmlEifzr6LezII-g 提取码:cebl
hadoop-2.7.5.tar.gz链接:https://pan.baidu.com/s/1jT3SI9fyrE0-qkk2YFOzSg 提取码:vvku
(本部分可参考本人上一篇博客:HDFS完全分布式搭建过程

集群规划图

在这里插入图片描述

实验步骤

1、配置免密登录

node01->node01 node01->node02 node01->node03 node01->node04
node02->node01
1)、所有节点均要执行
ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
2)、以下命令只在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
3)、在node02节点执行,将node01的公钥加入到其他节点的白名单中
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
在这里插入图片描述

2、所有节点配置jdk

在系统环境变量及用户环境变量中均配置。(只在系统变量中配置可能导致后期JAVA_HOME找不到)

系统环境变量配置:
通过 vim /etc/profile 命令进入系统环境变量文件中,

在文件最后加入如下代码:
export JAVA_HOME=/opt/java/jdk1.8.0_151
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.5
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

下面进行用户环境变量配置:
先使用 cd ~ 进入指定文件目录
在通过 vim .bashrc 即可进入目标文件

同样在最后添加这三行代码:

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.5
export JAVA_HOME=/opt/java/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

配置完可以通过 source .bashrc 命令使该配置生效

3、修改hdfs-site.xml配置文件

将准备好的hadoop解压: tar zxvf hadoop压缩包的名字
在这里插入图片描述
解压完成后,进入生成的hadoop目录,下面这个目录就有要修改的文件
在这里插入图片描述
在指定位置添加代码:

<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>

在这里插入图片描述

4、修改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>

在这里插入图片描述

5、修改slaves配置文件

修改成下图效果:
在这里插入图片描述

6、将配置好的HDFS安装包拷贝到node02 node03 node04

通过: scp -r hadoop-2.6.5 root@node02:/opt/software/hadoop/
将配置好的HDFS安装包拷贝到node02 node03 node04.
首先在退回到下图目录:
在这里插入图片描述
然后输入拷贝命令,分别拷贝到其他机器上:
在这里插入图片描述
(注:pwd两边的符号是键盘Esc键下面的键)
scp -r hadoop-2.7.5 root@node02:‘pwd’
scp -r hadoop-2.7.5 root@node03:‘pwd’
scp -r hadoop-2.7.5 root@node04:‘pwd’

7、关闭所有java进程

输入命令: killall java

8、搭建zookeeper集群

1)、node02节点上传zookeeper压缩包,点击下载
2)、修改conf目录下的zoo_sample.cfg的名称,改为zoo.cfg
命令:mv zoo_sample.cfg zoo.cfg
3)、修改zoo.cfg(datadir可自行修改,其余三行需新增)
dataDir=/var/zfg/zookeeper
server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888
4)、在/var/zfg/zookeeper目录下创建一个myid文件
5)、将配置好的zookeeper安装包拷贝到node03 node04
6)、在node02节点 node03节点 node04节点的myid文件中写上当前节点ID号,node02写1,node03写2,node04写3;

9、启动zookeeper

在node02、node03、node04的zookeeper文件的bin目录下启动 命令:./zkServer.sh start

10、格式化NameNode(创建目录以及文件)

1)、在node01、node02、node03分别执行如下命令
hadoop-daemon.sh start journalnode
在这里插入图片描述
然后通过jps可以看出已经开启了journalnode进程
在这里插入图片描述
2)、随机选择一台NameNode执行(我选择在node01上启动):
hdfs namenode -format
hadoop-daemon.sh start namenode
3)、另外一台NameNode节点执行(我的node02):
hdfs namenode -bootstrapStandby

4)、格式化zkfc,只需要在node01或者node02的一个节点上执行
hdfs zkfc -formatZK

11、关闭所有节点上的进程

stop-dfs.sh

12、启动HDFS

start-dfs.sh
在这里插入图片描述
启动成功后可以在http://192.168.23.134:50070网址查看如下图:
在这里插入图片描述

13、启动HDFS

创建目录 hdfs dfs -mkdir -p /test/luo
在这里插入图片描述
执行成功之后可以在http://192.168.23.134:50070/explorer.html#/网址下查看新创建的目录,如下图
在这里插入图片描述


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇java hadoop   hdfs 上写文.. 下一篇Hadoop _ Hdfs   java.io.IO..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }