SSH端口转发详解
SSH端口转发详解SSH端口转发(隧道)可以建立SSH通道,并将TCP链接放到这个通道中。
man ssh选项及参数解释首先我们通过man命令来查看一下ssh关于转发部分的说明,然后再详细讲解不同的转发方式是什么意思。
本地转发
本地转发通过-L选项指定
-L选项后可跟多种形式的参数
1234-L [绑定地址:]端口:主机:主机端口-L [绑定地址:]端口:远端Socket-L 本地Socket:主机:主机端口-L 本地socket:远端socket
链接到本地(ssh客户端)主机上的给定的TCP端口(unix socket)将被转发到**远端的给定的主机和端口(unix socket)**。这一过程指定了本地这一侧的TCP端口(同时可以指定绑定的地址),或unix socket。
(译注:就是指定[绑定地址:]端口这个参数,要么只提供端口,要么既提供地址也提供端口)
一旦有连接到本地端口或socket的链接,这个链接就会通过安全的通道进行转发,相当于作用在远端主机对应的端口或socket上。
(译注:前两个参数( [绑定地址:]端口)指定本地的地址和端口, ...
Flink 内存模型
Flink内存模型Flink1.12.0支持更为细粒度的内存配置,本文基于Flink1.12对现行的Flink内存管理机制进行介绍,主要内容来自Flink文档
总内存说明Flink JVM 进程的进程总内存(Total Process Memory)包含了由 Flink 应用使用的内存(Flink 总内存)以及由运行 Flink 的 JVM 使用的内存。 Flink 总内存(Total Flink Memory)包括 JVM 堆内存(Heap Memory)和堆外内存(Off-Heap Memory)。 其中堆外内存包括直接内存(Direct Memory)和本地内存(Native Memory)。
配置Flink内存使用的简单方法可以使用如下两个配置项
Component
Option for TaskManager
Option for JobManager
Total Flink memory
taskmanager.memory.flink.size
jobmanager.memory.flink.size
Total process memory
task ...
深度强化学习相关调研笔记
调研笔记马尔科夫链马尔可夫链(英语:Markov chain),又称离散时间马可夫链(discrete-time Markov chain,缩写为DTMC[1]),因俄国数学家安德烈·马尔可夫得名,为状态空间中经过从一个状态到另一个状态的转换的随机过程。该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。这种特定类型的“无记忆性”称作马可夫性质。马尔科夫链作为实际过程的统计模型具有许多应用。
强化学习1.1 假设
奖励假设:强化学习的目的是最大化累积奖励的期望
Markov假设:转移只依赖当前状态和当前选择的动作,与之前的状态和动作无关
1.2环境模型的定义
1.3目标最大化累积奖励,叫做回报(return)$$R:=\sum^{T}_{t=1}{r_t}$$
【1】现代深度强化学习算法综述
【2】深度强化学习——从DQN到DDPG
Flink Metrics REST API使用
Flink Metrics REST API使用Operator Metrics采集
idletime
numRecords
queueLen
https://ci.apache.org/projects/flink/flink-docs-release-1.12/ops/metrics.html#default-shuffle-service
TaskManager Metrics采集Flink基于JVM运行,对TM Metrics的分析实际上就是在进程及线程级别进行分析。
Flink采集TM的JVM指标时,是通过java自己的OperatingSystemMXBean来进行采集的,具体如下:
JVM CPU负载情况Flink部分源码
123456789101112// org/apache/flink/runtime/metrics/util/MetricUtils.javaprivate static void instantiateCPUMetrics(MetricGroup metrics) { try { final com.sun ...
Linux Top 命令详解
Linux下Top命令详解命令简介top命令 可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
命令选项12345678910-b:以批处理模式操作;-c:显示完整的治命令;-d:屏幕刷新间隔时间;-I:忽略失效过程;-s:保密模式;-S:累积模式;-i<时间>:设置间隔时间;-u<用户名>:指定用户名;-p<进程号>:指定进程;-n<次数>:循环显示的次数。
交互命令123456789101112131415161718h:显示帮助画面,给出一些简短的命令总结说明;k:终止一个进程;i:忽略闲置和僵死进程,这是一个开关式命令;q:退出程序;r:重新安排一个进程的优先级别;S:切换到累计模式;s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;f或者F:从当前显示中添加或者删除项目;o或者O:改变显示项目的顺序;l:切换显示平均负载和启动时间信息;m:切换显示内存信息;t:切换显示进程和 ...
GO语言学习笔记-基础
Go语言学习笔记-基础内容基础概念通道是一种允许某一例程向另一例程传递指定类型的值的通信机制。
当一个goroutine试图在一个通道上进行发送或接收操作时,它会阻塞,直到另一个goroutine试图进行接收或发送操作才传递值,并开始处理两个goroutine。
一些习惯
Go语言使用驼峰式风格
包名称本身总是由小写字母组成。
通常名称的作用域越大,就使用越长且更有意义的名称。
生命周期问题
如果一个实体在函数中声明,那么它仅对函数局部有效。如果一个实体在函数外部声明,它将对==包==里所有源文件可见。
实体第一个字母的大小写决定其可见性是否跨包。
作用域与生命周期声明的作用域是声明在程序文本中出现的区域,它是一个编译时属性。变量的生命周期是变量在程序执行期间能被程序的其他部分所引用的起止时间,它是一个运行时属性。
在包级别声明,可以被同一个包里的任何文件引用;导入的包是文件级别的,所以可以在同一个文件内引用;
内部的声明会覆盖外层的。
基础语句循环语句for是go里面唯一的循环语句,有以下形式
12345678910111213141516 ...
Linux用户权限'/etc/sudoer'配置
【转载】Linux /etc/sudoer 配置
原文链接:https://zhuanlan.zhihu.com/p/43934300
当普通用户向其他的用户获取它的权限的时候,其他用户怎么去判断是不是需要给这样的权限给这个普通用户。其中的权限分配体现在给予权限者的/etc/sudoers文件当中。
比如在文件中配置有这样一条信息。
zhang:表示用户名
ALL=(ALL):第一个ALL表示所有的主机,第二个ALL表示所有的用户
NOPASSWD:表示不需要密码就能切换到用户
/usr/bin/bash,/usr/bin/sh:表示能够执行的命令
这个配置的意思就是,zhang用户可以在任意主机上不输入密码的情况下以任意用户执行/usr/bin/bash,/usr/bin/sh
流处理弹性相关论文阅读笔记
大数据流处理弹性伸缩论文阅读笔记[1] Multi-Level Elasticity for Data Stream Processing. IEEE Transactions on Parallel and Distributed Systems(TPDS).2019.A研究内容更改不同的执行容器(虚拟机、进程、线程)的数量来影响容器的性能。基本的想法是不同的执行容器会有不同的性能,但是也会带来不同的开销。作者的想法是自动提供最少的资源来满足应用所需的性能。在作者的方法中,使用低级别的容器组合来充分利用高级别容器的资源。
技术路线多层次扩展的主要思路是,检查当前节点是否达到阈值,如果达到了就扩展节点,如果没达到就考虑增加一个进程。主要是在进行进程与虚拟机之间的调度。
文章中的应用程序主要考虑处理大量小信息的流处理程序(比如,推特消息,传感器日志)。文章提出了使用环境是非多租户环境,并且节点是应用专用(这个应该就是为了避免CPU等信息受干扰的问题)。算子实例之间平均分配数据流(不考虑数据倾斜)。
作者提出的方法依次执行以下步骤,(1)评估不同层次的执行容器的性能(2)为给定的负载提供适 ...
Docker学习笔记-基本
Docker学习笔记
基本概念镜像(image):docker镜像就是一个模板,可以通过这个镜像来创建容器服务。
容器(container):把容器理解为简易的linux,独立的运行一个或一组应用,通过镜像来创建
仓库:存放镜像的位置,分为公有和私有
安装Docker环境准备Linux环境
12345678910111213141516171819[root@centos7vm ~]# uname -r3.10.0-1062.el7.x86_64[root@centos7vm ~]# cat /etc/os-releaseNAME="CentOS Linux"VERSION="7 (Core)"ID="centos"ID_LIKE="rhel fedora"VERSION_ID="7"PRETTY_NAME="CentOS Linux 7 (Core)"ANSI_COLOR="0;31"CPE_NAME="cpe:/o:centos:ce ...
Linux如何使用LVM进行磁盘扩容
Linux如何使用LVM进行磁盘扩容提醒:操作磁盘的工作都需要小心谨慎,避免数据丢失损坏,下文涉及到分区表的操作请再三确认
背景介绍关于LVM的介绍请参考维基百科或百度百科。
本文不提供如何将现有的非LVM分区转换为LVM分区的方法,本文主要解决现有LVM如何进行扩容的问题。
磁盘状态查看注意:磁盘操作需要有管理员权限,请确认你有管理员权限再执行如下操作。
我们可以使用这个命令来查看当前硬盘的详细信息,包括当前磁盘容量以及分区信息。
1fdisk -l
命令执行结果与下图类似:
可以看到我们这块磁盘有268.4GB大小的空间,但只有两个分区vda1和vda2。我们同样可以使用lsblk来查看当前分区状态。执行结果应该类似下图:
通过这里我们看到,主要要解决的问题是,如何把我们这200多GB的空间都用上。
磁盘扩容根据我们的硬盘名称,执行下面的命令进入磁盘分区管理。其中/dev/vda应该更换为你自己查询到的名字。
1fdisk /dev/vda
命令执行后的状态应该类似下图:
我们可以在这里输入p来查看当前硬盘的信息,结果如下:
接下来执行我们的扩容过程。
新建一块分区新建 ...









