A Libertine of Computer Science

Shell Expect [自动交互脚本Expect]

在开发过程中,编译部署都是无法避免的步骤,但是在调试时,需要重复地进行编译部署,如果这个过程复杂,那就更加耗时费力。重复劳作是枯燥的,所以大多数情况下,我们可以使用expect来进行自动化交互过程,从而自动化整个编译和部署过程。

Understanding of Spark Structured Streaming Execution via Source Code [通过源码理解Spark的结构化流执行]

Last Updated: Jan. 17, 2022

Spark 2.0引入了更高级别的新的流处理API,叫做Structured Streaming[结构化流]。本文通过Spark的源代码来理解具体的Structured Streaming的执行过程。本文使用的是Spark 2.4.0的源代码。Structured Streaming相关的源代码存在于sql文件夹中。

Understanding and Installing Nvidia Docker [Nvidia Docker 介绍和安装]

前文所述,Docker是一个轻量级的容器,将应用程序,第三方库,数据文件和环境放在一起使用户可以最大程度使用宿主机的硬件。Docker容器是平台无关[platform-agnostic]和硬件无关[hardware-agnostic],这说明Docker对于一些通用的硬件已经有很好的支持,但是当使用特殊的硬件,如NVIDIA GPUs时,这就产生了一个问题,这些硬件需要内核模块和用户级库来操作,也就是我们常说的驱动程序。

Docker Volume [Docker Volume 介绍]

Docker镜像是由多个文件系统[只读层]叠加而成。当我们启动一个容器的时候,Docker会加载只读镜像层并在其上[镜像栈顶部]添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,然后在读写层进行修改,但是文件的只读版本仍然存在于只读层,只是已经被读写层中该文件的副本所隐藏。当删除Docker容器,并通过该镜像重新启动时,之前在读写层的更改将会丢失。所以默认情况下,数据在Docker运行时无法进行持久化操作。

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18]