HDFS 高可用分布式环境搭建
HDFS 高可用分布式环境搭建
作者:Grey
原文地址:
首先,一定要先完成分布式环境搭建 并验证成功
然后在 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 高可用分布式环境搭建的更多相关文章
- 从头开始搭建一个Spring boot+ActiveMQ高可用分布式环境
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Hbase 完全分布式 高可用 集群搭建
1.准备 Hadoop 版本:2.7.7 ZooKeeper 版本:3.4.14 Hbase 版本:2.0.5 四台主机: s0, s1, s2, s3 搭建目标如下: HMaster:s0,s1(备 ...
- Hadoop框架:HDFS高可用环境配置
本文源码:GitHub·点这里 || GitEE·点这里 一.HDFS高可用 1.基础描述 在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Sta ...
- 【转】Hadoop HDFS分布式环境搭建
原文地址 http://blog.sina.com.cn/s/blog_7060fb5a0101cson.html Hadoop HDFS分布式环境搭建 最近选择给大家介绍Hadoop HDFS系统 ...
- 大数据:Hadoop(JDK安装、HDFS伪分布式环境搭建、HDFS 的shell操作)
所有的内容都来源与 Hadoop 官方文档 一.Hadoop 伪分布式安装步骤 1)JDK安装 解压:tar -zxvf jdk-7u79-linux-x64.tar.gz -C ~/app 添加到系 ...
- HDFS 伪分布式环境搭建
HDFS 伪分布式环境搭建 作者:Grey 原文地址: 博客园:HDFS 伪分布式环境搭建 CSDN:HDFS 伪分布式环境搭建 相关软件版本 Hadoop 2.6.5 CentOS 7 Oracle ...
- HDFS 分布式环境搭建
HDFS 分布式环境搭建 作者:Grey 原文地址: 博客园:HDFS 分布式环境搭建 CSDN:HDFS 分布式环境搭建 准备四个Linux实例 每个实例对应的 host 和 ip 地址如下 nod ...
- Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...
- 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 ...
随机推荐
- Maven + SSM环境搭建
Maven + SSM 之前Maven+SSM都是照着搭建的,自己想写点什么的时候发现搭建的过程不清楚. 于是花了时间边整理思路边搭建,并把搭建过程记录下来. 视频看来终觉浅,还是需要自己动手实践,捋 ...
- 从位图到布隆过滤器,C#实现
前言 本文将以 C# 语言来实现一个简单的布隆过滤器,为简化说明,设计得很简单,仅供学习使用. 感谢@时总百忙之中的指导. 布隆过滤器简介 布隆过滤器(Bloom filter)是一种特殊的 Hash ...
- VisionPro · C# · 图像保存
根据客户要求,每次视觉取像运行完毕后,按需保存OK或NG图像,图像分两种: 1.带视觉工具运行结果图像: 2.相机取像原图,.bmp格式. 保存图像代码如下: using System; using ...
- MOEAD实现、基于分解的多目标进化、 切比雪夫方法-(python完整代码)
确定某点附近的点 答:每个解对应的是一组权重,即子问题,红点附近的四个点,也就是它的邻居怎么确定呢?由权重来确定,算法初始化阶段就确定了每个权重对应的邻居,也就是每个子问题的邻居子问题.权重的邻居通过 ...
- WPF 视频硬解码渲染播放(无空域)(支持4K、8K、高帧率视频)
MediaWPF 基于 .NET 6 实现视频硬解码渲染Demo(无空域问题) 代码实现仅供学习参考 本项目视频渲染通过显卡进行视频解码,CPU几乎不参与工作,并且不存在令人烦躁的空域问题. 在播放摄 ...
- 再测云原生数据库性能:PolarDB依旧最强,TDSQL-C、GaussDB变化不大
1.摘要 近期,腾讯云数据库在文章「腾讯云TDSQL-C重磅升级,性能全面领跑云原生数据库市场」中提到,某些场景下性能有非常大的提升,且超过国内某橙色云厂商.恰好,在5月份,我们对各个厂商的云原生数据 ...
- 常用API(Java)
常用API Object toString方法 场景:当我们使用toString方法想要输出对象变量时,官方提供的toString方法会直接输出对象所在的地址,而不是我们想要的对象变量,所以我们要把t ...
- python迭代器、生成器、yield理解
简介 yield关键字是python的一种高阶用法,使用yield的函数会返回一个生成器对象,生成器又是一个迭代器,与迭代器相类似的则是可迭代对象,下面首先介绍一下迭代器吧. 迭代器 在python中 ...
- python subprocess相关操作
python subprocess常用操作 1.subprocess模块的常用函数 函数 描述 subprocess.run() Python 3.5中新增的函数.执行指定的命令,等待命令执行完成后返 ...
- javascript原生style属性分析
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="U ...