我知道hive map side join使用内存。 我可以使用SSD而不是内存吗? 我想通过将维度表放在SSD上来进行mapside连接。 有可能吗?
答案 0 :(得分:0)
我将通过向您解释Hadoop分布式缓存来尝试回答您的问题:
DistributedCache是Map-Reduce框架提供的一种工具,用于缓存应用程序所需的文件(在您的情况下为 ,您希望加入的 )。 / p>
DistributedCache假定通过URL指定的文件已经存在于文件系统( 这是您的SSD或HDD )的URL上指定的路径上,并且可以访问通过群集中的每台机器。
具有讽刺意味的是,决定是否放置地图的是hadoop框架工作 内存(RAM / YARN)或SSD / HDD中的文件,具体取决于映射文件 大小
虽然默认情况下,要在地图连接中使用的表的最大大小(作为小表)是1,000,000,000字节(大约1 GB),您也可以通过配置单元属性示例手动增加它:
set hive.auto.convert.join.noconditionaltask = true;
set hive.auto.convert.join.noconditionaltask.size = 2000000000;
在该节点上执行作业的任何任务之前,框架会将必要的文件复制到从属节点。它的效率源于这样一个事实,即每个作业只复制一次文件,并且能够缓存未在存档上存档的档案。
您可以在此链接上找到有关分布式缓存的更多信息:
https://hadoop.apache.org/docs/r2.6.3/api/org/apache/hadoop/filecache/DistributedCache.html
https://hadoop.apache.org/docs/r1.2.1/api/org/apache/hadoop/filecache/DistributedCache.html