自定义机架感知

副本节点的选择(机架感知)
1、默认情况下
第一个副本在client所处的节点上,如果客户端在集群之外,(在win7上运行程序,写文件到集群上),随机选一个。
第二个副本和第一个副本在不同机架上,节点随机选
第三个副本和第二个副本在相同的机架上,节点随机
2、hadoop2.7.2
第一个副本在client所处的节点上,如果客户端在集群之外,(在win7上运行程序,写文件到集群上),随机选一个
第二个副本与第一个副本在同一机架上
第三个副本在不同的机架上

{对于副本来讲,有一个副本在不同的机架上,可以保证可用性,在client上写入数据,用网络拓扑距离计算,在client上写入两个副本的速度强于 将两个副本写入到另外的机架上}

自定义机架感知
1、创建类实现DNSToSwitchMapping接口
2、配置文件core-site.xml

    <property><name>net.topology.node.switch.mapping.impl</name><value>自己定义的jar的全路径</value></property>
3、分发core-site.xml
4、编译程序并打包成jar,分发给所有节点的hadoop的classpath下/app/hadoop/shared/hadoop/common/lib/

hadoop不能探测到节点所在的交换机,只能知道节点的IP地址和主机名称,所以需要自己定义规则。
package Hadoop;

import org.apache.hadoop.net.DNSToSwitchMapping;import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;/*** 2018/7/5* 16:11* 自定义机架感知*/
public class RackAware implements DNSToSwitchMapping {/*** 传递的是客户端的ip列表,返回机架感知的路径列表*/@Overridepublic List<String> resolve(List<String> names) {ArrayList<String> list = new ArrayList<String>();if (names != null && names.size() > 0) {for (String name : names) {if (name.startsWith("s")) {String ip = name.substring(1);Integer intIP = Integer.parseInt(ip);if (intIP < 103) {list.add("/rack1/" + intIP);} else {list.add("/rack2/" + intIP);}} else if (name.startsWith("192")) {int ip = Integer.parseInt(name.substring(name.lastIndexOf(".")) + 1);if (ip < 103) {list.add("/rack2/" + ip);} else {list.add("/rack2/" + ip);}}}}
//  写入文件try {FileOutputStream fos = new FileOutputStream("");for (String name : list) {fos.write((name + "\r\n").getBytes());}fos.close();} catch (Exception e) {e.printStackTrace();}return list;}@Overridepublic void reloadCachedMappings() {}@Overridepublic void reloadCachedMappings(List<String> list) {}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

想要玩转实现负载均衡,你知道这些吗?

转载自 想要玩转实现负载均衡&#xff0c;你知道这些吗&#xff1f; 一、前言 互联网早期&#xff0c;业务流量比较小并且业务逻辑比较简单&#xff0c;单台服务器便可以满足基本的需求&#xff1b;但随着互联网的发展&#xff0c;业务流量越来越大并且业务逻辑也越来越复杂&…

按钮设计

一、按钮的常识&#xff1a; 1.状态&#xff1a;正常状态、鼠标放上去的状态、按下时的状态 2.按钮的格式&#xff1a;bmp、gif、png、jpg(应用程序中的) gif、png、jpg、swf(网页中的) 二、按钮的表现形式&#xff1a; 1.图形方式 2.文字方式 3.综合方式 4.动画方式 三、按钮的…

netcore实践:跨平台动态加载native组件

缘起netcore框架下实现基于zmq的应用。在.net framework时代&#xff0c;我们进行zmq开发由很多的选择&#xff0c;比较常用的有clrzmq4和NetMQ。 其中clrzmq是基于libzmq的Interop包装&#xff0c; NetMQ是100%C#的zmq实现&#xff08;基于AsyncIO组件&#xff09;。以上两种…

>>右移运算符

>>是右移运算符。假设x5&#xff0c;那么x的二进制为0101&#xff0c;x>>1表示x右移1位&#xff0c;即把最右边一位的1删掉&#xff0c;变为010&#xff0c;此时x2&#xff1b; 仍然设x5&#xff0c;二进制0101&#xff0c;x>>2表示x右移2位&#xff0c;把最…

如何实现酷狗音乐pc页面点击播放时,打开多个歌曲播放时,始终在一个播放页面,(标签页的通讯)

大致有两种思路&#xff0c; 一种是通过wind.open()方法传第二个参数&#xff0c; A页面&#xff1a; //点击跳转播放页函数function toPlayPage(){window.open(path/xxxx/xxxx?name音乐名,music)//第二个参数写一个定值&#xff0c;代表跳转页面都为music标签页&#xff0…

LOGO设计

一、什么是LOGO&#xff1a; 是用一种特殊文字或图像组成的大众传播符号&#xff0c;是人们相互交流的一种视觉语言。 二、LOGO的特征&#xff1a; 1.识别性 2.领导性 3.同一性 4.涵盖性 5.革新性 三、LOGO的格式&#xff1a; 1.为了便于以后更改&#xff1a;ai cdr eps 2.在使…

Redis进阶之内存模型

转载自 Redis进阶之内存模型 前言 Redis是目前最火爆的内存数据库之一&#xff0c;通过在内存中读写数据&#xff0c;大大提高了读写速度&#xff0c;可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时&#xff0c;会接触Redis的5种对象类型&#xff08;字符…

React中jsx的规则

jsx语法规则&#xff1a;1.定义虚拟DOM时&#xff0c;不要写引号。2.标签中混入JS表达式时要用{}。3.样式的类名指定不要用class&#xff0c;要用className。4.内联样式&#xff0c;要用style{{key:value}}的形式去写。5.只有一个根标签6.标签必须闭合7.标签首字母(1).若小写字…

C#将引入可空的引用类型

是的&#xff0c;标题没错。C#其中一份新提案假定&#xff0c;所有的引用类型在默认情况下都是不可空的。在新语法下&#xff0c;你需要显式地标明一个引用变量是可空的&#xff0c;就像对值类型所做的那样。 和值类型一样&#xff0c;T是指不可空类型&#xff0c;而T?是指可…

Android中SlidingDrawer开发报错You need to use a Theme.AppCompat theme (or descendant) with this activity.

Android抽屉开发报错You need to use a Theme.AppCompat theme (or descendant) with this activity. 方法1&#xff1a; 创建的activity时&#xff0c;如果不是那么强烈需要继承自AppCompatActivity&#xff0c;就直接继承Activity。 如将activity继承自AppCompatActivity&…

特效字的设计

一、文字的属性&#xff1a; 1.字体&#xff1a;楷体、宋体、行书、小篆 2.字号&#xff1a;14px 16px 20px 3.颜色&#xff1a;red green 4.特殊属性&#xff1a;文字的粗体和斜体 二、特效字的表现形式 1.文字笔画的变形 2.文字的变化与对比 3.文字的特殊材质 4.综合形式 三、…

Redis进阶之持久化

转载自 Redis进阶之持久化 一、Redis高可用概述 在介绍Redis高可用之前&#xff0c;先说明一下在Redis的语境中高可用的含义。 我们知道&#xff0c;在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&am…

React遍历数组

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jsx小练习</title> </head> <body><!-- 准备好一个“容器” --><div id"test"></div><!-- 引入rea…

未来的.NET之多重继承

通过抽象接口引入有限形式的多重继承&#xff0c;这一.NET新提议颇具争议性。该特性是受Java默认方法&#xff08;Default Methods&#xff09;的启发。 默认方法的目的在于允许开发人员修改已发布的抽象接口。修改已发布接口将会产生破坏性的更改&#xff0c;因此在Java和.NE…

Android build.gradle(app)介绍

/**首先第一行应用了一个插件&#xff0c;一般有两个值可选&#xff0c;com.android.application表示这是一个应用程序模块&#xff0c;* com.android.library表示这是一个库模块。应用模块和库模块的最大区别是&#xff1a;一个是可以直接运行的&#xff0c;一个只能做为代码库…

React中的方法调用

onClick{demo}//可以调用函数 onClick{demo()}//返回的是undefide

企业级负载均衡如何实现

转载自 企业级负载均衡如何实现 负载均衡简介 首先&#xff0c;我们来了解一下什么是负载均衡&#xff1a; 在一个大型网站中&#xff0c;在线用户有时可能有几千个甚至上万个之多。如果一个用户的请求需要服务使用0.02秒来处理&#xff0c;那么该服务实例每秒钟将只能处理…

C#语法快速热身

一、C#中的条件语句&#xff1a; 1.if(条件){ //代码 }else{ //代码 } 2.多重if: if(条件){ //代码 }else if(条件){ //代码 }else{ //代码 } 3.嵌套if if(条件){ if(条件){ //代码 }else{ //代码 } }else { //代码 } 4.switch结构&#xff1a; switch(整型、字符串){ case 1: …

微服务架构师的职责——《微服务设计读书笔记》

如何定义架构师 架构师从英文单词Architect翻译而来&#xff0c;在英文中&#xff0c;Architect原来的意思是“建筑师”。作者吐槽英文中架构师与传统的建筑师单词相同&#xff0c;但实际的工作性质并不相同&#xff0c;以致于在英文的语境中会造成理解上的差异。 传统的建筑师…

Android RaingBar评分条的使用

概述 RatingBar是基于SeekBar和ProgressBar的扩展&#xff0c;用星型来显示等级评定。使用RatingBar的默认大小时&#xff0c;用户可以触摸/拖动或使用键来设置评分&#xff0c;它有两种样式(小风格用ratingBarStyleSmall&#xff0c;大风格用ratingBarStyleIndicator)&#x…