Joh*_*han 7 hadoop hbase hdfs apache-spark
我知道HBASE是一个柱状数据库,它将表的结构化数据按列而不是按行存储到HDFS中.我知道Spark可以从HDFS读/写,并且有一些用于Spark的HBASE连接器现在也可以读写HBASE表.
问题:
1)在HBASE之上将Spark分层而不是单独使用HBASE带来了哪些附加功能?它只取决于程序员的能力,还是有任何性能原因可以做到这一点?Spark有什么东西可以做,HBASE完全不能做?
2)从上一个问题出发,何时应该在HDFS和SPARK之间添加HBASE而不是直接使用HDFS?
1) 在 HBASE 之上分层 Spark 而不是单独使用 HBASE 带来的附加功能是什么?这仅取决于程序员的能力还是有任何性能原因可以这样做?有没有 Spark 可以做而 HBASE 单独做不到的事情?
在 Splice Machine,我们使用 Spark 在 HBase 之上进行分析。HBase 没有执行引擎,而 spark 在 HBase 之上提供了一个称职的执行引擎(中间结果、关系代数等)。HBase 是 MVCC 存储结构,Spark 是执行引擎。它们是彼此的天然补充。
2)源于上一个问题,什么时候应该在 HDFS 和 SPARK 之间添加 HBASE 而不是直接使用 HDFS?
小读、并发写/读模式、增量更新(大多数 etl)
祝你好运...
我想说的是,使用分布式计算引擎(如 Apache Hadoop 或 Apache Spark)基本上意味着对任何数据源进行全面扫描。这就是一次处理所有数据的重点。
HBase 擅长挑选特定的记录,而 HDFS 在完整扫描时的性能肯定要高得多。
当您从 Hadoop 或 Spark 写入 HBase 时,通常不会将其写入数据库 - 它非常慢!相反,您希望将数据直接写入 HFile,然后将它们批量导入。
人们发明 SQL 数据库的原因是因为当时 HDD 非常非常慢。最聪明的人花了几十年的时间发明了不同种类的索引来巧妙地利用瓶颈资源(磁盘)。现在人们试图发明 NoSQL——我们喜欢关联数组,我们需要它们是分布式的(这就是 NoSQL 的本质)——它们非常简单且非常方便。但是在当今 SSD 便宜的世界中,没有人需要数据库——在大多数情况下,文件系统已经足够好了。但是,有一点是它必须是分布式的,以保持分布式计算。
回答原始问题:
这是针对完全不同问题的两种不同工具。
我认为如果您使用 Apache Spark 进行数据分析,则必须避免使用 HBase(Cassandra 或任何其他数据库)。它们可用于保留聚合数据以构建报告或挑选有关用户或项目的特定记录,但这是在处理之后发生的。
| 归档时间: |
|
| 查看次数: |
5433 次 |
| 最近记录: |