分类
大数据 笔记

Elasticsearch 分页

Elasticsearch提供两种分页,一种是使用from-size分页:

GET /_search
{
  "from": 5,
  "size": 20,
  "query": {
    "match_all": {}
  }
}

from:偏移量
size:每页显示条数

ES默认情况下,使用from和size参数翻页不支持超过10000个文档,这个限制是使用索引设置的,可以设置 index.max_result_window 参数。

深度分页或一次请求许多结果可能会导致搜索缓慢。结果在返回之前先进行排序。由于搜索请求通常跨越多个分片,因此每个分片必须生成自己的排序结果。然后,必须对这些单独的结果进行合并和排序,以确保总体排序顺序正确。

作为深度分页的替代方法,官方建议使用滚动分页代替。

分类
大数据

Flink的时间与watermarks详解

当我们在使用Flink的时候,避免不了要和时间(time)、水位线(watermarks)打交道,理解这些概念是开发分布式流处理应用的基础。那么Flink支持哪些时间语义?Flink是如何处理乱序事件的?什么是水位线?水位线是如何生成的?水位线的传播方式是什么?让我们带着这些问题来开始本文的内容。

分类
Linux

Ubuntu 20.04设置静态IP地址

因为Ubuntu20.04通过netplan来管理网络,和之前得版本略有区别。

打开配置文件编辑:

vi /etc/netplan/00-installer-config.yaml

这个yaml可能叫其他名字,打开即可。

network:
  ethernets:
    eth0:     #配置的网卡的名称
      addresses: [192.168.2.128/24]    #配置的静态ip地址和掩码
      dhcp4: no    #关闭DHCP,如果需要打开DHCP则写yes
      optional: true
      gateway4: 192.168.2.1    #网关地址
      nameservers:
         addresses: [223.5.5.5,114.114.114.114]    #DNS服务器地址,多个DNS服务器地址需要用英文逗号分隔开
  version: 2
  renderer: networkd    #指定后端采用systemd-networkd或者Network Manager,可不填写则默认使用systemd-workd
分类
Windows 笔记

Win10 开启 WSL2

WSL2 使用最新、最强大的虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。 但是,WSL2 不是传统的 VM 体验。

Win10从2004版开始支持WSL2,开启方法:打开设置-应用

注:WSL2是基于Hyper-V虚拟机,打开后,VMware和Virtualbox需要升级到最新版才能兼容。但是安卓模拟器无法使用。

分类
Java

分布式自增ID算法 – 雪花算法

一般情况,实现全局唯一ID,有三种方案,分别是通过中间件方式、UUID、雪花算法。

方案一,通过中间件方式,可以是把数据库或者redis缓存作为媒介,从中间件获取ID。这种呢,优点是可以体现全局的递增趋势(优点只能想到这个),缺点呢,倒是一大堆,比如,依赖中间件,假如中间件挂了,就不能提供服务了;依赖中间件的写入和事务,会影响效率;数据量大了的话,你还得考虑部署集群,考虑走代理。这样的话,感觉问题复杂化了

方案二,通过UUID的方式,java.util.UUID就提供了获取UUID的方法,使用UUID来实现全局唯一ID,优点是操作简单,也能实现全局唯一的效果,缺点呢,就是不能体现全局视野的递增趋势;太长了,UUID是32位,有点浪费;最重要的,是插入的效率低,因为呢,我们使用mysql的话,一般都是B+tree的结构来存储索引,假如是数据库自带的那种主键自增,节点满了,会裂变出新的节点,新节点满了,再去裂变新的节点,这样利用率和效率都很高。而UUID是无序的,会造成中间节点的分裂,也会造成不饱和的节点,插入的效率自然就比较低下了。

方案三,基于redis生成全局id策略,因为Redis是单线的天生保证原子性,可以使用原子性操作INCR和INCRBY来实现,注意在Redis集群情况下,同MySQL一样需要设置不同的增长步长,同时key一定要设置有效期,可以使用Redis集群来获取更高的吞吐量

方案四,通过snowflake算法如下:

SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图:

分类
大数据

ES聚合操作 – Fielddata is disabled on text fields by default

使用ES聚合操作对字段(projectCode)去重:

GET bury-point-click/_search
{
  "size": 0,
  "aggs": {
    "group_by_project": {
      "cardinality": {
        "field": "projectCode"
      }
    }
  }
}

执行报错:Fielddata is disabled on text fields by default. Set fielddata=true on [projectCode] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.

分类
Linux 软件

Ubuntu安装XRDP

在Linux下一直没有好的远程桌面工具。VNC太慢,即使在内网也不太流畅。NoMachine不错,但连接需要安装客户端。NoMachine的移动端做得很垃圾,而且几年没更新,不兼容流海屏。远程用得最爽的还是windows自带的rdp,在低网速下也有很好的表现。

一般的远程工具采用录屏的方式,传输图像。如VNC,NoMachine,用h264压缩。虽然支持GPU加速,但在低宽带或高分辨率下质量差,延迟高。RDP不一样,它传输的是指令,绘图是放在客户端的,所以速度快,即使提高分辨率,速度也不会明显降低。

分类
编程

Git创建一个空的分支

1.创建一个空白的分支的需求

在Git中创建分支,是必须有一个父节点的,也就是说必须在已有的分支上来创建新的分支,如果工程已经进行了一段时间,这个时候是无法创建空分支的。但是有时候就是需要创建一个空白的分支。

分类
大数据

Flink的状态后端(State Backends)

当使用checkpoint时,状态(state)会被持久化到checkpoint上,以防止数据的丢失并确保发生故障时能够完全恢复。状态是通过什么方式在哪里持久化,取决于使用的状态后端。

可用的状态后端

  • MemoryStateBackend
  • FsStateBackend
  • RocksDBStateBackend

注意:如果什么都不配置,系统默认的是MemoryStateBackend

分类
大数据

Flink运行架构剖析

本文主要介绍 Flink Runtime 的作业执行的核心机制。首先介绍 Flink Runtime 的整体架构以及 Job 的基本执行流程,然后介绍Flink 的Standalone运行架构,最后对Flink on YARN的两种模式进行了详细剖析。