HDFS 高可用分布式环境搭建

作者:Grey

原文地址:

博客园:HDFS 高可用分布式环境搭建

CSDN:HDFS 高可用分布式环境搭建

首先,一定要先完成分布式环境搭建 并验证成功

然后在 node01 上执行stop-dfs.sh

重新规划每个节点的职责

host NN JNN DN ZKFC ZK
node01
node02
node03
node04

修改node01~node04节点上的配置文件

vi $HADOOP_HOME/etc/hadoop/core-site.xml

<configuration></configuration>内的配置信息修改为:

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

然后修改node01~node04上的如下配置文件

执行vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration></configuration>内的配置信息修改为:

<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/var/bigdata/hadoop/ha/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
​ <value>/var/bigdata/hadoop/ha/dfs/data</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>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>
<!-- 以下是JN在哪里启动,数据存那个磁盘 -->
<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/bigdata/hadoop/ha/dfs/jn</value>
</property>
<!-- HA角色切换的代理类和实现方法,我们用的ssh免密 -->
<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>
<!-- 开启自动化: 启动zkfc: -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>

安装 zookeeper

zookeeper 下载地址

zookeeper安装包上传到 node02,node03,node04 的/opt/bigdata目录下

在 node02 , node03 , node04 下执行cd /opt/bigdata

解压tar xf zookeeper-3.4.6.tar.gz

重命名mv zookeeper-3.4.6 zookeeper

修改 node02 ,node03 ,node04 上的 zookeeper 配置文件:

首先cd /opt/bigdata/zookeeper/conf/

执行cp zoo_sample.cfg zoo.cfg

执行vi zoo.cfg

配置如下配置项

修改如下配置dataDir=/var/bigdata/hadoop/zk

新增如下配置:

server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888

保存

然后在 node02 上,执行:

mkdir /var/bigdata/hadoop/zk

echo 1 > /var/bigdata/hadoop/zk/myid

在 node03 上,执行:

mkdir /var/bigdata/hadoop/zk

echo 2 > /var/bigdata/hadoop/zk/myid

在 node04 上,执行:

mkdir /var/bigdata/hadoop/zk

echo 3 > /var/bigdata/hadoop/zk/myid

在 node02,node03,node04 下配置环境变量

执行vi /etc/profile

新增如下配置

export ZOOKEEPER_HOME=/opt/bigdata/zookeeper

追加到 PATH 中

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin

执行source /etc/profile

启动顺序:

在 node02,node03,node04 上分别启动 zookeeper

执行zkServer.sh start

在 node01,node02,node03 上分别启动 journalnode

执行hadoop-daemon.sh start journalnode

选择一个 NN 做格式化,注:只有第一次搭建做,以后不用做

我们选择 node02,在 node02 上执行hdfs namenode -format

启动这个格式化的 NN ,以备另外一台同步

在 node02 上执行hadoop-daemon.sh start namenode

格式化 zk, 注:只有第一次搭建做,以后不用做

在 node01 上执行hdfs zkfc -formatZK

验证 zk 是否格式化成功,在 node04 上执行zkCli.sh

打开 zk 客户端

执行ls /

输出

[zookeeper, hadoop-ha]

显示了新建的 hadoop-ha 目录,验证成功

在 node01 上执行start-dfs.sh

启动成功

测试,在 node01 上,执行如下命令,

hdfs dfs -mkdir /bigdata

hdfs dfs -mkdir -p /user/root

hdfs dfs -put hadoop-2.6.5.tar.gz /user/root

打开浏览器

通过:http://node01:50070/explorer.html#/user/root>

可以看到上传的文件

接下来,我们切换我们用 root 搭建的HDFS 用 god 这个用户来启动

首先,停止 hdfs

在 node01 上,执行stop-dfs.sh

node01~node04上都执行:

添加用户useradd god

修改密码passwd god

密码可以自定义。

将资源和用户绑定:

chown -R god /opt/bigdata/hadoop

chown -R god /var/bigdata/hadoop

node01~node04都切换成 god 用户,在node01~node04上都执行su god

使用 god 用户执行如下命令ssh localhost

分别输入 yes 以及 god 的密码

node01~node04

执行:

cd /home/god/.ssh

ssh-keygen -t dsa -P '' -f ./id_dsa

然后在node01~node04上执行如下四条语句(每个节点都要执行这四条语句)

ssh-copy-id -i id_dsa node01

输入yes,god密码

ssh-copy-id -i id_dsa node02

输入yes,god密码

ssh-copy-id -i id_dsa node03

输入yes,god密码

ssh-copy-id -i id_dsa node04

输入yes,god密码

修改 node01~node04 中 hdfs-site.xml 的配置

在 node01~node04 上执行vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml

将如下配置:

<property>
​ <name>dfs.ha.fencing.ssh.private-key-files</name>
​ <value>/root/.ssh/id_dsa</value>
</property>

修改为:

<property>
​ <name>dfs.ha.fencing.ssh.private-key-files</name>
​ <value>/home/god/.ssh/id_dsa</value>
</property>

完成如上配置,就可以使用 god 用户启动 hdfs 了

在 node01 上,使用 god 用户执行start-dfs.sh

