返回顶部
首页 > 资讯 > 精选 >hadoop机架感知怎么配置
  • 294
分享到

hadoop机架感知怎么配置

2023-06-03 02:06:23 294人浏览 八月长安
摘要

本篇内容主要讲解“hadoop机架感知怎么配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“hadoop机架感知怎么配置”吧!背景Hadoop在设计时考虑到数据的安全与高效,数据文件默认在hdf

本篇内容主要讲解“hadoop机架感知怎么配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“hadoop机架感知怎么配置”吧!

背景

Hadoop在设计时考虑到数据的安全与高效,数据文件默认在hdfs上存放三份,存储策略为本地一份,同机架内其它某一节点上一份,不同机架的某一节点上一份。这样如果本地数据损坏,节点可以从同一机架内的相邻节点拿到数据,速度肯定比从跨机架节点上拿数据要快;同时,如果整个机架的网络出现异常,也能保证在其它机架的节点上找到数据。为了降低整体的带宽消耗和读取延时,HDFS会尽量让读取程序读取离它最近的副本。如果在读取程序的同一个机架上有一个副本,那么就读取该副本。如果一个HDFS集群跨越多个数据中心,那么客户端也将首先读本地数据中心的副本。那么Hadoop是如何确定任意两个节点是位于同一机架,还是跨机架的呢?答案就是机架感知。

默认情况下,hadoop的机架感知是没有被启用的。所以,在通常情况下,hadoop集群的HDFS在选机器的时候,是随机选择的,也就是说,很有可能在写数据时,hadoop将第一块数据block1写到了rack1上,然后随机的选择下将block2写入到了rack2下,此时两个rack之间产生了数据传输的流量,再接下来,在随机的情况下,又将block3重新又写回了rack1,此时,两个rack之间又产生了一次数据流量。在job处理的数据量非常的大,或者往hadoop推送的数据量非常大的时候,这种情况会造成rack之间的网络流量成倍的上升,成为性能的瓶颈,进而影响作业的性能以至于整个集群的服务

配置

两种方式来配置机架感知。一种是通过配置一个脚本来进行映射;另一种是通过实现DNSToSwitchMapping接口的resolve()方法来完成网络位置的映射。

  hadoop自身是没有机架感知能力的,必须通过人为的设定来达到这个目的。在FSNamesystem类中的resolveNetworkLocation()方法负载进行网络位置的转换。其中dnsToSwitchMapping变量代表了完成具体转换工作的类,其值如下:

this.dnsToSwitchMapping = ReflectionUtils.newInstance(
conf.getClass("topology.node.switch.mapping.impl", ScriptBasedMapping.class,
DNSToSwitchMapping.class), conf);

也就是说dnsToSwitchMapping的值由“core-site.xml”配置文件中的"topology.node.switch.mapping.impl"参数指定。默认值为ScriptBasedMapping,也就是通过读提前写好的脚本文件来进行网络位置映射的。但如果这个脚本没有配置的话,那就使用默认值“default-rack”作为所有结点的网络位置。

下面就先说说第一种配置机架感知的方法,使用脚本来完成网络位置的映射。

要将hadoop机架感知的功能启用,配置非常简单,在NameNode所在节点的/home/bigdata/apps/hadoop-talkyun/etc/hadoop的core-site.xml配置文件中配置一个选项:

<property> 
<name>topology.script.file.name</name> 
<value>/home/bigdata/apps/hadoop-talkyun/etc/hadoop/topology.sh</value> 
</property> 
这个配置选项的value指定为一个可执行程序,通常为一个脚本,该脚本接受一个参数,输出一个值。接受的参数通常为某台datanode机器的ip地址,而输出的值通常为该ip地址对应的datanode所在的rack,例如”/rack1”。Namenode启动时,会判断该配置选项是否为空,如果非空,则表示已经启用机架感知的配置,此时namenode会根据配置寻找该脚本,并在接收到每一个datanode的heartbeat时,将该datanode的ip地址作为参数传给该脚本运行,并将得到的输出作为该datanode所属的机架ID,保存到内存的一个map中.

至于脚本的编写,就需要将真实的网络拓朴和机架信息了解清楚后,通过该脚本能够将机器的ip地址和机器名正确的映射到相应的机架上去。一个简单的实现如下:


在wiki上找到一个官方的配置脚本,可以参考一下。首先是shell脚本:
topology.sh:

