操作系统 centos7 时钟同步服务部署 在安装集群时,CentOS7时钟同步服务部署,要求集群中的所有机器时间必须同步,这时需要chrony来做时间同步。安装 chrony 可以使用 ansible 来批量配置,也可以手动修改,实验环境如下: 主节点:node1,从节点:node2、node3,主节点作为服务端,从节点作为客户端。 yuziyue 30 Jul 2023 · 3 min read
操作系统 linux windows 挂载文件系统方法 linux windows 挂载文件系统方法 Linux 挂载详解 1.1 Linux 挂载disk Linux 挂载iso linux挂载samba linux 挂载sshfs sshfs 叫做 Secure SHell FileSystem,通过 ssh 协议挂载,这样挂载会输入登录密码,如果想要免密码挂载,可以配置 ssh 秘钥免密登录。 yuziyue 30 Jul 2023 · 2 min read
操作系统 pstree命令查看进程产生的线程 pstree查看进程产生的线程,进程的线程,进程包含的线程。查看所有的进程、以及进程的线程关系 查看指定进程的包含的线程 各进程树之间的连接以utf8字符来连接,某些终端可能会有错误 -c, --compact 取消同名兄弟进程的合并(默认会将同名的兄弟进程合并) -n, --numeric-sort 用PID排序输出 yuziyue 30 Jul 2023 · 1 min read
编程语言 linux 命令 exec 到底有什么作用 我们在看别人写的脚步时,你可能会发现别人启动程序时喜欢在命令前面添加一个 exec 命令,它的作用其实是:将当前的 shell 进程替换为指定的命令或程序,这意味着原来的 shell 进程将被终止,并且执行的命令将在新的 shell 进程中运行。 这样做的好处在于可以在不创建新的子进程的情况下,直接在当前 shell 进程中执行指定的命令,从而节省了系统资源并且能够更高效地执行命令。 yuziyue 30 Jul 2023 · 2 min read
编程语言 bash 中ctrl+c ctrlc ctrl c清理工作 bash 中ctrl+c ctrlc ctrl c清理工作 bash 脚本有时候按 ctrl+c 以后需要做清理工作,可以自定义 ctrl + c 以后的处理逻辑。运行上面的脚本,当按ctrl c以后,会运行 ctrl_c 函数,然后才退出程序。 echo "cleaning..." echo " Bye!" yuziyue 30 Jul 2023 · 1 min read
操作系统 gitlab 高效的 rest api 接口实践 在公司内部如果有项目是基于 gitlab 的,如果想基于gitlab的版本管理进行二次开发,可能会用到 gitlab 的 rest api 接口,本文展示主要的 api 接口用法。 Bearer xxxxxx 其中 xxxxxx 表示创建的 gitlab token 552 表示项目 id ,在项目详情里面可以查看 gitlab rest api查看文件内容,ref为指定分支或者指定commit: yuziyue 30 Jul 2023 · 3 min read
操作系统 Git 配置 http https socks5 代理 Git 配置 http https socks5 代理 git 命令下载 github 上的代码有时无法连接,此时需要配置代理才能下载。 --global 标志将配置应用于当前用户的全局 Git 配置。如果你只想在当前项目中使用代理,可以省略 --global 标志,这样配置将仅适用于当前项目。 # http.proxy 表示 http 协议 # https.proxy 表示 https 协议 # core.gitproxy 表示 git ssh 协议 yuziyue 30 Jul 2023 · 1 min read
操作系统 Git 项目管理使用指南 Git 配置文件 /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。注意: 每一个级别的配置覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 、~/.gitconfig或~/.config/git/config 中的配置变量。 yuziyue 30 Jul 2023 · 14 min read
大数据开发 Flink 广播流(流处理) 当两条流需要 join 的时候,并且其中一条流的数据量很小,并且不是经常变动。此时可以将数据流较小的流作为广播流,这样的话在另外一条流的每一个Subtask里面都有了这个数据量较小的数据流。 配合 MapStateDescriptor 使用,就可以把广播流当做变量一样来使用了。 同时还可以实时更新广播流的值。 yuziyue 29 Jul 2023 · 2 min read
大数据开发 Spark task 序列化总结 我们在 driver 中定义的数据,在 executor 中执行时是无法获取到 driver 中的数据的( 会报错Task not serializable),task 分为 ShuffleMapTask 和 ResultTask,这两种 task 都已经实现了序列化了,所以如果我读取在 driver 中定义的对象,还需要将数据序列化。 其中一种方法是使用广播变量 另一种方法是我们手动编写数据的序列化方法。 yuziyue 29 Jul 2023 · 2 min read
大数据开发 SparkStreaming Scala 示例 准备TCP连接 命令行启动 8888 端口,等待 SparkStreaming 来连接,当 SparkStreaming 启动后再这里输入内容,SparkStreaming 会立即读取输入的内容,等待 SparkStreaming 来连接 添加SparkStreaming的依赖 编写代码 lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).print() yuziyue 29 Jul 2023 · 1 min read
大数据开发 Spark 创建 DataFrame 的7种方法 Spark 创建 DataFrame 的7中方法 使用 toDF 传入参数创建DataFrame 使用 scala case class 创建DataFrame 使用 scala class 创建DataFrame 使用 java class 创建DataFrame 使用 StructType 创建DataFrame 读取 JSON 创建DataFrame 读取 CSV 创建DataFrame csv读取schema时,不需要读取整体的数据,只需要读取前几行即可 yuziyue 29 Jul 2023 · 3 min read
大数据开发 Spark 所有排序方法总结 Spark 所有排序方法总结 定义case class,在内部重写需要排序的字段 然后使用sortBy(x => x) 指定一个 tuple,安装tuple给定的字段排序 如果需要倒序,使用负号 排序方法1 排序方法2 排序方法3 排序方法4 val name = fields(0) val age = fields(1).toInt val score = fields(2).toInt Person(name, age, score) yuziyue 29 Jul 2023 · 2 min read
大数据开发 SparkStreaming连接Kafka示例 配置kafka 配置kafka,确保kafka能正常生产消息,消费消息。SparkStreaming程序 使用和 kafka 直连的方式:SparkStreaming的一个task对应一个kafka的一个partition。这个task不仅仅是读数据,还有处理的逻辑。在 map 里面可以判断这个消息来自哪个topic yuziyue 29 Jul 2023 · 2 min read
大数据开发 Hbase 性能优化总结 因为一个cf会对应一个store,每个store都有一个Memstore,当触发flush阈值后进行flush的最小单位是Region,而不是MemStore级别的,所以会有多个cf被flush,会生成多个HFile文件。并且HFile多了就会频繁触发compact。最终导致系统产生更多的I/O。批量数据写入采用 BulkLoad HBase通过rowkey、family、qualifier、TimeStamp可以对HBase中的数据进行快速定位,HBase中rowkey可以唯一标识一行记录。 yuziyue 29 Jul 2023 · 4 min read
大数据开发 Kafka 事务与 ExactlyOnce 语义 为了实现Producer的幂等语义,Kafka引入了Producer ID(即PID)和Sequence Number。每个新的Producer在初始化的时候会被分配一个唯一的PID,该PID对用户完全透明而不会暴露给用户。对于每个PID,该Producer发送数据的每个都对应一个从0开始单调递增的Sequence Number。 yuziyue 29 Jul 2023 · 8 min read
大数据开发 Kafka 使用 Java 多线程消费数据 Kafka 使用 Java 多线程消费数据 下面的示例中,使用多线程消费数据Kafka数据,并手动提交 offset 手动提交的的好处是不会丢失数据,如果程序崩溃,会重复消费部分数据,所以你的程序针对相同的数据可以幂等地运行。 表示在还没有提交过任何 offset 的时候,从什么位置开始消费数据 yuziyue 29 Jul 2023 · 1 min read
大数据开发 Kafka 生产者与消费者 JAVA API 本文总结 Kafka 生产者与消费者的 JAVA API 示例 序列化与反序列化 序列化配置 反序列化配置 1.3 ProducerRecord参数 二. 生产者 创建测试kafka ProducerRecord 消息记录可以简化参数,最简单的可以只有两个参数:topic 和 value,其他的都是用默认值。kafka消息的timestamp如果是自定义的话,不能晚于当前7天,因为晚于7天的消息会被自动删除。 yuziyue 29 Jul 2023 · 4 min read