Hive 是数据仓库工具,再具体点就是一个 SQL 解析引擎,因为它即不负责存储数据,也不负责计算数据,只负责解析 SQL,记录元数据。Hive直接访问存储在 HDFS 中或者 HBase 中的文件,通过 MapReduce、Spark 或 Tez 执行... 并最终借助表和从 metastore 查找的分区元数据来生成执行计划。4. METASTORE:元数据库。存储 Hive 中各种表和分区的所有结构信息。5. EXECUTION ENGINE:执行引擎。负责提交 COMPILER 阶段编译好的执行计划到不...
从集群规模和数据量来说,HDFS 平台在公司内部已经成长为总数十万台级别服务器的大平台,支持了 10 EB 级别的数据量。**当前在字节跳动,** **HDFS** **承载的主要业务如下:**- Hive,HBase,日志服务,Kafka 数据... 由于我们的 DanceNN 底层元数据实现了本地目录树管理结构,因此我们 DanceNN 的启动优化都是围绕着这样的设计来做的。#### **多线程扫描和填充 BlockMap**在系统启动过程中,第一步就是读取目录树中保存的信息并...
如果需要对一个分区数据做更新,整个更新过程会涉及三个很重的操作。举一个更直观的例子。假设一个 Hive 分区存在 100,000 条记录,分布在 400 个文件中,我们需要更新其中的 100 条数据。这三个很重的操作分别是: ... 把所有可能更新的分区的文件的 Bloom Filter 加载进来,用来判断 Record Key 是否存在 | 轻量级,默认的索引方式 包含在数据文件的footer中。默认配置,不依赖外部系统,数据和索引保持一致性 || **HBase Index*...
如果需要对一个分区数据做更新,整个更新过程会涉及三个很重的操作。举一个更直观的例子。假设一个 Hive 分区存在 100,000 条记录,分布在 400 个文件中,我们需要更新其中的 100 条数据。这三个很重的操作分别是: ... 默认的索引方式 包含在数据文件的footer中。默认配置,不依赖外部系统,数据和索引保持一致性 || **HBase Index** | 维护每一个 Record Key 的 Parti...
如果需要对一个分区数据做更新,整个更新过程会涉及三个很重的操作。举一个更直观的例子。假设一个 Hive 分区存在 100,000 条记录,分布在 400 个文件中,我们需要更新其中的 100 条数据。这三个很重的操作分别是: ... 把所有可能更新的分区的文件的 Bloom Filter 加载进来,用来判断 Record Key 是否存在 | 轻量级,默认的索引方式 包含在数据文件的footer中。默认配置,不依赖外部系统,数据和索引保持一致性 || **HBase Index*...
如果需要对一个分区数据做更新,整个更新过程会涉及三个很重的操作。举一个更直观的例子。假设一个 Hive 分区存在 100,000 条记录,分布在 400 个文件中,我们需要更新其中的 100 条数据。这三个很重的操作分别是: ... 默认的索引方式 包含在数据文件的footer中。默认配置,不依赖外部系统,数据和索引保持一致性 || **HBase Index** | 维护每一个 Record Key 的 Parti...
如果需要对一个分区数据做更新,整个更新过程会涉及三个很重的操作。举一个更直观的例子。假设一个 Hive 分区存在 100,000 条记录,分布在 400 个文件中,我们需要更新其中的 100 条数据。这三个很重的操作分别是:1... 我们将介绍一个新的 Hudi 索引模块 Bucket Index 在字节跳动的设计与实践。# Bucket Index 产生背景索引带来的性能收益是非常巨大的, 尽管 Hudi 已支持 Bloom Filter Index、Hbase index 类型,但在字节跳动大规...
如果需要对一个分区数据做更新,整个更新过程会涉及三个很重的操作。举一个更直观的例子。假设一个 Hive 分区存在 100,000 条记录,分布在 400 个文件中,我们需要更新其中的 100 条数据。这三个很重的操作分别是:1... 把所有可能更新的分区的文件的 Bloom Filter 加载进来,用来判断 Record Key 是否存在 | 轻量级,默认的索引方式 包含在数据文件的footer中。默认配置,不依赖外部系统,数据和索引保持一致性 || **HBase Index** | 维...
如果需要对一个分区数据做更新,整个更新过程会涉及三个很重的操作。举一个更直观的例子。假设一个 Hive 分区存在 100,000 条记录,分布在 400 个文件中,我们需要更新其中的 100 条数据。这三个很重的操作分别是: ... 默认的索引方式 包含在数据文件的footer中。默认配置,不依赖外部系统,数据和索引保持一致性 || **HBase Index** | 维护每一个 Record Key 的 Parti...
数据通过 Kafka 流入不同的系统。对于离线链路,数据通常流入到 Spark/Hive 中进行计算,结果通过 ETL 导入到 HBase/ES/ClickHouse 等系统提供在线的查询服务。对于实时链路, 数据会直接进入到 HBase/ES 提供高并发低... Krypton 支持两层分区,第一层叫做 Partition,第二层我们称为 Tablet,每一层都支持 Range/Hash/List 的分区策略。每个 Tablet 都包含一组 Rowsets,每个 Rowset 内部数据按照 Schema 中定义的 Sort Key 排好序。 Row...
记录了一张表的元数据:包括表的 Schema、文件、分区、统计信息等。这种元数据计算具备高拓展性,为数据湖管理提供了更好的支持、更快的文件扫描。然而 Iceberg 的 MOR 方式也存在一些问题,比如社区版不支持只更新部... 除了支持 HBase 全局索引,还支持 HFile 文件索引、即直接使用 HBase 底层的数据格式作为索引并托管在 Iceberg 元数据中,优化了性能和并发性等。相比其他索引,使用 HFile 文件索引能够减少运维组件、复用存储资...
数据通过 Kafka 流入不同的系统。对于离线链路,数据通常流入到 Spark/Hive 中进行计算,结果通过 ETL 导入到 HBase/ES/ClickHouse 等系统提供在线的查询服务。对于实时链路, 数据会直接进入到 HBase/ES 提供高并发低... Krypton 支持两层分区,第一层叫做 Partition,第二层我们称为 Tablet,每一层都支持 Range/Hash/List 的分区策略。每个 Tablet 都包含一组 Rowsets,每个 Rowset 内部数据按照 Schema 中定义的 Sort Key 排好序。Rows...
记录了一张表的元数据:包括表的 Schema、文件、分区、统计信息等。这种元数据计算具备高拓展性,为数据湖管理提供了更好的支持、更快的文件扫描。然而 Iceberg 的 MOR 方式也存在一些问题,比如社区版不支持只更新部... 除了支持 HBase 全局索引,还支持 HFile 文件索引、即直接使用 HBase 底层的数据格式作为索引并托管在 Iceberg 元数据中,优化了性能和并发性等。相比其他索引,使用 HFile 文件索引能够减少运维组件、复用存储资源...