我是Hadoop
的新用户,我最近安装了Hive
和HBase
。
我在Hive中创建了几个表,查询以MapReduce
方式运行。另外,当我说'得到''在HBase中,它没有在MapReduce中运行,这就是为什么我认为它具有高延迟。
我在这里很少有人怀疑。
如果我有需要处理实时流数据的应用程序,我应该使用什么?Hive
或HBase
?
我可以使用HBase
选项安装MapReduce
,以便get
中的HBase
命令以MapReduce
方式运行
提前致谢
答案 0 :(得分:1)
HBase是数据库,它没有选择为其操作运行mapreduce,如get,scan,put ......
如果您想以mapreduce样式处理HBase中的数据您需要创建自定义地图缩减作业,或使用其他分析工具,如Hive,Pig,......
Hive是建立在Hadoop mapreduce之上的数据仓库平台。它可以读取来自许多不同来源的数据,如HDFS文件,S3文件,HBase等......
希望这对你有用。
答案 1 :(得分:0)
如果我有一个需要处理实时流数据的应用程序,我应该使用什么 - Hive还是HBase?
Hive最适合批量处理的需求。我永远不会喜欢它以满足我的实时需求。正如您所注意到的,当您发出Hive查询时,它首先会转换为MapReduce作业,然后为您提供结果。这涉及一些延迟。
但真正的问题是如何处理实时流数据。 HBase和Hive都是允许我们在现有Hadoop集群之上存储数据的系统。当然,您可以在稍后阶段使用HBase API / Hive查询编写程序来处理数据。但是那不会是你的流媒体数据的实时处理,恕我直言。
当您说流数据处理时,它意味着您打算随时处理您的数据,而不必存储它(尽管您可以同时存储它)。像 STORM 这样的工具就是为此而设的。看看吧。
我可以使用MapReduce选项安装HBase,以便HBase中的get命令以MapReduce方式运行吗?
HBase和MapReduce都是两回事。 获取和扫描等操作是特定于HBase的,它们不能用作MapReduce作业(与Hive查询不同)。但是你绝对可以使用HBase和MapReduce从/向你的HBase表获取/放入数据。有关详细信息,请参阅 this 。
HTH