我了解Hadoop的组件是什么,但我的问题是: 作为最终用户,如何在不担心数据存储的情况下访问Hadoop中的文件?
因此,在使用Pig / Hive命令时,如果数据存储是HDFS还是HBase,我应该担心吗?
谢谢
答案 0 :(得分:1)
首先,HDFS是一个文件系统而HBase是一个数据库所以是的,你应该考虑到这一点,因为你不能以同样的方式访问它们。
了解这一点,Pig和Hive让您比纯Java更容易访问数据。例如,Hive允许您以接近SQL的方式查询HBase。
以同样的方式,你可以浏览和管理猪的文件,就像在一台标准机器上使用shell一样。
总而言之,您不应该担心 文件与Hadoop一起存储,而是 存储它们(HDFS或HBase)。
答案 1 :(得分:0)
几乎所有的hadoop组件都建立在HDFS上。
HBase是一个将数据存储在分布式文件系统上的数据库(hdfs,可以是其他fs)。
Pig是一种编程语言,用于映射减少作业。
hive是一种基于HDFS构建的数据库,它的SQL将生成以映射减少作业。
使用hive或pig的udf,几乎可以访问hdfs上的任何格式数据。
原谅我的英语不好。 :d
答案 2 :(得分:0)
Hadoop 生态系统中的数据需要存储在分布式文件系统中。 HDFS 是最受欢迎的此类文件系统。
但HDFS'价值主张在于提供非常高的顺序读取和写入(扫描)吞吐量。如果你想快速随机读写怎么办?
HBase进来的地方。 HBase 位于HDFS之上并启用快速随机读写。
但是您存储数据以询问有关该数据的有趣问题。这就是 MapReduce 的用武之地。您在MapReduce编程范例中表达了您的问题,它可以为您提供所需的答案。但它是低级别的,你需要成为一名程序员。 Spark 是 MapReduce 的替代方案 - 当您需要提出比MapReduce更复杂的问题时,更好地进行了优化。 Hive 和 Pig 是比MapReduce更高级别的抽象。 Hive让您在SQL中提出问题,并将您的SQL转换为MapReduce(或Spark)作业。尽管随着Spark的日益普及,您可以跳过Hive并使用 SparkSQL (Spark的Dataframe / Dataset API),它们也可以解释SQL。
Hive和Pig之间的差异在Alan Gates(猪项目PMC成员和Programming Pig的作者)的优秀post中得到了解释。
答案 3 :(得分:0)
当数据为非结构化且没有架构时,将使用“ Pig”。 推荐使用数据库-HDFS。
Hive用于数据的结构化并具有可用的架构。 推荐使用数据库-Hbase。