hadoop 机架 指的是什么
答案:1 悬赏:30 手机版
解决时间 2021-01-29 00:15
- 提问者网友:寂寞撕碎了回忆
- 2021-01-28 16:39
hadoop 机架 指的是什么
最佳答案
- 五星知识达人网友:人间朝暮
- 2021-01-28 18:19
hadoop 机架感知配置
一、背景:
1、机器多,跨机架
2、机架内网络带宽
特点:
hadoop对机架的感知并非是自适应的,需要人为指定
启动时,将rack的信息保存在内存中
尽量将所有的副本分布到不同的rack中
二、副本存放策略
由于hadoop的HDFS对数据文件的分布式存放是按照分块block存储,每个block会有多个副本(默认为3),并且为了数据的安全和高效,所以hadoop默认对3个副本的存放策略为:
第一个block副本放在和client所在的node里(如果client不在集群范围内,则这第一个node是随机选取的)。
第二个副本放置在与第一个节点不同的机架中的node中(随机选择)。
第三个副本放置在与第二个副本所在节点同一机架的另一个节点上
如果还有更多的副本就随机放在集群的node里。
三、配置
基于主机的位置分配块 - 管理员提供了一个脚本,它告诉Hadoop的一个节点是在哪个机架 - 脚本的输入参数:主机ip或主机名
-脚本输出:机架id
-可以使用shell或python脚本
hadoop启用机架感知,增加配置项
topology.script.file.name
/path/to/RackAware.py
四、机架识别python脚本
#!/usr/bin/python
#-*-coding:UTF-8 -*-
import sys
rack = {"ocdata01":"rack1",
"ocdata02":"rack1",
"ocdata03":"rack1",
"ocdata04":"rack2",
"ocdata05":"rack2",
"ocdata06":"rack2",
"10.1.253.91":"rack1",
"10.1.253.92":"rack1",
"10.1.253.93":"rack1",
"10.1.253.94":"rack2",
"10.1.253.95":"rack2",
"10.1.253.96":"rack2",
}
if __name__=="__main__":
print "/" + rack.get(sys.argv[1],"rack0")
五、机架识别 shell脚本
#!/bin/bash
conf="ocdata01:10.1.253.91:/rack1\nocdata02:10.1.253.92:/rack1\nocdata03:10.1.253.93:/rack1\nocdata04:10.1.253.94:/rack2\nocdata05:10.1.253.95:/rack2\nocdata06:10.1.253.96:/rack2\n"
ip=$1
rack=`echo -e $conf|grep $ip|awk -F':' '{print $3}'`
echo $rack
一、背景:
1、机器多,跨机架
2、机架内网络带宽
特点:
hadoop对机架的感知并非是自适应的,需要人为指定
启动时,将rack的信息保存在内存中
尽量将所有的副本分布到不同的rack中
二、副本存放策略
由于hadoop的HDFS对数据文件的分布式存放是按照分块block存储,每个block会有多个副本(默认为3),并且为了数据的安全和高效,所以hadoop默认对3个副本的存放策略为:
第一个block副本放在和client所在的node里(如果client不在集群范围内,则这第一个node是随机选取的)。
第二个副本放置在与第一个节点不同的机架中的node中(随机选择)。
第三个副本放置在与第二个副本所在节点同一机架的另一个节点上
如果还有更多的副本就随机放在集群的node里。
三、配置
基于主机的位置分配块 - 管理员提供了一个脚本,它告诉Hadoop的一个节点是在哪个机架 - 脚本的输入参数:主机ip或主机名
-脚本输出:机架id
-可以使用shell或python脚本
hadoop启用机架感知,增加配置项
topology.script.file.name
/path/to/RackAware.py
四、机架识别python脚本
#!/usr/bin/python
#-*-coding:UTF-8 -*-
import sys
rack = {"ocdata01":"rack1",
"ocdata02":"rack1",
"ocdata03":"rack1",
"ocdata04":"rack2",
"ocdata05":"rack2",
"ocdata06":"rack2",
"10.1.253.91":"rack1",
"10.1.253.92":"rack1",
"10.1.253.93":"rack1",
"10.1.253.94":"rack2",
"10.1.253.95":"rack2",
"10.1.253.96":"rack2",
}
if __name__=="__main__":
print "/" + rack.get(sys.argv[1],"rack0")
五、机架识别 shell脚本
#!/bin/bash
conf="ocdata01:10.1.253.91:/rack1\nocdata02:10.1.253.92:/rack1\nocdata03:10.1.253.93:/rack1\nocdata04:10.1.253.94:/rack2\nocdata05:10.1.253.95:/rack2\nocdata06:10.1.253.96:/rack2\n"
ip=$1
rack=`echo -e $conf|grep $ip|awk -F':' '{print $3}'`
echo $rack
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