hadoop HA 配置 + zookeeper 服务注册
环境测试 6台机器 centos6.7 x64
master ( namenode/cluster )
10.10.100.101 namenode1
10.10.100.105 namenode2
ResourceManager
manager
datanode (datanode,NodeManager,JournalNnode,QuprumPeerMain)
10.10.100.102 datanode1 + zk1
10.10.100.103 datanode2 + zk2
10.10.100.104 datanode3 + zk3
节点服务部署:
节点服务创建
zookeeper/data/目录下建立myid文件
datanode1为1
datanode2为2
datanode3为3
配置文件:
配置core-site.xml
需要配置nameservice,hadoop 文件存储位置和Zookeeper集群来确保多个namenode之间的切换,修改后内容如下:
<configuration> <!-- 指定hdfs的nameservice为master -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master</value>
</property> <!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop/tmp</value>
</property> <!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>datanode1:,datanode2:,datanode3:</value>
</property> <property>
<name>ha.zookeeper.session-timeout.ms</name>
<value></value>
</property> </configuration>
配置hdfs-site.xml
hdfs-site.xml主要配置namenode的高可用;
<configuration>
<!--指定hdfs的nameservice为master,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>master</value>
</property>
<!-- master下面有两个NameNode,分别是namenode1,namenode2 -->
<property>
<name>dfs.ha.namenodes.master</name>
<value>namenode1,namenode2</value>
</property>
<!-- namenode1 的 RPC 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.master.namenode1</name>
<value>namenode1:</value>
</property>
<!-- namenode1 的http通信地址 -->
<property>
<name>dfs.namenode.http-address.master.namenode1</name>
<value>namenode1:</value>
</property>
<!-- namenode2 的 RPC 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.master.namenode2</name>
<value>namenode2:</value>
</property>
<!-- namenode2 的http通信地址 -->
<property>
<name>dfs.namenode.http-address.master.namenode2</name>
<value>namenode2:</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://datanode1:8485;datanode2:8485;datanode3:8485/master</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 (工作目录)-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/hadoop/journal</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.master</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置sshfence隔离机制 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 使用隔离机制时需要ssh免登陆 --> <property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property> <property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/hdfs/name</value>
</property> <property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/hdfs/data</value>
</property> <property>
<name>dfs.replication</name>
<value></value>
</property> <property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property> </configuration>
配置mapreduce文件mapred-site.xml
默认是没有mapred-site.xml文件的,里面有一个mapred-site.xml.example,重命名为mapred-site.xml
mv mapred-site.xml.example mapred-site.xml
配置内容如下,这里就是指明mapreduce是用在YARN之上来执行的。
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property> <property>
<name>mapreduce.job.maps</name>
<value></value>
</property> <property>
<name>mapreduce.job.reduces</name>
<value></value>
</property> </configuration>
配置yarn-site.xml
做规划的时候就是配置hadoop03来运行yarn,配置如下:
<configuration>
<!-- 指定resourcemanager地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>manager</value>
</property> <!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property> <!-- <property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property> <property>
<name>yarn.log-aggregation.retain-seconds</name>
<value></value>
</property> <property>
<name>yarn.resourcemanager.zk-address</name>
<value>datanode1:,datanode3:,datanode2:</value>
</property> <property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster-yarn</value>
</property> <property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property> <property>
<name>yarn.resourcemanager.ha.master</name>
<value>namenode1,namenode2</value>
</property> <property>
<name>yarn.resourcemanager.hostname.namenode1</name>
<value>namenode1</value>
</property> <property>
<name>yarn.resourcemanager.hostname.namenode2</name>
<value>namenode2</value>
</property> <property>
<name>yarn.resourcemanager.scheduler.address.namenode1</name>
<value>namenode1:</value>
</property> <property>
<name>yarn.resourcemanager.scheduler.address.namenode2</name>
<value>namenode2:</value>
</property> <property>
<name>yarn.resourcemanager.resource-tracker.address.namenode1</name>
<value>namenode1:</value>
</property> <property>
<name>yarn.resourcemanager.resource-tracker.address.namenode2</name>
<value>namenode2:</value>
</property> <property>
<name>yarn.resourcemanager.address.namenode1</name>
<value>namenode1:</value>
</property> <property>
<name>yarn.resourcemanager.address.namenode2</name>
<value>namenode2:</value>
</property> <property>
<name>yarn.resourcemanager.admin.address.namenode1</name>
<value>namenode:</value>
</property> <property>
<name>yarn.resourcemanager.admin.address.namenode2</name>
<value>namenode2:</value>
</property> <property>
<name>yarn.resourcemanager.webapp.address.namenode1</name>
<value>namenode1:</value>
</property> <property>
<name>yarn.resourcemanager.webapp.address.namenode2</name>
<value>namenode2:</value>
</property> <property>
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
<value>true</value>
</property> <property>
<name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
<value>true</value>
</property> <property>
<name>yarn.resourcemanager.ha.automatic-failover.zk-base-path</name>
<value>/yarn-leader-election</value>
</property> --> <property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property> <property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property> <property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property> <property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property> </configuration>
在hadoop master 上启动journalnode
[root@hadoop01 hadoop-2.7.]# sbin/hadoop-daemons.sh start journalnode
journalnode的节点是datanode1、datanode2、datanode3,这三台机器上会出现JournalNode
[root@hadoop04 zookeeper-3.4.]# jps
JournalNode
Jps
QuorumPeerMain
在hadoop上格式化hadoop hadoop namenode -format hadoop 上格式化 zk
hdfs zkfc -formatZK hdfs zkfc –formatZK
--格式化 zookeeper custer-ha主目录
hadoop HA 配置 + zookeeper 服务注册的更多相关文章
- Zookeeper服务注册与发现原理浅析
了解Zookeeper的我们都知道,Zookeeper是一种分布式协调服务,在分布式应用中,主要用来实现分布式服务的注册与发现以及分布式锁,本文我们简单介绍一下Zookeeper是如何实现服务的注册与 ...
- 启动Hadoop HA Hbase zookeeper spark
服务器角色 服务器 192.168.58.180 192.168.58.181 192.168.58.182 192.168.58.183 Name CentOSMaster Slvae1 Slave ...
- Zookeeper 服务注册和发现
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理 ...
- Linux上搭建zookeeper服务注册中心
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- 如何优化Spring Cloud微服务注册中心架构?
作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...
- 三(1)、springcloud之Eureka服务注册与发现
1.认识Eureka Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务架 ...
- silky微服务框架服务注册中心介绍
目录 服务注册中心简介 服务元数据 主机名称(hostName) 服务列表(services) 终结点 时间戳 使用Zookeeper作为服务注册中心 使用Nacos作为服务注册中心 使用Consul ...
- 基于SpringCloud的服务注册和调用
一:服务的注册和发现 Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry(注册登记)和Service Discovery(发现)实现.也是s ...
- zookeeper系列之:独立模式部署zookeeper服务
一.简述 独立模式是部署zookeeper服务的三种模式中最简单和最基础的模式,只需一台机器即可,独立模式仅适用于学习,开发和生产都不建议使用独立模式.本文介绍以独立模式部署zookeeper服务器的 ...
随机推荐
- MSSQL约束【转】
为了减少数据冗余和使数据库内容变的严谨,MSSQL数据库里引入了关系和约束.我们平时做一些小程序,需要使用到MSSQL数据库的时候大多没有严格去规划一下数据库的设计,但是真正开发的时候需要你严格的进行 ...
- html 佈局
html常見佈局方式有以下幾種: 1.使用div的html 利用div可以為html實現多列佈局. 2.使用html5的網站佈局, 利用html新增的header.footer.nav.section ...
- 利用caffe自带的Makefile编译自定义so文件
1.文件目录结构 caffe-root |--include |--example |--modules |--test.h |--test.cpp |--python |--src |--tools ...
- 荣耀实锤Magic2或将助力AI,再次带动成长?
临近年底,热闹了一年的手机圈纷纷偃旗息鼓,准备为明年3月的新品发力.然而今天(12月7日),恰逢节气大雪,@荣耀手机 在微博发布了一张预热海报,随后荣耀总裁赵明转发这条微博表示「关于技术,真的有很多话 ...
- 当你觉得大学没学到Linux时的感想
你的大学生活是什么样的呢?你在大学有学到特殊的技能吗?你可以在大学毕业的时候找到一份满意的工作吗?当这些问题摆在你面前的时候,你会迷茫吗,绝大多数的人在毕业的时候并不能找到一份好的工作,那不是因为你的 ...
- 在 Linux 上安装配置 BitTorrent Sync [转]
背景介绍:目前我们线上的前端服务器数量比较多,超过200多台,每次发布新应用的时候,都是将软件包放在一台专门的Push服务器上,再由所有的前端服务器通过rsync自动同步.但随着前端服务器的数量越来越 ...
- 7种JVM垃圾收集器特点,优劣势、及使用场景
今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 一.常见的垃圾收集器有3类 1.新生代的收集器包括 Serial PraNew Pa ...
- [USACO 2018 December Contest]作业总结
t1 Convention 题目大意 每一头牛都有一个来的时间,一共有\(n\)辆车,求出等待时间最长的那头牛等待的最小时间. 解法 第一眼看到这道题还以为是\(2018noip\)普及组的t3魔鬼题 ...
- Linux下Vim编辑器访问系统剪切板
默认情况下VIM使用的是内置的寄存器,而不是X Window的剪切板 启用系统剪切板支持 可以使用vim --version | grep clipboard查看,若clipboard前显示-标记,而 ...
- STL总结
容器类放入的都是元素的拷贝,而非引用.所以如果需要对元素做出改动,最好是把元素存在data[N]数组中,而仅仅在容器中存放数组下标. 函数传递容器类参数时,需要传引用,否则会超时. vector ve ...