SparkConf是 Spark 应用程序的配置。用于将各种 Spark 参数设置为键值对的形式。大多数情况下,可以使用 new SparkConf() 创建一个 SparkConf 对象,该对象将从任何 spark.* 应用程序中设置的 Java 系统属性来加载值。
Hadoop Metrics2是一个收集各种指标的监控工具,可应用于Hadoop、HBase、Kylin等大数据组件监控指标收集。主要分为3个主要部分:MetricsSystemImpl、Source和Sink,其中Source和Sink都可以自定义。本文讲述如何自定义Sink,来收集指标入OpenTSDB。
Bitmap的基本思想是以一个bit位来表示一个元素对应的value,即使用bit数组下标来表示元素值,以大大缩小存储空间。BitMap一般用来快速查找、去重、删除等操作,但是它只能用于数字类型。那么如果要使用字符串类型的该怎么办呢? 这就需要先把字符串字典编码,生成字符串到数字的映射。本文参考kylin的全局字典编码配合RoaringBitmap以实现精准去重。
首先,我们先了解一下元数据平台架构,主流程是:SQL采集 --》 SQL解析 --》应用层。 1. SQL采集:针对各种SQL查询引擎,编写相应的钩子函数进行SQL收集,收集内容有执行时间、执行耗时、执行用户、执行引擎、jobId和执行SQL等等,最后把SQL信息入Kafka。Hive是实现ExecuteWithHookContext接口,Presto是实现EventListener接口,Spark是实现SparkListner接口。 2. SQL解析:Flink实时消费Kafka数据,进行SQL解析。解析SQL的过程为:定义词法规则和语法规则文件 --》 使用Antlr实现SQL词法和语法解析 --》生成AST语法树 --》遍历AST语法树,考虑到Presto和Spark的SQL语法类似,因此直接参考Hive底层源码实现SQL解析。解析完成后,把血缘信息和元数据信息分别入JanusGraph和ElasticSearch。 3. 应用层:数据录入JanusGraph和ElasticSearch后,就可以进行血缘查询和元数据查询。然后通过graph节点的出度入度进行热点分析。
为什么要阅读源码?这个问题对于热爱、学习、使用技术的程序er的重要性不言而喻:不懂原理只会使用就是重复劳动的码农,技术长进不大,以后也会碰到职业天花板。所以我们就开始吧!