hadoop—通过多线程写入hdfs与使用诸如hbase/hive之类的选项

kgsdhlau  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(384)

我需要使用javaapi以高效的方式批量写入hadoop系统。只是看看这里的选项。
与使用诸如hbase/hive之类的选项相比,通过多线程写入hdfs是一项昂贵的操作。

uwopmtnx

uwopmtnx1#

hive和hbase是两种不同的工具。hbase是一个数据库,hive是一个查询引擎。hbase不同于hive和hadoop。
现在回答您的问题,您可以使用mapreduce和javaapi编写hdfs,如果您的程序对您正在处理的数据非常有效。那么map reduce可以比hive更快。其主要原因是您在hive中编写的任何查询都会转换为map reduce程序。因此,归根结底,mapreduce程序的效率才是最重要的。因此,如果你能编写一个更好、更高效的程序,那么它可以比hive query更快。

jaql4c8m

jaql4c8m2#

在回答问题之前有一件事,我认为你在概念上有点困惑。
hadoop:mapreduce+hdfs(分布式文件系统)。
Hive只是hdfs上的一层。它根本不是一个文件系统。将hdfs与hive进行比较是没有意义的。
hbase是一个非关系数据库,可以运行在hadoop之上,并为您提供随机数据访问/查询功能。hdfs本身不支持在随机位置读/写。
引用hadoop-权威指南:
hdfs是基于这样一种思想构建的:最有效的数据处理模式是一次写入,多次读取的模式。数据集通常是从源代码生成或复制的,然后随着时间的推移对该数据集执行各种分析。每次分析都会涉及数据集的很大一部分(如果不是全部的话),因此读取整个数据集的时间比读取第一条记录的延迟更重要。
我认为这篇文章(hadoophdfs简介)将对您非常有帮助。
为了进一步回答您的问题,hbase将数据作为键/值对存储在列数据库中。您可以将hbase看作hadoop环境的一个扩展,它允许您快速地读/写数据。它将数据存储在hdfs中。
一些特点:
从大数据集中访问少量数据的低延迟。您可以从十亿行表中快速访问单行。
灵活的数据模型和数据是由行键索引。
快速扫描表格。
4按写操作和数据总量进行扩展。

相关问题