分享

[疑问]分布式环境下hive的外部表是如何存储的?

xingoo 发表于 2016-8-25 12:13:27 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 8 9825
内部表是管理在hdfs中的,而外部表一般是指定了服务器本地的一个目录。

那么,问题是:如果再分布式环境下创建的外部表,是如何进行文件的存储的?与hdfs的原理是一样的么?
如果是这样,是谁去扮演namenode的角色的?

已有(8)人评论

跳转到指定楼层
nextuser 发表于 2016-8-25 16:39:21

hive分为客户端和服务端,相信如果楼主配置过hive,应该就清楚了。
hive配置分为服务端配置和客户端配置。
服务端相当于master,客户端应该是一些相关请求。不过服务端比作master感觉有些不太恰当。

在删除的时候,内存表和外部表是有区别的,在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!

更多:
hive内部表与外部表区别详细介绍
http://www.aboutyun.com/forum.php?mod=viewthread&tid=7458


回复

使用道具 举报

easthome001 发表于 2016-8-25 16:40:18
外部表是你指定路径的,甚至本地路径都可以
回复

使用道具 举报

xingoo 发表于 2016-8-26 09:56:27
nextuser 发表于 2016-8-25 16:39
hive分为客户端和服务端,相信如果楼主配置过hive,应该就清楚了。
hive配置分为服务端配置和客户端配置 ...

楼上说的,我都理解。

不太理解的是,如果是正常的内部表,导入数据的流程是:linux本地文件-->hdfs文件-->数据表(hdfs文件)。后续的操作都是针对这个hdfs文件。

那么外部表呢?linux本地文件-->hdfs文件-->linux本地?这个文件一直都存储在client端么?那么要进行分布式计算的时候,难道每个节点都要拷贝一次数据?
回复

使用道具 举报

NEOGX 发表于 2016-8-28 19:10:02
xingoo 发表于 2016-8-26 09:56
楼上说的,我都理解。

不太理解的是,如果是正常的内部表,导入数据的流程是:linux本地文件-->hdfs文 ...


那么外部表呢?linux本地文件-->hdfs文件-->linux本地?这个文件一直都存储在client端么?那么要进行分布式计算的时候,难道每个节点都要拷贝一次数据?
出现这个问题,是因为没有对hdfs一个正确的理解。
如果是本地的,那么就存储在本地即可
如果存储在hdfs,hadoop会自动分发的


回复

使用道具 举报

xingoo 发表于 2016-8-28 19:48:53
NEOGX 发表于 2016-8-28 19:10
那么外部表呢?linux本地文件-->hdfs文件-->linux本地?这个文件一直都存储在client端么?那么要进行分 ...

hdfs的确有点薄弱...如果存储在本地,就不需要进行拷贝分发了么?
回复

使用道具 举报

NEOGX 发表于 2016-8-28 21:53:56
xingoo 发表于 2016-8-28 19:48
hdfs的确有点薄弱...如果存储在本地,就不需要进行拷贝分发了么?

本地-非分布式自然不需要的
回复

使用道具 举报

NEOGX 发表于 2016-8-28 21:56:07
建议看些hadoop的相关视频,应该就清楚了。

推荐:
hadoop新手入门视频
http://www.aboutyun.com/forum.php?mod=viewthread&tid=5324




淘宝相关视频:

hadoop生态系统零基础入门及大数据实战








回复

使用道具 举报

xingoo 发表于 2016-8-29 12:18:56
NEOGX 发表于 2016-8-28 21:56
建议看些hadoop的相关视频,应该就清楚了。

推荐:

多谢多谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条