topology.script.file.name
HDFS不能够自动判断集群中各个datanode的网络拓扑情况。这种机架感知需要topology.script.file.name属性定义的可执行文件(或者脚本)来实现,文件提供了IP->rackid的翻译。NameNode通过这个得到集群中各个datanode机器的rackid。如果topology.script.file.name没有设定,则每个IP都会翻译成/default-rack。
下面给出了一个script文件的c语言示例。这个文件需要处理多个输入参数的情况,每个参数是个ip。文件的输出对应就是rackid串。
int main(int argc , char *argv[])
{
for(int i=1 ;i< argc; i++)
{
char* ipStr = argv[i];
// 找到ip对应的rack设置,下面的

HDFS的副本放置策略利用机架感知,通过配置`topology.script.file.name`来确定datanode的rackid。网络拓扑中的距离计算影响副本放置,例如:同一datanode距离为0,同一rack为2,同一IDC为4,不同IDC为6。策略包括:第一个副本放client所在node,第二个副本放不同机架,第三个副本放同一机架但不同node,更多副本随机分布。
&spm=1001.2101.3001.5002&articleId=4820266&d=1&t=3&u=df7737c5133243e9ac69fa2f948c41ac)
5735

被折叠的 条评论
为什么被折叠?



