使用kubeadm搭建高可用的K8s集群
1. 安装要求在开始之前,部署Kubernetes集群机器需要满足以下几个条件:
一台或多台机器,操作系统 CentOS7.x-86_x64
硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点
禁止swap分区
2. 准备环境
角色
IP
master1
100.100.1.221
master2
100.100.1.222
node1
100.100.1.223
VIP(虚拟ip)
100.100.1.35
123456789101112131415161718192021222324252627282930313233# 关闭防火墙systemctl stop firewalldsystemctl disable firewalld# 关闭selinuxsed -i 's/enforcing/disabled/' /etc/selinux/config # 永久setenforc ...
自定义Presto插件
遇到的问题根据国家发布的规定,我们需要把用户隐私数据进行加密存储,例如手机号、IP地址。我们的数仓是保存在AWS的S3存储系统中,数据通过Presto进行查询,很多时候找数据是需要精确到具体用户的。但此时我们的用户数据已加密,而Presto又不支持解密,如果使用程序解密费时费力,所以自定义插件就闪亮登场了。
基础版本我使用了AWS的EMR版本如下:
123JDK:1.8.0_92EMR版本:emr-5.30.1Presto版本:0.232
123JDK:1.8.0_201EMR版本:emr-5.24.0Presto版本:0.219
对了如果抄我的代码,请确认自己的是Presto维护作者,现在网上有两个版本的Presto,互相是不兼容的。一个是我现在的使用的com.facebook.presto,还有一个是io.prestosql,注意注意。我的程序的Presto SDK版本是0.232,测试是可以兼容低版本的,例如0.219。
编写程序文件目录
1234567891011121314151617181920212223G:.├─.idea└─src ├─main │ ...
问题这样查,拒做背锅侠
技术的锅太多,到底该不该你背?话说这天一大早,那个悲催的中年架构师大刘又被手机微信群给炸醒。部门的运维兄弟在公司微信群里说:
短信的生产环境服务器 CPU 占用率过高,疯狂报警。是不是你们昨天上线看门狗导致的?
大刘迷了巴登的想了想,没错,昨天确实给短信服务装上了看门狗。但是看门狗服务肯定不会有问题(架构师必备的蜜汁自信),而且上线之前各轮测试也都测过了,没见过这个想象啊。
难道是测试妹子没测试到位?难道线上短信应用自身出现了问题?
生产无小事,小事更不能忽视,主要是怕扣绩效奖金。大刘迅速打开电脑,打开 VPN ,远程登上短信生产服务器,开始大刘最拿手的 2W1H 三板斧诊断之旅。
接下来的诊断内容有点烧脑,节奏有点快,请大家坐稳扶好。
1. 病号是谁(WHO)?大刘拿出控制台诊断仪器,输入 top 命令一探究竟。我勒个去,不看不知道一看吓一跳,PID 为 1878 的病号,CPU 占用居然 200% 多。
问题算是定位到了,但是 PID 为 1878 的病号到底是谁,难道真是昨天上线的看门狗 ?
虽然大刘久经职场,但是排查生产问题时,内心还是比较忐忑,毕竟这是生产环境。
说时迟那时 ...
Aid Learning 让你的废旧手机成为Linux服务器
平台介绍
AidLearning是一个强大的移动端的AI开发平台,它几乎支持所有深度学习神经网络开发的框架和工具。
移动端(手机)上最好的,环境最全的Linux模拟器,唯一支持图形化桌面的Linux模拟器…
唯一支持AI开发环境的模拟器、内置全球最流行Top 7的深度学习框架,内置大量深度学习的模型、例子和开发组件
唯一支持python图形化开发和调试的模拟器,支持触摸拖拽式界面设计,提高你的开发效率
支持用python开发可运行在手机的App,支持python代码直接编译生成可部署的apk文件
一键式安装,无任何依赖,你只需在手机上要安装一个10M的引导App,就可以自动完成所有环境的安装。
跨平台开发,支持云桌面(手机桌面和电脑桌面相同),既可以在手机或平版上或其他嵌入式主板上运行,也可以在电脑端基于web直接访问和开发。
支持加速库openblas,支持多线程和多进程,运行流畅、不卡顿,充分发挥ARM CPU和GPU的算力
最新版本支持python直接调用手机的gpu加速,一般深度学习的tflite模型,30fps~80fps,轻松达到(在主流手机上)
通过lsb_relea ...
Presto查询数据量过大时的参数调节
查询数据量过大,执行过程中途presto会报警
1query.max-memory、query.max-memory-per-node、query.max-total-memory-per-node、jvm
会分别提示超出最大限制,调整参数配置防止任务被中断
调参过程:应先调整jvm的大小,并重启机器,否则不生效
12345# 切换root用户sudo -i # 对 jvm.config中-Xmx进行调参cd /etc/presto/conf
将默认的-Xmx53369263620调整后为-Xmx533692636200 约和497GB(近500GB)调整 jvm后reboot重启,等待机器重连。
重复上面sudo-i 等命令vim /config.properties分别将下图参数调整为800GB、40GB、55GB
默认的配比是query.max-memory-per-node的值在jvm重点的Xmx的10%左右
可通过 initctl list 查看所有正在运行的服务
1234presto的服务为 presto-server,将其终止后重 ...
浅析VO、DTO、DO、PO的概念、区别和用处!
浅析VO、DTO、DO、PO的概念、区别和用处本篇文章主要讨论一下我们经常会用到的一些对象:VO、DTO、DO和PO。
由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念:
概念:
VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。
模型:下面以一个时序图建立简单模型来描述 ...
今天来个轻松的,花式拼接字符串!
简介在实际开发中我们经常会遇到把集合拼接陈字符串的情况,今天我们使用原生JDK1.8花式玩转字符串拼接。原理不多,实用程度MAX,我们开始吧。
举例说明首先我们定义一个公共数据方便后续实例操作
1private static String[] names = {"汉服", "中山装", "洛丽塔"};
最简单拼接1234private static void simpleStringJoin() { String joiner = String.join(",", names); System.out.println(joiner);}
输出结果如下:
1汉服,中山装,洛丽塔
遍历拼接12345678private static void simpleJoiner() { StringJoiner joiner = new StringJoiner(","); for (String name : names) ...
如何自动的给小姐姐发送微信消息呢
微信设置需要将我们电脑的微信设置为如下快捷方式,当然你也可以改其他的,不过需要该代码。
开发为了方便操作我就不使用申请公众号开发的方式进行操作,直接模拟键盘操作控制微信。
编写一个小小的微信机器人12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788import java.awt.*;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.event.KeyEvent;/** * @author: YI * @description: 获取微信句柄操作微信 * @date: creat ...
JDK 16 GA 正式发布: 17个特性,一网打尽!
官方给出的JDK16所有特性一览如下,总计17个特性:
338: Vector API (Incubator)
347: Enable C++14 Language Features
357: Migrate from Mercurial to Git
369: Migrate to GitHub
376: ZGC: Concurrent Thread-Stack Processing
380: Unix-Domain Socket Channels
386: Alpine Linux Port
387: Elastic Metaspace
388: Windows/AArch64 Port
389: Foreign Linker API (Incubator)
390: Warnings for Value-Based Classes
392: Packaging Tool
393: Foreign-Memory Access API (Third Incubator)
394: Pattern Matching for instanceof
395: R ...
清除某个仓库的所有Git提交,不删仓库
删除历史记录1rm -rf .git
从当前内容初始化、123git initgit add .git commit -m "初始化提交"
推送到远程仓库,并覆盖历史数据12git remote add origin git@github.com:<YOUR ACCOUNT>/<YOUR REPOS>.gitgit push -u --force origin master
来源:https://gist.github.com/stephenhardy/5470814