我对Hbase概念很新。据我所知,HBase的底层文件系统只是HDFS。
我只想了解,如果在单个群集中我已经在HDFS中有一些数据了。我尝试在HBase中导入它(使用Pig / Hive脚本),它会以Hbase支持(HFiles)的形式在HDFS中创建另一个相同数据的副本(HBase的底层文件系统是HDFS)吗?
或者它会创建对相同HDFS数据的引用?
答案 0 :(得分:0)
是的,它会将导入数据的副本存储在HDFS中(如StoreFiles / HFiles),因为HBase只能使用自己的文件集进行操作。也许你会发现这个nice overview很有意思。
您可以直接使用存储在HDFS中的数据进行操作,而无需使用EXTERNAL HIVE table将其导入HBase:
CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT,
page_url STRING, referrer_url STRING,
ip STRING COMMENT 'IP Address of the User',
country STRING COMMENT 'country of origination')
COMMENT 'This is the staging page view table'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
STORED AS TEXTFILE
LOCATION '<hdfs_location>';
在Hadoop世界中,拥有相同数据的多个副本(尽管使用不同的格式)应该不是问题,因为存储不被视为限制因素,因为它基于商品硬件,所以它便宜且易于扩展。实际上,如果您有足够的输入数据,那么您的Hive / Pig / MapReduce作业通常需要数百甚至数千GB(中间数据)来处理您的工作。