返回顶部
首页 > 资讯 > 精选 >Hadoop机架怎么配置
  • 157
分享到

Hadoop机架怎么配置

2023-06-02 01:06:04 157人浏览 独家记忆
摘要

本篇内容介绍了“hadoop机架怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!背景Hadoop在设计时考虑到数据的安全与高效,数据文

本篇内容介绍了“hadoop机架怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

背景

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

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

配置

默认情况下,namenode启动时候日志是这样的:

2013-09-22 17:27:26,423 INFO org.apache.hadoop.net.NetworkTopology: Adding a new node: /default-rack/ 192.168.147.92:50010

每个IP 对应的机架ID都是 /default-rack ,说明hadoop的机架感知没有被启用。

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

<property>

<name>topology.script.file.name</name>

<value>/home/bigdata/apps/hadoop/etc/hadoop/topology.sh</value>

</property>

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

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

#!/bin/bash

HADOOP_CONF=/home/bigdata/apps/hadoop/etc/hadoop

while [ $# -gt 0 ] ; do

nodeArg=$1

exec<${HADOOP_CONF}/topology.data

result=""

while read line ; do

ar=( $line )

if [ "${ar[0]}" = "$nodeArg" ]||[ "${ar[1]}" = "$nodeArg" ]; then

result="${ar[2]}"

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和主机名都配上。

这样配置后,namenode启动时候日志是这样的:

2013-09-23 17:16:27,272 INFO org.apache.hadoop.net.NetworkTopology: Adding a new node: /dc1/rack3/ 192.168.147.94:50010

说明hadoop的机架感知已经被启用了。

查看HADOOP机架信息命令:

./hadoop dfsadmin -printTopology

Rack: /dc1/rack1

192.168.147.91:50010 (tbe192168147091)

192.168.147.92:50010 (tbe192168147092)

Rack: /dc1/rack2

192.168.147.93:50010 (tbe192168147093)

Rack: /dc1/rack3

192.168.147.94:50010 (tbe192168147094)

192.168.147.95:50010 (tbe192168147095)

192.168.147.96:50010 (tbe192168147096)

增加数据节点,不重启NameNode

假设Hadoop集群在192.168.147.68上部署了NameNode和DataNode,启用了机架感知,执行bin/hadoop dfsadmin -printTopology看到的结果:

Rack: /dc1/rack1

192.168.147.68:50010 (dbj68)

现在想增加一个物理位置在rack2的数据节点192.168.147.69到集群中,不重启NameNode。

首先,修改NameNode节点的topology.data的配置,加入:192.168.147.69 dbj69 /dc1/rack2,保存。

192.168.147.68 dbj68 /dc1/rack1

192.168.147.69 dbj69 /dc1/rack2

然后,sbin/hadoop-daemons.sh start datanode启动数据节点dbj69,任意节点执行bin/hadoop dfsadmin -printTopology 看到的结果:

Rack: /dc1/rack1

192.168.147.68:50010 (dbj68)

Rack: /dc1/rack2

192.168.147.69:50010 (dbj69)

说明hadoop已经感知到了新加入的节点dbj69。

注意:如果不将dbj69的配置加入到topology.data中,执行sbin/hadoop-daemons.sh start datanode启动数据节点dbj69,datanode日志中会有异常发生,导致dbj69启动不成功。

2013-11-21 10:51:33,502 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool BP-1732631201-192.168.147.68-1385000665316 (storage id DS-878525145-192.168.147.69-50010-1385002292231) service to dbj68/192.168.147.68:9000

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.net.NetworkTopology$InvalidTopologyException): Invalid network topology. You cannot have a rack and a non-rack node at the same level of the network topology.

at org.apache.hadoop.net.NetworkTopology.add(NetworkTopology.java:382)

at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.reGISterDatanode(DatanodeManager.java:746)

at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:3498)

at org.apache.hadoop.hdfs.server.namenode.NameNoderpcServer.registerDatanode(NameNodeRpcServer.java:876)

at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB.registerDatanode(DatanodeProtocolServerSideTranslatorPB.java:91)

at org.apache.hadoop.hdfs.protocol.proto.DatanodeProtocolProtos$DatanodeProtocolService$2.callBlockingMethod(DatanodeProtocolProtos.java:20018)

at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453)

at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1002)

at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1701)

at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1697)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:415)

at org.apache.hadoop.security.UserGroupInfORMation.doAs(UserGroupInformation.java:1408)

at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1695)

at org.apache.hadoop.ipc.Client.call(Client.java:1231)

at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:202)

at $Proxy10.registerDatanode(Unknown Source)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:601)

at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:164)

at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:83)

at $Proxy10.registerDatanode(Unknown Source)

at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolClientSideTranslatorPB.registerDatanode(DatanodeProtocolClientSideTranslatorPB.java:149)

at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.register(BPServiceActor.java:619)

at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:221)

at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:660)

at java.lang.Thread.run(Thread.java:722)

节点间距离计算

有了机架感知,NameNode就可以画出下图所示的datanode网络拓扑图。D1,R1都是交换机,最底层是datanode。则H1的rackid=/D1/R1/H1,H1的parent是R1,R1的是D1。这些rackid信息可以通过topology.script.file.name配置。有了这些rackid信息就可以计算出任意两台datanode之间的距离,得到最优的存放策略,优化整个集群的网络带宽均衡以及数据最优分配。

distance(/D1/R1/H1,/D1/R1/H1)=0 相同的datanode

distance(/D1/R1/H1,/D1/R1/H2)=2 同一rack下的不同datanode

distance(/D1/R1/H1,/D1/R2/H4)=4 同一IDC下的不同datanode

distance(/D1/R1/H1,/D2/R3/H7)=6 不同IDC下的datanode

“Hadoop机架怎么配置”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Hadoop机架怎么配置

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

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

猜你喜欢
  • Hadoop机架怎么配置
    本篇内容介绍了“Hadoop机架怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!背景Hadoop在设计时考虑到数据的安全与高效,数据文...
    99+
    2023-06-02
  • 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中怎么配置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
  • 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
  • [hadoop全分布部署]虚拟机Hadoop集群配置/etc/hosts、配置无密码登录(SSH)
    👨‍🎓👨‍🎓博主:发量不足 个人简介:耐心,自信来源于你强大的思想和知识基础!! 📑📑本期更新内容:虚拟机Hadoop集群配置/etc/host...
    99+
    2023-09-07
    linux 服务器 运维
  • hadoop 伪分布配置
    配置 Hadoop 伪分布式 任务配置说明: VMware 15 Centos 6.5 java -jdk 1.8 hadoop-2.6.0-cdh5.14.0.tar.gz 第一步 自行安装虚拟机 第二...
    99+
    2015-12-19
    hadoop 伪分布配置
  • hadoop配置cpu个数
    Hadoop的配置文件中,可以通过以下配置参数来指定使用的CPU个数:1. yarn-site.xml 文件:- yarn.node...
    99+
    2023-10-11
    hadoop
  • Hadoop环境配置中的hive环境配置是怎么样的
    这篇文章给大家介绍Hadoop环境配置中的hive环境配置是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。将下载的hive压缩包拉到/opt/software/文件夹下安装包版本:apache-hive-3.1...
    99+
    2023-06-25
  • Hadoop多节点集群怎么安装配置
    本篇内容主要讲解“Hadoop多节点集群怎么安装配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hadoop多节点集群怎么安装配置”吧!1、集群部署介绍 1.1 Hadoop简介 H...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作