我已经看了半天的白皮书和 youtube 视频,并且相信我对这项技术有适当的了解,但在我开始我的项目之前,我想确保它是正确的。
因此,这就是我认为我知道的。
当我了解 hadoop 和 hbase 的架构时,它们几乎像这样建模
-----------------------------------------
| Mapreduce |
-----------------------------------------
| Hadoop | <-- hbase export--| HBase |
| | --apache pig --> | |
-----------------------------------------
| HDFS |
----------------------------------------
简而言之,HBase 是一个完全不同的数据库引擎,针对恰好在 HDFS 上运行的实时更新和查询进行了调整,并且与 Mapreduce 兼容。
现在,假设以上是正确的,这就是我认为我知道的其他内容。
- Hadoop 从头到尾都是为大数据而设计的。该引擎使用分布式仅附加系统,这意味着一旦插入数据,您就无法删除数据。要访问数据,您可以使用 Mapreduce,或 HDFS shell 和 HDFS API。
- Hadoop 不喜欢小块,它从来没有打算成为一个实时系统。您不想在每个文件中存储一个人和地址,实际上您会在每个文件中存储一百万个人和地址并插入大文件。
- 另一方面,HBase 是一个非常典型的 NoSql 数据库引擎,在精神上与 CouchDB、RavenDB 等相比。显着的区别是它使用 hadoop 的 HDFS 构建,使其能够可靠地扩展到仅受钱包限制的大小。
- Hadoop 是文件系统 (HDFS) 和 Java API 的集合,用于在 HDFS 上执行计算。HBase 是一个 NoSql 数据库引擎,它使用 HDFS 跨集群高效地存储数据
- 要构建一个 Mapreduce 作业来访问来自 Hadoop 和 HBase 的数据,最好使用 HBase 导出将 HBase 数据推送到 Hadoop 并编写您的作业来处理数据,但是 Mapreduce 可以一次访问两个系统。
- 设计 HBase 文件时必须非常小心,因为 HBase 本身不支持该文件中的索引字段,HBase 仅索引主键。许多提示和技巧有助于解决这个问题。
好的,所以如果我仍然准确到这一点,这将是一个有效的用例。
您使用 HBase 构建站点。您可以像使用任何其他 NoSql 或 RDBMS 一样使用 HBase 来构建您的功能。完成后,您将指标记录点放入代码中,以便在 log4j 中记录指标。您在 log4j 中创建一个新的附加程序,其规则是当日志文件达到 1 gig 大小时,将其推送到 hadoop 集群,删除它,创建一个新文件,继续生活。
之后,Mapreduce 开发人员可以编写一个例程,使用 HBase 导出从 HBase 获取数据集,例如用户 ID 列表,然后转到存储在 Hadoop 中的日志并通过系统查找每个用户的面包屑路径对于给定的时间跨度。
好的,说了这么多,现在针对具体问题。陈述 1 - 6 是否准确?
** * ** * *** *编辑一个,我根据收到的答案更新了我上面的信念。