- 博客(74)
- 资源 (12)
- 收藏
- 关注
原创 Flume采集Kafka并把数据sink到OSS
我这里是为了防止sink的文件过于零碎, 但因为使用的memory channel, 缓存时间过长容易丢数据。默认启动时-Xmx20m, 过于小了, 加大堆内存可以直接放开。下载JindoSDK(连接OSS依赖), 下载地址。2. 进阶配置, 根据自己情况按需配置。3. Flume JVM参数。修改Hadoop配置,
2023-11-24 20:11:26 1434 1
原创 Spark - Spark SQL中RBO, CBO与AQE简单介绍
Spark SQL核心是Catalyst, Catalyst执行流程主要分4个阶段, 语句解析, 逻辑计划与优化, 物理计划与优化, 代码生成前三个阶段都由Catalyst负责, 其中, 逻辑计划的优化采用RBO思路, 物理计划的优化采用CBO思路。
2023-02-10 15:41:08 1412
原创 分布式 - 数据一致性的部分指导理论(CAP, BASE, 2PC, 3PC)
CAP理论概述分布式系统最大的难点, 就是各个节点的状态如何保持一致, CAP理论是在设计分布式系统的过程中, 处理数据一致性问题时必须考虑的理论.CAP理论的本质很简单, 它就是一种分布式系统设计的不同理念概括.CAP理论说, 一个分布式系统, 不能同时满足以下三个特性:一致性(Consistency): 对于客户端的每次读操作, 要么读到最新数据, 要么读取失败, 强调数据正确可用性(Availability): 任何客户端的请求都能得到返回数据, 不会出现失败(返回时间必须合理, 过长
2022-04-24 17:15:07 1731
原创 计算机基础 - 位运算
与运算&, 与, 两位都为1, 结果才为1, (都真才真)与的用途清零如果想将一个单元清零, 只要与一个各位都为零的数相与, 结果就为零取一个数的指定位比如取x的低四位, 只需要找另一个数y, 令y的低4位为1, 其余位为0, 然后x和y按位与运算, 即可得到x的指定位判断奇偶二进制末位是0就是偶数, 1就是奇数, 可以用a&1==0判断a是不是偶数或运算|, 或, 两位都为0, 结果才为0, (都假才假)或的用途对一个数据的某些位设置为1比如将x的低四位设置为1,
2022-03-09 15:50:19 325
原创 计算机网络系列笔记(六) - 物理层
数据通信基础常见数据通信术语信源: 将消息转换为信号的设备发送设备: 将信源产生的信号进行适当的变换装置, 使之适合于在信道中传输, 主要包括编码和调制信道: 信号传输通道, 如物理介质噪声: 自然界和通信设备中所产生的干扰接收设备: 完成发送设备反变换, 还原原始发送信号信宿: 信号终点, 将信号转换为供人们能识别的消息数据: 传送消息的实体信号: 数据的电气的或电磁的表示y(t)=Asin(ωt+θ)y(t)=Asin(\omega t+\theta)y(t)=Asin(ωt+θ)
2022-02-28 16:09:38 1716
原创 计算机网络系列笔记(五) - 数据链路层
数据链路层服务主机和路由器称为结点, 连接相邻结点的通信信道称为链路, 有有线链路, 无线链路和局域网数据链路层负责通过一条链路从一个节点向另一个物理链路直接相连的相邻结点传送数据报链路层服务包括组帧, 封装数据报构成数据帧, 加首部和尾部, 帧同步链路接入, 共享介质需要解决信道接入, 帧首部中的MAC地址, 用于标识帧的源和目的相邻接点间可靠交付, 在低误码率的有线链路上很少采用, 无线链路误码率高,需要可靠交付流量控制, 协调相邻的发送结点和接收差错检测, 信号衰减和噪声会引起差错,
2022-02-10 19:16:52 1294
原创 计算机网络系列笔记(四) - 网络层
计算机网络系列笔记(四) - 网络层概述网络层从发送主机向接收主机传送数据段(segment)发送主机:将数据段封装到数据报(datagram)中接收主机:向传输层交付数据段每个主机和路由器都运行网络层协议, 路由器检验所有穿越它的ip数据报的头部域决策如何处理ip数据报网络层的核心功能是转发(forwarding)和路由(routing), 连接建立转发: 将分组从路由器的输入端口转移到合适的输出端口, 路由: 确定分组从源到目的经过的路径, 依赖路由算法连接建立, 某些网路的重要功能,
2022-02-10 16:57:52 1848
原创 Markdown常用样式
# 可表示1-6级标题斜体 : *斜体*粗体 : **粗体**粗体加斜体 : ***粗体***???? ???? ???? : :smil\e:(去掉斜线)分割线(下面这条) : ---上角标 : ^上角标^下角标 : ~下角标~删除线 : ~~删除线~~ 下划线 : <u>下划线</u>无序列表 : - 无序列表有序列表 : 1. 有序列表 代办列表 : - [ ]代办列表 已完成 : - [x]已完成区块 : > 区块
2022-02-09 17:40:53 2964
原创 计算机网络系列笔记(三) - 传输层
传输层概述传输层的基本理论和基本机制: 复用/分用 , 可靠数据传输机制, 流量控制机制, 拥塞控制机制掌握Internet的传输层协议: UDP, TCP, TCP拥塞控制传输层协议为运行在不同host上的进程提供了一种逻辑通信机制网络层提供主机之间的逻辑通信机制, 传输层提供应用进程之间的逻辑通信机制, 位于网络层之上, 依赖于网络层服务, 对网络层服务进行增强TCP: 可靠, 按序的交付服务, 拥塞控制, 流量控制, 连接建立UDP: 不可靠的交付服务, 基于尽力而为的网络层, 没有做可
2022-02-09 15:31:27 1486
原创 计算机网络系列笔记(二) - 网络应用层
网络应用层概述网络应用体系结构: 客户机/服务器, P2P, 混合结构网络应用的服务需求: 可靠性, 带宽, 时延internet传输层服务模型: TCP, UDP特定网络应用及协议: HTTP, SMTP, DNS, P2PSocket编程, TCP, UDP网络应用的基本原理网络应用的体系结构有三种客户机/服务器结构(Client-Server, C/S): 服务器特点, 7*24小时提供服务, 永久性访问地址, 利用大量服务器实现可扩展性, 客户机特点, 与服务器通信使用服务器提供的
2022-02-09 11:04:04 2774
原创 计算机网络系列笔记(一) - 概述
计算机网络概述基本概念计算机网络计算机网络 = 通信技术 + 计算机技术, 计算机网络是通信技术与计算机技术紧密结合的产物, 是互连(互联互通)的, 自治(无主从关系)的计算机集合通信系统模型: 信源 -> 发送设备 -> 信道(伴有噪声源) -> 接收设备 -> 信宿计算机网络为网络应用提供通信服务的通信基础设施(网游, 社交), 为网络应用提供应用编程接口(api)(提供类似邮政系统的数据传输服务)计算机网络就是一种通信网络, 通过交换网络互连主机, 交换节点为路由器
2022-02-08 18:55:05 425
原创 操作系统系列笔记(八) - I/O系统
I/O系统I/O特点三种常见设备接口类型字符设备: 以字节为单位顺序访问, 通常使用文件访问接口和语义, 例如键盘鼠标块设备: 均匀的数据块访问, 原始I/O接口或文件系统接口, 内存映射文件访问, 例如磁盘驱动器, 光驱网络设备: 格式化报文交换, 专用的网络报文收发接口, 通过网络接口支持多种网络协议, 例如以太网, 无线, 蓝牙同步和异步I/O阻塞I/O: wait, 读数据时, 进程将进入等待状态, 直到完成数据读出, 写数据时, 进程将进入等待状态, 直到设备完成数据写入处理非阻塞
2021-11-04 15:15:25 251
原创 操作系统系列笔记(七) - 文件系统
文件系统文件系统的概念文件系统: 是操作系统中管理持久性数据的子系统, 提供数据存储和访问功能, 组织, 检索, 读写访问数据文件: 是具有符号名, 由字节序列构成的数据项集合, 是文件系统的基本数据单位, 文件名是文件的标识符号文件系统的功能分配文件磁盘空间: 管理文件块(位置和顺序), 管理空闲空间(位置), 分配算法(策略)管理文件集合: 定位(文件及其内容), 命名(通过名字找到文件), 文件系统结构(文件组织方式)数据可靠和安全: 安全(多层次保护数据安全), 可靠(持久保存, 避免
2021-11-03 19:43:10 425
原创 操作系统系列笔记(六) - 死锁和进程通信
死锁和进程通信死锁死锁: 是由于竞争资源或者通信关系, 两个或更多线程在执行中出现, 永远相互等待只能由其他进程引发的事件进程访问资源的流程: 先申请空闲资源->进程占用资源->释放资源从占用变成空闲资源分为两类可重用资源: 资源不能被删除且在任何时刻只能有一个进程使用, 进程释放后, 其他进程可重用, 可能出现死锁消费资源: 资源可创建和销毁, 比如中断/信号/消息, 可能出现死锁死锁的四个必要条件互斥, 任何时刻只能有一个进程使用一个资源实例持有并等待, 进程保持至少一个资
2021-11-03 17:14:00 169
原创 操作系统系列笔记(五) - 同步互斥, 信号量和管程
同步互斥背景并发进程在多个进程间有资源共享, 导致执行过程是不确定性和不可重现的, 程序错误可能是间歇性发生原子操作: 是指一次不存在任何中断或失败的操作操作系统需要利用同步机制, 在并发执行的同时保证一些操作是原子操作几个状态:互斥: 一个进程占用资源, 其他进程不能使用死锁: 多个进程各自占用部分资源, 形成循环等待饥饿: 其他进程可能轮流占用资源, 一个进程一直得不到资源临界区临界区: 是进程中访问临界资源的一段需要互斥执行的代码进入区, 检查可否进入临界区的一段代码, 如可进入
2021-11-03 15:41:07 317
原创 操作系统系列笔记(四) - 进程,线程及CPU调度
进程和线程进程进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程进程包含了正在运行的一个程序的所有状态信息, 代码, 数据, 状态寄存器, 通用寄存器, 进程占用系统资源等进程的特点: 动态性(可动态的创建/结束), 并发性(可以被独立调度并占用CPU), 独立性(不同进程相互不影响), 制约性(因访问共享数据/资源或进程间同步而产生制约)进程控制块(PCB, Process Control Block)管理和控制进程运行所用的信息集合, 操作系统用PCB来描述进程的基本情况及
2021-10-28 19:05:19 922
原创 操作系统系列笔记(三) - 虚拟存储和页面置换算法
虚拟存储需求背景存储器的层次结构: 寄存器, 高速缓存, 内存, 磁盘, 磁带, 速度依次降低且差距巨大虚拟存储目标是解决内存不够用问题, 在有限容量的内存中, 以页为单位自动装入更多更大的程序覆盖和交换覆盖: 应用程序将程序根据功能划分为独立的模块, 必要部分的代码和数据常驻内存, 可选部分需要时才装入到内存, 不存在调用关系的模块可以相互覆盖, 共用一块内存区域不足是, 增加编程困难(需划分功能模块, 确定模块间覆盖关系), 增加执行时间(从外存装入覆盖模块)交换: 增加正在运行程序的内存
2021-10-28 15:45:23 712
原创 操作系统系列笔记(二) - 存储管理
存储管理计算机体系结构和内存层次内存层次: CPU有高速缓存, 未命中查内存, 内存没有查外存, 访问速度差别很大内存管理目标: 抽象(逻辑地址空间), 保护(独立地址空间), 共享(访问相同内存), 虚拟化(更大的地址空间)操作系统中采用的内存管理方式, 重定位(Relocation), 分段(Segmentation), 分页(Paging), 虚拟存储(Virtual Memory)以上实现高度依赖硬件, 与计算机存储架构紧耦合, MMU(内存管理单元)是处理CPU存储访问请求的硬件, 多数
2021-10-25 19:21:45 126
原创 操作系统系列笔记(一) - 启动,中断,异常,系统调用
操作系统概述什么是操作系统操作系统是一个控制程序, 一个系统软件, 控制程序执行过程, 给用户提供各种服务, 方便用户使用计算机系统操作系统是一个资源管理器, 应用程序与硬件之间的中间层, 管理软硬件资源, 提供访问软硬件手段, 解决资源访问冲突操作系统软件的组成, Shell, GUI, Kernel操作系统内核的特征并发: 系统中同时存在多个运行的程序, 需要管理和调度共享: 宏观上"同时"访问, 微观上互斥共享虚拟: 利用多道程序设计技术, 让用户感觉不到其他用户异步: 程序是走走停
2021-10-25 17:18:35 126
原创 数据结构学习笔记 - 常见算法思想
常见算法思想简介几种常见的算法思想, 用来指导我们设计具体的算法和编码, 有贪心算法, 分治算法, 回溯算法, 动态规划贪心算法(greedy algorithm)经典应用, 霍夫曼编码, Prim和Kruskal最小生成树算法, Dijkstra单源最短路径算法经典问题, 背包问题, 固定容量下, 让背包里装的物品总价值最大, 贪心算法用法则是计算物品单价, 单价从高到低依次放入包中使用贪心算法解决问题的步骤第一步, 看到这类问题, 首先联想到贪心算法尝试看下这个问题是否能用贪心算法解
2021-07-30 19:28:27 453
原创 数据结构学习笔记 - 动态规划
动态规划(Dynamic Programming)动态规划比较适合求解最优问题, 比如最大值最小值, 可以非常显著的降低时间复杂度有点难, 求解过程不符合常规思维方式, 先看两个例子0-1背包问题一组不同重量, 不可分割的物品, 选择一些装入背包, 在背包限重前提下, 背包里能装下的物品重量最大值回溯算法时间复杂度高, 指数级别, 回溯递归求解过程中, 有些子问题的求解是重复的, 此时可引入递归中的备忘录来解决, 避免冗余计算, 此时执行效率已经和动态规划差不多了而动态规划是这么做, 求解过程分
2021-07-30 19:26:34 125
原创 Kylin4.0 beta版部署
Kylin4.0 beta版部署新特性Spark唯一构建引擎引入parquet, 正在踢出HBase可存储到HDFS1. 准备机器准备三台机器, 系统CentOS7, 切记, 后续安装CDH版本为6.3.2, 高版本系统不支持改hosts, ssh, 免密登录改用户可打开文件数量* vi /etc/security/limits.conf* soft nofile 32728* hard nofile 1024999* soft n
2021-05-17 19:29:28 433
原创 Kylin4.0beta版搭建报错指南
kylin4.0beta版搭建报错指南大部分问题是jar包版本冲突, 导致各种类找不到根本问题是kylin4.0测试版, 依赖spark2.4.6和cdh6.3.2spark2.4.6依赖hadoop2.7和hive1.xcdh6.3.2自带hadoop3.0和hive2.x或者可以试试EMR5.31, 自带spark2.4.6, 可能冲突小一些NoSuchFieldError: INSTANCE- java.lang.NoSuchFieldError: INSTANCE- java.lan
2021-05-10 19:06:09 679
原创 Hive创建外部分区表
Hive外部分区表建表语句create external table xxx(xxx int,xxx string,xxx array<bigint>,xxx struct<aaa:string,bbb:string>)partitioned by(pk string) # 分区row format delimited fields terminated by ',' # 按逗号分隔, text存储时使用row format serde 'org.apache.h
2021-05-06 15:41:10 1958
原创 数据结构学习笔记 - 字符串匹配
字符串匹配简介字符串匹配都不陌生, 例如Java中的indexOf(), Python中的find(), 他们底层就是依赖以下的字符串匹配算法我们从字符串A中查找字符串B, 则A就是主串, B就是模式串字符串匹配算法很多, BF和RK比较简单, BM和KMP比较难但更高效, 这些都是单模式串匹配, Trie树和AC自动机可以多模式串匹配BF算法(Brute Force)中文叫暴力匹配算法, 也叫朴素匹配算法, 简单好懂但性能不高例如主串A长度n, 模式串B长度m核心就是在主串中, 检查起始位
2021-03-10 15:51:16 341
原创 数据结构学习笔记 - 图
图简介图是一种非线性表数据结构, 比树更加复杂涉及图的算法有很多, 比如图的搜索, 最短路径, 最小生成树, 二分图等图的基本概念图中的元素叫做顶点, 一个顶点可以与任意其他顶点建立连接关系, 这种建立的关系, 叫做边跟顶点相连接的边的条数, 叫做顶点的度图的边可以有方向, 边有方向的叫做有向图, 边没有方向的叫做无向图有向图中, 把度分为入度和出度, 入度表示有多少条边指向这个顶点, 出度表示有多少条边是以这个顶点为起点指向别的顶点另一种图, 带权图, 每条边都有一个权重图的存储邻
2021-03-04 16:55:09 167 1
原创 数据结构学习笔记 - 堆和堆排序
堆和堆排序简介堆, 是一种特殊的树经典的应用场景, 堆排序, 原地的时间复杂度为O(nlogn)的排序算法堆的两点定义:堆是一个完全二叉树堆中每一个节点的值都必须大于等于/小于等于其子树中每个节点的值每个节点的值都大于等于子树中每个节点值的堆叫做大顶堆, 反之叫做小顶堆实现一个堆之前说过完全二叉树适合用数组存储, 所以堆也用数组存储堆的核心操作有插入元素和删除堆顶元素, 以大顶堆为例插入元素(todo)把新插入的元素放到堆的最后, 并进行调整使其重新满足堆的特性的过程, 叫堆化
2021-03-02 19:19:50 203
原创 数据结构学习笔记 - 红黑树
红黑树一般讲到平衡二叉查找树, 都会拿红黑树作为例子, 工程中, 很多用到平衡二叉查找树的地方都会用到红黑树但凡用到动态插入, 删除, 查找数据的场景, 都可以用到它, 不过自己实现起来难度有点高什么是平衡二叉查找树平衡二叉树定义: 二叉树中任意一个节点的左右子树的高度相差不能大于1.完全二叉树, 满二叉树, 都是平衡二叉树平衡二叉查找树不仅满足上面定义, 还满足二叉查找树的特点最先被发明的平衡二叉查找树是AVL树但很多平衡二叉查找树并没有严格符合上面的定义, 比如红黑树设计初衷是解决,
2021-02-24 15:50:33 106
原创 数据结构学习笔记 - 二叉树
二叉树简介树, 非线性表结构树有三个概念:高度从下向上数, 起点是0深度从上向下数, 起点是0层数从上向下数, 起点是1二叉树每个节点最多两个叉有两种特殊二叉树:满二叉树, 除了叶子节点, 每个节点都有左右两个子节点完全二叉树, 叶子节点都在最底下两层, 最后一层叶子节点都靠左排列, 且除了最后一层, 其它层节点个数都达到最大满二叉树是完全二叉树的一种特殊情况存储二叉树基于指针的二叉链式存储法每个节点三个字段, 一个存数据, 另外两个存左右子节点的指针, 这种方式比较常用,
2021-01-28 15:28:44 165
原创 数据结构学习笔记 - 哈希算法
哈希算法简介将任意长度的二进制值串映射为固定长度的二进制值串的映射规则就是哈希算法得到的二进制值串就是哈希值优秀的哈希算法包括从哈希值不能反推出原始数据对输入数据非常敏感, 哪怕一点小修改, 结果也大不相同散列冲突的概率要很小, 对不同原始数据, 哈希值相同的概率非常小执行效率要高效, 针对较长的文本, 也能快速计算出哈希值鸽巢原理为什么哈希算法无法做到零冲突因为哈希值的长度是固定的, 那么就表示数据是有限的, 而要哈希的数据是无限的, 就必然会有数据存在哈希值相同的情况哈希算法
2020-12-16 15:30:19 424
原创 数据结构学习笔记 - 散列表(Hash表)
散列表(Hash表)简介散列表依赖的是数组支持按下标随机访问数据的特性所以散列表是数组的一种扩展, 由数组演化而来, 如果没有数组就没有散列表时间复杂度O(1), 通过散列函数把元素的key映射为下标, 将数据存储在数组中对应下标的位置当按key查询元素时, 用同样的散列函数, 将key转化为下标, 从对应的数组下标位置取数据设计散列表要可以应对各种异常情况的工业级散列函数的设计不能太复杂散列函数设计的好坏直接决定散列表的性能散列函数生成的值要尽可能随机且均匀分布散列函数计算结果是非
2020-12-07 18:55:33 227
原创 数据结构学习笔记 - 跳表
跳表(Skip List)简介基于链表稍加改造的一种各方面性能都比较优秀的动态数据结构, 可支持快速插入, 删除, 查找操作, 甚至可以代替红黑树基于原链表每两个结点向上一级抽索引, 构建出一级索引层, 可构建多级索引, 这种链表加多级索引的结构, 就是跳表redis中的有序集合(sorted set)就是采用跳表实现跳表中查询任意数据的时间复杂度都是O(logn), 但空间复杂度O(n), 每三到五个元素抽一个索引可以减少索引存储空间占用但实际开发中不必太在意索引占用的额外空间, 因为当原始链
2020-12-02 17:02:55 134
原创 数据结构学习笔记 - 二分查找
二分查找简介二分查找, 也叫折半查找, 是一种简单的快速查找算法二分查找针对的是一个有序的数据集合, 查找思想类似分治, 每次都通过跟区间的中间元素对比, 将待查找的区间缩小为之前的一半, 直到找到要查找的元素, 或者区间被缩小为0时间复杂度O(logn), 对数时间复杂度代码实现二分查找的递归与非递归实现最简单的情况是有序数组中不存在重复元素循环实现 (todo)递归实现 (todo)容易出错的三个地方循环退出条件, low<=highmin的取值, low和high比较大
2020-12-02 15:25:59 95
原创 数据结构学习笔记 - 排序
排序简介排序算法有很多, 最经典最常用的有冒泡排序, 插入排序, 选择排序, 时间复杂度 O(n平方)快速排序, 归并排序, 时间复杂度O(nlogn)桶排序, 计数排序, 基数排序, 时间复杂度O(n)分析排序算法执行效率最好情况, 最坏情况, 平时情况时间复杂度时间复杂度的系数, 常数, 低阶元素比较次数和移动次数内存消耗可以通过空间复杂度来衡量稳定性稳定排序算法可以保持数值相同的两个对象, 在排序之后的前后顺序不变真实开发中排序场景往往比较复杂, 有些问题借助稳
2020-11-30 17:27:55 180
原创 数据结构学习笔记 - 递归
递归基本介绍递归是一种应用非常广泛的, 高效简洁的编程技巧, 很多数据结构和算法的编码实现都要用到递归递归需要满足的三个条件一个问题的解可以分解为几个子问题的解原问题和分解后的子问题求解思路完全一致存在递归终止条件写递归代码的关键写递归代码的关键就是找如何将大问题分解成小问题的规律, 并且基于此写出递推公式, 然后推敲终止条件, 最后将递推公式和终止条件翻译成代码只要遇到递归, 就把他抽象成一个递推公式, 不用想一层层的调用关系, 不要试图用人脑去分析递归的每一个步骤递归常见问题
2020-11-26 19:13:23 144
cdh6.3.2安装包全套
2021-05-17
js不同类型图表库
2014-07-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人