验证:

在 node01 上执行:

su god

hdfs dfs -mkdir  /temp

hdfs dfs -chown god:ooxx /temp

hdfs dfs -chmod 775 /temp

查看控制台:

http://node01:50070/explorer.html#/

目录创建成功

Permission Owner Group Size Replication Block Size Name
drwxrwx--- god ooxx 0 B 0 0 B temp

且组 ooxx 拥有所有权限

我们再新建一个用户 good ,并且将 good 加入 ooxx 这个组,good 这个用户就可以正常上传文件到/temp目录下了

在 node01 上执行:

su root

useradd good

passwd good

设置good的密码。

然后添加组:

groupadd ooxx

将 good 这个用户添加进入 ooxx 这个组

usermod -a -G ooxx good

然后执行:

su god

在 god 用户下执行:

hdfs dfsadmin -refreshUserToGroupsMappings

然后切换 good 用户

su good

cd /home/good

touch good.txt

然后执行:

vi good.txt

随意输入一些内容,保存

最后执行

hdfs dfs -put good.txt /temp

更新成功。

HDFS 高可用分布式环境搭建的更多相关文章

  1. 从头开始搭建一个Spring boot+ActiveMQ高可用分布式环境

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  2. Hbase 完全分布式 高可用 集群搭建

    1.准备 Hadoop 版本:2.7.7 ZooKeeper 版本:3.4.14 Hbase 版本:2.0.5 四台主机: s0, s1, s2, s3 搭建目标如下: HMaster:s0,s1(备 ...

  3. Hadoop框架:HDFS高可用环境配置

    本文源码:GitHub·点这里 || GitEE·点这里 一.HDFS高可用 1.基础描述 在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Sta ...

  4. 【转】Hadoop HDFS分布式环境搭建

    原文地址  http://blog.sina.com.cn/s/blog_7060fb5a0101cson.html Hadoop HDFS分布式环境搭建 最近选择给大家介绍Hadoop HDFS系统 ...

  5. 大数据:Hadoop(JDK安装、HDFS伪分布式环境搭建、HDFS 的shell操作)

    所有的内容都来源与 Hadoop 官方文档 一.Hadoop 伪分布式安装步骤 1)JDK安装 解压:tar -zxvf jdk-7u79-linux-x64.tar.gz -C ~/app 添加到系 ...

  6. HDFS 伪分布式环境搭建

    HDFS 伪分布式环境搭建 作者:Grey 原文地址: 博客园:HDFS 伪分布式环境搭建 CSDN:HDFS 伪分布式环境搭建 相关软件版本 Hadoop 2.6.5 CentOS 7 Oracle ...

  7. HDFS 分布式环境搭建

    HDFS 分布式环境搭建 作者:Grey 原文地址: 博客园:HDFS 分布式环境搭建 CSDN:HDFS 分布式环境搭建 准备四个Linux实例 每个实例对应的 host 和 ip 地址如下 nod ...

  8. Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...

  9. Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...

随机推荐

  1. 面试突击60:什么情况会导致 MySQL 索引失效?

    为了验证 MySQL 中哪些情况下会导致索引失效,我们可以借助 explain 执行计划来分析索引失效的具体场景. explain 使用如下,只需要在查询的 SQL 前面添加上 explain 关键字 ...

  2. grafana整合zabbix

    1. 安装grafana wget https://dl.grafana.com/oss/release/grafana-7.5.7-1.x86_64.rpm rpm -i --nodeps graf ...

  3. python各种BUG报错解决

    报错1 python学习交流群:660193417### Could not build atari-py: Command '['cmake', '..']' returned non-zero e ...

  4. SQL SERVER 算法面试题,自己再插入数据时,本想一次性复制10条数据,结果变成了1024条。产生一个算法bug,最后记录一下

  5. gslb(global server load balance)技术的一点理解

    gslb(global server load balance)技术的一点理解 前言 对于比较大的互联网公司来说,用户可能遍及海内外,此时,为了提升用户体验,公司一般会在离用户较近的地方建立机房,来服 ...

  6. 更强的 JsonPath 兼容性及性能测试之2022版(Snack3,Fastjson2,jayway.jsonpath)

    2022年了,重新做了一份json path的兼容性与性能测试.三个市面上流行框架比较性测试. 免责声明:可能测试得方式不对而造成不科学的结果(另外,机器不同结果会有不同),可以留言指出来.以下测试数 ...

  7. D2C小练习

    前端智能化现状及未来展望 简介 DEsign: Sketch,Photoshop ,Figma 起源:微软2017年, Design to code code: 前端 核心原理 design----& ...

  8. STC8H开发(十三): I2C驱动DS3231高精度实时时钟芯片

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  9. 全面吃透JAVA Stream流操作,让代码更加的优雅

    全面吃透JAVA Stream流操作,让代码更加的优雅 在JAVA中,涉及到对数组.Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行 ...

  10. VMware 无法为处于开启或挂起状态的去你及或快照创建克隆

    VMware 要克隆的时候出现 无法为处于开启或挂起状态的去你及或快照创建克隆 因为属于挂起或者运行中的不能克隆,因为会发生数据的变化