Duncan's Blog

何以解忧,唯有学习

0%

LCX中运行copilot-service

简介

​ LXC 是一个知名的 Linux 容器运行时,包括各类工具、模板、库以及语言绑定。 它非常底层,相当灵活,并覆盖了上游内核支持的几乎所有与容器相关的功能。copilot-gpt4-service用来帮助我们转发对ChatGPT4的请求。本文记录里怎么在PVE下的LCX中运行copilot-service。

阅读全文 »

PVE8.0下为LCX添加TUN接口

背景

家里有台老笔记本最近安装了PVE,做ALL IN ONE测试。我希望在不同的机器上都可以使用copilot-service提供的服务。但是无奈没有一个稳定的公网IP,因此只能退而求其次,使用ZeroTier来做内网穿透服务。ZeroTier是通过绑定 /dev/net/tun 这个tun接口来进行组网的,然鹅,PVE下使用CT创建的LXC默认都没有这个接口,因此需要为它添加这个接口。

阅读全文 »

前言

每次当我们写完spark代码后,通过spark-submit命令提交执行。但是这个过程中发生了哪些事情却不甚明了。今天就来看看这个过程中发生了什么。

一切从下边这段提交命令开始:

spark-submit  --class org.apache.spark.examples.SparkPi \
--master yarn \
--conf spark.eventLog.dir=hdfs://dbmtimehadoop/tmp/spark2 \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 1 \
--queue thequeue \
$SPARK_HOME/examples/jars/spark-examples*.jar \
10

阅读全文 »

简介

​ 在Spark框架中,理解用户代码是怎么被框架执行的,有助于我们写出高效高质量的代码,也有利于我们在问题分析时可以快速准确的定位问题。

​ collect方法作为一个简单的方法,其执行过程也足以展示整个框架的执行流程。

目的

​ 通过对调用过程的分析,深入理解整个框架的计算过程,从根本上理解程序的执行逻辑。

阅读全文 »

简介

​ 在Spark框架中,理解用户代码是怎么被框架执行的,有助于我们写出高效高质量的代码,也有利于我们在问题分析时可以快速准确的定位问题。

​ collect方法作为一个简单的方法,其执行过程也足以展示整个框架的执行流程。

目的

​ 通过对调用过程的分析,深入理解整个框架的计算过程,从根本上理解程序的执行逻辑。

阅读全文 »

简介

Kafka基于顺序读写实现了对消息数据的快速检索,以下是其检索过程的分析

阅读全文 »

Hive性能问题排查

背景

当我们发现一条SQL语句执行时间过长或者不合预期时,就需要我们对SQL进行优化分析了。怎么找到问题所在呢?

Hive SQL执行计划不像传统关系型数据库Oracle、SQL Server有真实的计划,可以看到各个阶段的处理数据、资源消耗、处理时间等量化数据。Hive的执行计划都是预测的,因此想要知道各个阶段的详细信息,只能查看Yarn提供的日志。日志链接在每个作业执行时给出,可以在控制台看到。

Hive执行计划目前可以查看到:

  1. 查看执行计划的基本信息,即explain;
  2. 查看执行计划的扩展信息,即explain extended;
  3. 查看SQL数据输入依赖的信息,即explain dependency;
  4. 查看SQL操作相关权限的信息,即explain authorization;
  5. 查看SQL的向量化描述信息,即explain vectorization。

在SQL语句前加上explain关键词即可查看到执行计划的基本信息,基础的信息包括:

  • 作业的依赖关系图,即STAGE DEPENDENCIES;
  • 每个作业的详细信息,即STAGE PLANS。
阅读全文 »

Hive执行计划分析

背景

Apache Hive作为构建数据仓库最常用的技术,借助SQL语法的简洁性,使得数据处理过程变得更易上手。但是,有一利必有一弊。易用性的背后是Hive技术实现了非常多的手段对各种场景的预判。业务场景千千万,再强的技术也不能一刀切,所以需要我们深入了解该技术是怎么执行我们的任务的,以及怎么根据现有任务的运行情况,通过参数设置、SQL调优、设计方案调整等手段来“多快好省”地解决我们的问题。

阅读全文 »

Hive SQL编译原理与数据倾斜处理

HiveSQL编译成MapReduce的过程

hivesql编译过程

  1. 词法、语法解析: Antlr 定义 SQL 的语法规则,完成 SQL 词法,语法解析,将 SQL 转化为抽象语法树 AST Tree;
  2. 语义解析: 遍历 AST Tree,抽象出查询的基本组成单元 QueryBlock;
  3. 生成逻辑执行计划: 遍历 QueryBlock,翻译为执行操作树 OperatorTree;
  4. 优化逻辑执行计划: 逻辑层优化器进行 OperatorTree 变换,合并 Operator,达到减少 MapReduce Job,减少数据传输及 shuffle 数据量;
  5. 生成物理执行计划: 遍历 OperatorTree,翻译为 MapReduce 任务;
  6. 优化物理执行计划: 物理层优化器进行 MapReduce 任务的变换,生成最终的执行计划。
阅读全文 »

JVM的知识点总结

简介

JVM作为Java的基石,掌握其运行原理,有助于我们深入理解这门语言的设计初衷,更好的把握我们写下的每一行代码。内容包括:JVM运行时区域、垃圾回收、垃圾回收器、Hotspot算法实现过程、类加载机制、Hotspot对象

阅读全文 »