当前位置:  开发笔记 > 大数据 > 正文

hive/hadoop如何确保每个映射器处理本地数据?

如何解决《hive/hadoop如何确保每个映射器处理本地数据?》经验,为你挑选了1个好方法。

困扰我的2个基本问题:

我如何确定hive用于存储表的32个文件中的每一个都位于其独特的机器上?

如果发生这种情况,我怎么能确定如果hive创建了32个映射器,它们中的每一个都可以处理其本地数据?hadoop/hdfs是否能保证这种魔力,或者作为智能应用程序确实会发生这种情况?

背景:我有一台32台机器的蜂巢集群,并且:

我的所有表都是用 "CLUSTERED BY(MY_KEY) INTO 32 BUCKETS"

我用 hive.enforce.bucketing = true;

我验证了,确实每个表都存储在用户/配置单元/仓库中的32个文件中

我正在使用HDFS复制因子2

谢谢!



1> Spike Gronim..:

    数据放置由HDFS确定.它将尝试在机器上平衡字节.由于复制,每个文件将在两台机器上,这意味着您有两台候选机器用于本地读取数据.

    HDFS知道每个文件的存储位置,Hadoop使用此信息将映射器放置在与存储数据相同的主机上.您可以查看作业的计数器,以查看"本地数据"和"机架本地"映射任务计数.这是Hadoop的一个功能,您无需担心.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有