我希望避免impala节点在创建表时已知理想的数据位置或布局的情况下不必要地通过网络从其他节点请求数据。这将有助于“非加法”操作,其中分区中的所有记录无论如何都需要在同一个位置(节点)(例如百分位)。
有没有可能告诉impala分区中的所有数据对于任何hdfs复制副本都应该位于同一个节点上?
在impalasql中,我不确定“partitioned by”子句是否提供了这个特性。在我的理解中,impala将其分区分块到hdfs上的单独文件中,但hdfs并不能保证相关文件或块在默认情况下的同一位置(而是试图实现相反的效果)。
发现了一些有关 Impala 对hdfs开发的影响的信息,但不清楚这些信息是否已经实施或仍在计划中:
http://www.slideshare.net/deview/aaron-myers-hdfs-impala (幻灯片23-24)
提前谢谢大家。
2条答案
按热度按时间vs3odd8k1#
不,这完全违背了使用分布式文件系统和mpp计算的目的。它还创建了一个单点故障和瓶颈,特别是当您讨论的是一个连接到自身的250gb表时。这正是hadoop设计用来解决的问题。分区数据在namenode的hdfs中创建子目录,然后在集群中的datanode中复制这些数据。
sy5wg1nm2#
关于您提到的幻灯片(“共址块副本”)——它是关于在Hadoop2.1中实现的hdfs特性(hdfs-2576)。它提供了一个javaapi来提示hdfs块应该放在哪里。
到2014年为止,它还没有在impala中使用,但它看起来确实像是在为此打基础——因为它将为impala提供相当于在传统mpp数据库中指定分发密钥的性能。