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. 4种方法教你如何查看java对象所占内存大小

    摘要:本文讲述4种查看java对象所占内存大小的方法 本文分享自华为云社区<查看java对象所占内存大小>,作者:xiewenci. 计算java对象所占内存大小 1.使用jdk8自带AP ...

  2. Min_25 筛与杜教筛

    杜教筛 \(\) 是 \(\) 的前缀和,\(\), \(\) 同理. 假设 \( × = ℎ\) ,并且 \(, \) 易求出,\(\) 难求出. 那么 \[H () = \sum_{ \cdot ...

  3. 普通 Docker 与 Kubernetes 对比

    Docker提供基本容器管理 API 和容器镜像文件格式Kubernetes 管理运行容器的(物理或虚拟)主机群集,如果 Docker 是 OCP 的"内核",Kubernetes ...

  4. P2599 [ZJOI2009]取石子游戏 做题感想

    题目链接 前言 发现自己三岁时的题目都不会做. 我发现我真的是菜得真实. 正文 神仙构造,分讨题. 不敢说有构造,但是分讨我只服这道题. 看上去像是一个类似 \(Nim\) 游戏的变种,经过不断猜测结 ...

  5. AI 企业多云存储架构实践 | 深势科技分享

    2020 年末,谷歌旗下 DeepMind 研发的 AI 程序 AlphaFold2 在国际蛋白质结构预测竞赛上取得惊人的准确度,使得" AI 预测蛋白质结构"这一领域受到了空前的 ...

  6. List集合_介绍&常用方法和ArrayList集合

    List集合 我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢? 接下来,我们一起学习Collection中的常用几个子类(java.util ...

  7. Python List 中的append 和 extend 的区别

    方法的参数不同 append 方法是向原list的末尾添加一个对象(任意对象:如元组,字典,列表等),且只占据一个原list的索引位,添加后无返回值,直接在原列表中添加. list.append(ob ...

  8. Solution -「Hdu3037」Saving Beans

    Prob. 给定 \(m\) 个相同球,\(n\) 个不同的盒子. 求在这 \(n\) 个盒子中放不超过 \(m\) 个球的方案数,并对 \(p\) 取模. 其中 \(1 \leq n, m \leq ...

  9. Hadoop中HDFS 的相关进程以及工作流程图(详细流程图)

  10. [spring]spring的bean自动装配机制

    7.bean的自动装配 是spring满足bean依赖的一种方式 spring会在上下文中自动寻找,并自动给bean装配属性 spring的装配方式: (1)手动装配 在people类中依赖了cat和 ...