安之一隅

莫听穿林打叶声,何妨吟啸且徐行。

0%

Docker Compose入门 简介 一般一个宿主机中会生成多个容器,容器与容器之间需要协调工作,有时多个容器之间也需要进行环境的隔离,而Docker Compose就是用来定义和运行多个容器的工具。可以通过一个yaml文件来配置应用程序的服务,并通过命令来管理所有服务的生命周期。 安装步骤 一般可以在Compose repository release page on GitHub获取到最新版的Docker Compse。 下载 执行以下命令: 1 sudo curl -L "https://github.com/docker/compose/releases/download/
阅读全文 »

Buildah buildah是Redhat旗下的一款专门构建工具,与Docker相比,优势在于: * 环境并不需要daemon(守护进程) * 不需要Dockerfile但也可以兼容Dockerfile * 可以将容器目录挂载到本地,通过直接操作本地目录来操作容器内容 * 可以创建更小的镜像 安装 构建机器需要安装buildah,参见https://github.com/containers/buildah/blob/main/install.md 使用 Dockerfile方式 buildah兼容Dockerfile,原先使用Dockerfile的项目并不需要什么迁移成本。对
阅读全文 »

探究OCI镜像与Docker镜像的联系 从熟知的Docker出发 目前,容器化技术已经广泛普及了,而谈到容器,我想大多数人的第一反应就是Docker了。 Docker给我们带来了很多好处,优化了CI/CD流程,可以实现云原生,纳入容器编排等等。 回想下Docker中的概念,我们是如何使用Docker的?一般开发人员会编写Dockerfile,用来定义一个镜像,然后将Dockerfile生成的镜像推送到远程仓库,最终根据需要通过pull镜像生成容器运行起来。如果是云原生应用,那这个pull的动作可能是k8s做的。同时,k8s集群的node环境中需要有Docker守护进程。 可以说,Dock
阅读全文 »

时间片 CPU通过给现成分配时间片的形式来实现多线程。所以单核CPU也支持多线程执行。 多个线程看起来像同时运行,实则是轮番运行,由于时间片通常很短(在Linux上为5ms-800ms),用户不会感觉到。 上下文切换 CPU通过时间片分配算法来循环执行任务。切换时间片的同时,会保存上一个执行线程任务的状态,用于切回。从切换出到切换回,算作一次上下文的切换。 比如,从英语课下课切换成数学课,老师和同学需要记住上节英语课上到哪一节了。上完其他课程再上英语课,就接着上一节讲到的位置接着上。 但是,如果一直上英语课不切换成其他课程,学英语的效率就会变得更高,因为节省了思维切换的开销。 同理,
阅读全文 »

Monitor基础 为什么要学习Monitor 在JDK1.6之前,Synchronized为重量级锁,其实现只依赖于Monitor,效率较低。学习Monitor,是为学习Synchronized打下基础。 什么是Monitor Monitor是一种同步机制。它并不单单属于Java,而是一种系统级别的设计理念。 开发并发应用时,经常需要设计这样的对象,该对象的方法会在多线程的环境下被调用,而这些方法的执行都会改变该对象本身的状态。为了防止竞争条件 (race condition) 的出现,对于这类对象的设计,需要考虑解决以下问题: * 在任一时间内,只有唯一的公共的成员方法,被唯一的线
阅读全文 »

什么是死锁 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。 死锁的原因 独占锁:独占锁就是在同一时刻只能有一个线程获取到锁,而其他获取锁的线程只能处于同步队列中等待,只有获取锁的线程释放了锁,后继的线程才能够获取锁。 常说的死锁四大条件包括: 互斥条件 —> 独占锁的特点之一。 请求与保持条件 —> 独占锁的特点之一,尝试获取锁时并不会释放已经持有的锁 不剥夺条件 —> 独占锁的特点之一。 循环等待条件 —> 唯一需要记忆的造成死锁的条件。 如下代码会出现死锁: 1 2 3 4 5 6 7 8
阅读全文 »

常见端口汇总: Hadoop * 50070:HDFS WEB UI端口 * 8020 : 高可用的HDFS RPC端口 * 9000 : 非高可用的HDFS RPC端口 * 8088 : Yarn 的WEB UI 接口 * 8485 : JournalNode 的RPC端口 * 8019 : ZKFC端口 Zookeeper * 2181 : 客户端连接zookeeper的端口 * 2888 : zookeeper集群内通讯使用,Leader监听此端口 * 3888 : zookeeper端口 用于选举leader Hbase * 60010:Hbase的master
阅读全文 »

DBeaver连接Hive 环境说明 ComponentVersionDBeaver6.3.0.201912081802-zip64Hadoop2.7.7Hive2.3.5操作步骤 新建数据库连接 数据库->新建连接->Apache Hive 配置常规信息 主机为Hive所在主机IP 端口默认10000 注: * 9083 : metastore服务默认监听端口 * 10000:Hive 的JDBC端口 数据库为hive中创建的数据库名称 hive用户即为linux用户,hive本身不提供用户管理,只提供权限控制。 编辑驱动设置 下载方式
阅读全文 »

[TOC] 前言 ETL是BI项目最重要的一个环节 ETL将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL通常情况下会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败。 名词简介 数据仓库 英文全称为Data Warehouse,简称为DW。 数据仓库之父比尔·恩门(Bill Inmon)在1991年出版的《Building the Data Warehouse》(《建立数据仓库》)一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integ
阅读全文 »

昨天在合并分支时遇到了这样一个问题: 我需要将一个开发分支51合并到主干分支trunk,在合并时出现了冲突,如下图: 当然,第一个文件(修订号为417975)是目前trunk下的最新版本号。第三个文件(修订号为417985)是目前dev51分支下的修订版本。到这里都好理解,但却出现了left版本(修订号为417812),修订号早于这两个版本,这是什么原理(⊙ˍ⊙)? 在朋友(这里手动感谢宝哥😄)的帮助下找到了这篇issue,https://stackoverflow.com/questions/7679113/differences-between-svn-merge-lef
阅读全文 »