#!/bin/bash 
HADOOP_CONF=/etc/hadoop/conf 
while [ $# -gt 0 ] ; do //$#代表执行命令时输入的参数个数
nodeArg=$1
exec< ${HADOOP_CONF}/topology.data //读入文件
result="" 
while read line ; do //循环遍历文件内容
ar=( $line ) 
if [ "${ar[0]}" = "$nodeArg" ] ; then
result="${ar[1]}"
fi
done 
shift 
if [ -z "$result" ] ; then
echo -n "/default/rack "
else
echo -n "$result "
fi
done

topology.data,格式为:节点(ip或主机名) /交换机xx/机架xx

192.168.147.91 tbe192168147091 /dc1/rack1 
192.168.147.92 tbe192168147092 /dc1/rack1 
192.168.147.93 tbe192168147093 /dc1/rack2 
192.168.147.94 tbe192168147094 /dc1/rack3 
192.168.147.95 tbe192168147095 /dc1/rack3 
192.168.147.96 tbe192168147096 /dc1/rack3 
需要注意的是,在Namenode上,该文件中的节点必须使用IP,使用主机名无效,而Jobtracker上,该文件中的节点必须使用主机名,使用IP无效,所以,最好ip和主机名都配上。

第二种配置机架感知的方法是通过实现DNSToSwitchMapping接口,重写resolve()方法完成的。这就需要自己写个java类来完成映射了。然后在“core-site.xml”配置文件中的“topology.node.switch.mapping.impl”指定自己的实现类。这样的话,在进行网络位置解析的时候,就会调用自己类中的resolve()方法来完成转换了。我写的比较简单,能完成功能就好,代码如下(大神飞过):

public class MyResolveNetworkTopology implements DNSToSwitchMapping {

private String[] hostnameLists = {"tt156", "tt163", "tt164", "tt165"};
private String[] ipLists = {"10.32.11.156", "10.32.11.163", "10.32.11.164", "10.32.11.165"};
private String[] resolvedLists = {"/dc1/rack1", "/dc1/rack1", "/dc1/rack2", "/dc1/rack2"};

@Override
public List<String> resolve(List<String> names) {
names = NetUtils.nORMalizeHostNames(names);

List <String> result = new ArrayList<String>(names.size());
if (names.isEmpty()) {
return result;
}

for (int i = 0; i < names.size(); i++) {
String name = names.get(i);
for(int j = 0; j < hostnameLists.length; j++){
if(name.equals(hostnameLists[j])) {
result.add(resolvedLists[j]);
} else if(name.equals(ipLists[j])) {
result.add(resolvedLists[j]);
}
}
}
return result;
}

我把这个自定义的MyResolveNetworkTopology类放在了core包的org.apache.hadoop.net目录下。所以在“core-site.xml”文件中的配置如下:  

<property>
<name>topology.node.switch.mapping.impl</name>
<value>org.apache.hadoop.net.MyResolveNetworkTopology</value>
<description> The default implementation of the DNSToSwitchMapping. It
invokes a script specified in topology.script.file.name to resolve
node names. If the value for topology.script.file.name is not set, the
default value of DEFAULT_RACK is returned for all node names.
</description>
</property>

以上两种方法在配置完成后,会在NameNode和JobTracker的log中打印出如下信息:
INFO org.apache.hadoop.net.NetworkTopology: Adding a new node: /dc1/rack3/ 192.168.147.94:50010

 这就说明机架感知配置成功了。

  总结一下以上两种方式。通过脚本配置的方式,灵活性很高,但是执行效率较低。因为系统要从JVM转到shell去执行;java类的方式性能较高,但是编译之后就无法改变了,所以灵活程度较低。所以要根据具体情况来选择策略.


补充:
查看HADOOP机架信息命令: 
./hadoop dfsadmin -printTopology

到此,相信大家对“hadoop机架感知怎么配置”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: hadoop机架感知怎么配置

本文链接: https://lsjlt.com/news/232246.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • hadoop机架感知怎么配置
    本篇内容主要讲解“hadoop机架感知怎么配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“hadoop机架感知怎么配置”吧!背景Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDF...
    99+
    2023-06-03
  • Hadoop配置机架感知(python脚
    昨天QQ群里提了一个hadoop运行效率分配的问题,总结一下,写个文章。集群使用hadoop-1.0.3有些hadoop集群在运行的时候,不完全是绝对平均的分配,不过需要尽可能平均的分配任务,避免某一台或者某几台服务器任务过重,其他服务器无...
    99+
    2023-01-31
    机架 Hadoop python
  • Hadoop机架怎么配置
    本篇内容介绍了“Hadoop机架怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!背景Hadoop在设计时考虑到数据的安全与高效,数据文...
    99+
    2023-06-02
  • HDFS机架感知
    通常大型 Hadoop 集群是以机架的形式来组织的,同一个机架上的不同节点间的网络状况比不同机架之间的更为理想,NameNode 设法将数据块副本保存在不同的机架上以提高容错性。 Hadoo...
    99+
    2018-07-20
    HDFS机架感知
  • Hadoop中怎么配置HBase单机环境
    Hadoop中怎么配置HBase单机环境,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  Hadoop HBase 单机环境怎么配置  在...
    99+
    2024-04-02
  • 1、大数据 Hadoop配置和单机Hadoop系统配置
    大数据 Hadoop配置和单机Hadoop系统配置 #查看服务器ip ip add #设置主机名称 hostnamectl set-hostname master bash #查看 hostname #绑定ip...
    99+
    2015-09-23
    1 大数据 Hadoop配置和单机Hadoop系统配置
  • 虚拟机怎么配置hadoop环境变量
    在配置Hadoop环境变量之前,首先需要安装并配置好虚拟机的操作系统。以下是配置Hadoop环境变量的步骤: 打开终端,编辑用户...
    99+
    2024-04-09
    hadoop
  • linux hadoop集群怎么配置
    在Linux上进行Hadoop集群配置需要以下步骤:1. 下载Hadoop:从Hadoop官方网站上下载最新版本的Hadoop,并解...
    99+
    2023-08-16
    linux hadoop
  • linux怎么配置hadoop集群
    配置Hadoop集群需要以下步骤: 安装和设置Java环境:Hadoop是基于Java开发的,所以首先需要安装Java环境。可以通...
    99+
    2024-03-14
    hadoop linux
  • HDFS中机架感知策略的示例分析
    这篇文章将为大家详细讲解有关HDFS中机架感知策略的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。通常来说大型的Hadoop集群是以机架的形式来组织的他们分布在不同的机架上面,同一个机架节点往往通...
    99+
    2023-06-02
  • 1、环境搭建-大数据 Hadoop配置和单机Hadoop系统配置
    大数据 Hadoop配置和单机Hadoop系统配置 #查看服务器ip ip add #设置主机名称 hostnamectl set-hostname master bash #查看 hostname #绑定ip...
    99+
    2014-11-18
    1 环境搭建-大数据 Hadoop配置和单机Hadoop系统配置
  • 怎么配置Hadoop启用LZO压缩
    这篇文章主要介绍“怎么配置Hadoop启用LZO压缩”,在日常操作中,相信很多人在怎么配置Hadoop启用LZO压缩问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么配置Hadoop启用LZO压缩”的疑惑有所...
    99+
    2023-06-03
  • hadoop配置文件是怎么样的
    这篇文章给大家介绍hadoop配置文件是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。文件名称                &n...
    99+
    2023-06-03
  • 在云服务器中怎么配置hadoop
    在云服务器中配置Hadoop需要以下步骤:1. 创建云服务器实例:根据云服务提供商的指引,在云平台上创建一个云服务器实例。确保实例的...
    99+
    2023-09-21
    云服务器 hadoop
  • Hadoop集群坏境怎么搭建配置
    这篇文章主要讲解了“Hadoop集群坏境怎么搭建配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hadoop集群坏境怎么搭建配置”吧!一、硬件的选择首先,关于Hadoop集群环境硬件的选择...
    99+
    2023-06-02
  • hadoop怎么配置密钥验证登录
    在Hadoop中,可以通过配置SSH密钥来实现用户的验证登录。以下是配置步骤: 生成密钥对:在要使用的用户的主机上运行以下命令生成...
    99+
    2024-03-02
    hadoop
  • hadoop核心配置文件怎么查看
    要查看 Hadoop 的核心配置文件,您可以使用以下命令来查找 Hadoop 安装目录中的配置文件: ls /path/to/had...
    99+
    2024-03-06
    hadoop
  • 机器学习中感知器是怎么产生的
    本篇内容介绍了“机器学习中感知器是怎么产生的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!感知器的诞生——从样本中学习神经网络的AI先驱们一...
    99+
    2023-06-02
  • [hadoop全分布部署]虚拟机Hadoop集群配置/etc/hosts、配置无密码登录(SSH)
    👨‍🎓👨‍🎓博主:发量不足 个人简介:耐心,自信来源于你强大的思想和知识基础!! 📑📑本期更新内容:虚拟机Hadoop集群配置/etc/host...
    99+
    2023-09-07
    linux 服务器 运维
  • Hadoop环境配置中的hive环境配置是怎么样的
    这篇文章给大家介绍Hadoop环境配置中的hive环境配置是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。将下载的hive压缩包拉到/opt/software/文件夹下安装包版本:apache-hive-3.1...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作