05 2020 档案

摘要:一、产生背景 Hbase作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执行求和、计数、排序等操作。比如,在旧版本的(<0.92)Hbase中,统计数据表的总行数,需要使用 Counter 方法,执行一次 MapReduce Job 才能得到。虽然 HBase在数据存储层中集成 阅读全文
posted @ 2020-05-28 16:08 sw_kong 阅读(475) 评论(0) 推荐(0) 编辑
摘要:官网:https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/stream/side_output.html#side-outputs 场景:需把输入数据源按照需要进行拆分,比如把用户访问日志按照访问者的地理位置进行拆分 分流 阅读全文
posted @ 2020-05-27 17:09 sw_kong 阅读(757) 评论(0) 推荐(0) 编辑
摘要:什么是状态? 所谓的状态,其实指的是 Flink 程序的中间计算结果。Flink 支持了不同类型的状态,并且针对状态的持久化还提供了专门的机制和状态管理器。 flink状态的应用,比如: When an application searches for certain event patterns, 阅读全文
posted @ 2020-05-27 15:57 sw_kong 阅读(340) 评论(0) 推荐(0) 编辑
摘要:生成WaterMark对应的源码 方式1:assignTimestampsAndWatermarks(new AssignerWithPeriodicWatermarks<T>) /** * Assigns timestamps to the elements in the data stream 阅读全文
posted @ 2020-05-27 10:56 sw_kong 阅读(435) 评论(0) 推荐(0) 编辑
摘要:官网:https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/stream/operators/#operators Map DataStream → DataStream 在原来的数据源上对每个元素做一定的映射操作,比如将每 阅读全文
posted @ 2020-05-26 16:55 sw_kong 阅读(412) 评论(0) 推荐(0) 编辑
摘要:本文作者为阿里巴巴高级技术专家:金竹,原文发表在云栖社区。 地址为:https://yq.aliyun.com/articles/666056?spm=a2c4e.11155435.0.0.106e1b10snGqMd 实际问题(乱序) 在介绍Watermark相关内容之前我们先抛出一个具体的问题, 阅读全文
posted @ 2020-05-26 13:08 sw_kong 阅读(241) 评论(0) 推荐(0) 编辑
摘要:分布式缓存 分布式缓存的思想在hadoop和spark中都有体现,Flink 提供的分布式缓存类似 Hadoop,目的是为了在分布式环境中让每一个 TaskManager 节点保存一份相同的数据或者文件,当前计算节点的 task 就像读取本地文件一样拉取这些配置。 比如在进行表与表 Join 操作时 阅读全文
posted @ 2020-05-25 18:10 sw_kong 阅读(544) 评论(0) 推荐(0) 编辑
摘要:Flink 自身提供了不同级别的抽象来支持我们开发流式或者批量处理程序,下图描述了 Flink 支持的 4 种不同级别的抽象。 Please note that the Table API and SQL are not yet feature complete and are being acti 阅读全文
posted @ 2020-05-22 17:44 sw_kong 阅读(1607) 评论(0) 推荐(0) 编辑
摘要:实现SourceFunction接口 package com.kong.flink; ​ import org.apache.flink.streaming.api.functions.source.SourceFunction; ​ import java.util.Arrays; import 阅读全文
posted @ 2020-05-22 14:19 sw_kong 阅读(1222) 评论(0) 推荐(0) 编辑
摘要:背景 早在2013年1月,ORC(Optimized Row Columnar)出现,作为大规模加速Apache Hive和提高存储在Apache Hadoop中的数据的存储效率的计划的一部分。重点是为了提升处理速度和减小文件占用磁盘大小。 目前有很多公司已经大规模使用ORC了,比如Facebook 阅读全文
posted @ 2020-05-21 15:33 sw_kong 阅读(600) 评论(0) 推荐(0) 编辑
摘要:控制hive任务中的map数 通常情况下,作业会通过input的目录产生一个或者多个map任务。 主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改); 举 阅读全文
posted @ 2020-05-21 09:13 sw_kong 阅读(536) 评论(0) 推荐(0) 编辑
摘要:假如我们没有添加索引,那么在查询时就会触发全表扫描,效率就会比较低。但是即便建立了索引,使用不当也可能导致索引失效。 1.避免使用 or 查询,可以使用 union 或者子查询来替代 早期的 MySQL 版本使用 or 查询可能会导致索引失效,在 MySQL 5.0 之后的版本中引入了索引合并,简单 阅读全文
posted @ 2020-05-20 17:29 sw_kong 阅读(256) 评论(0) 推荐(0) 编辑
摘要:分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。 开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化!到底什么是数据窗口?后面举例会详细讲到! 基础结构: 分析函数(如:sum(),max(),row_ 阅读全文
posted @ 2020-05-19 16:21 sw_kong 阅读(6341) 评论(0) 推荐(0) 编辑
摘要:理想情况下,我们应用对Yarn资源的请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经常需要等待一段时间才能的到相应的资源。在Yarn中,负责给应用分配资源的就是Scheduler。其实调度本身就是一个难题,很难找到一个完美的策略可以解决所有的应用场景。 阅读全文
posted @ 2020-05-15 16:55 sw_kong 阅读(4538) 评论(0) 推荐(2) 编辑
摘要:转载:https://my.oschina.net/tjt/blog/2250953 在实际使用 spark + parquet 的时候, 遇到了两个不解的地方: 我们只有一个 parquet 文件(小于 hdfs block size), 但是 spark 在某个 stage 生成了4个 task 阅读全文
posted @ 2020-05-14 09:59 sw_kong 阅读(1104) 评论(0) 推荐(0) 编辑
摘要:HashMap 为什么是线程不安全的? modCount++ public V put(K key, V value) { if (key == null) return putForNullKey(value); int hash = hash(key.hashCode()); int i = i 阅读全文
posted @ 2020-05-05 21:35 sw_kong 阅读(246) 评论(0) 推荐(0) 编辑
摘要:ArrayBlockingQueue介绍 ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。 线程安全是指,ArrayBlockingQueue内部通过“互斥锁”保护竞争资源,实现了多线程对竞争资源的互斥访问。 有界是指,ArrayBlockingQueue对应的数组是有界限 阅读全文
posted @ 2020-05-05 18:38 sw_kong 阅读(2475) 评论(0) 推荐(0) 编辑
摘要:LinkedBlockingQueue介绍 LinkedBlockingQueue是一个单向链表实现的阻塞队列。该队列按 FIFO排序元素,新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素。 此外,LinkedBlockingQueue可以指定队列的容量。如果不指定,默认容量大小等于 阅读全文
posted @ 2020-05-05 17:31 sw_kong 阅读(3905) 评论(0) 推荐(0) 编辑
摘要:在创建线程池时我们可以指定自己的拒绝策略,如下 什么时候会触发拒绝策略 当我们调用 shutdown 等方法关闭线程池后,如果再向线程池内提交任务,就会遭到拒绝。 线程池没有空闲线程(线程池的线程达到了最大线程数,并且都在执行任务)并且队列已经满了,不能在存放任务了。 拒绝策略 ThreadPool 阅读全文
posted @ 2020-05-05 16:38 sw_kong 阅读(2326) 评论(0) 推荐(0) 编辑
摘要:ThreadPoolExecutor 中关闭线程池的方法 判断线程池状态的方法 shutdown() 调用 shutdown() 方法之后线程池并不是立刻就被关闭,因为这时线程池中可能还有任务正在执行,或是任务队列中有正在等待的任务,它会等待正在执行的任务和队列中等待的任务执行完毕后才彻底关闭。 注 阅读全文
posted @ 2020-05-05 16:15 sw_kong 阅读(2000) 评论(0) 推荐(0) 编辑
摘要:Zookeeper 架构 首先简单介绍下 Zookeeper 集群,一个 Zookeeper 集群通常由一组机器组成,一般3~5台集群就可以组成一个 Zookeeper 集群。集群拓扑图基本如下: Zookeeper 集群中每一个节点都会在内存中维护当前的节点状态,并且彼此之间保持着通信 Leade 阅读全文
posted @ 2020-05-03 16:17 sw_kong 阅读(367) 评论(0) 推荐(0) 编辑
摘要:前言 有同事问到,Spark读取一张Hive表的数据Task有一万多个,看了Hive表分区下都是3MB~4MB的小文件,每个Task只处理这么小的文件,实在浪费资源浪费时间。而我们都知道Spark的Task数由partitions决定,所以他想通过repartition(num)的方式来改变分区数, 阅读全文
posted @ 2020-05-03 12:04 sw_kong 阅读(2368) 评论(0) 推荐(0) 编辑
摘要:转载自网易范欣欣 http://hbasefly.com/ 最近想来,大数据相关技术与传统型数据库技术很多都是相互融合、互相借鉴的。传统型数据库强势在于其久经考验的SQL优化器经验,弱势在于分布式领域的高可用性、容错性、扩展性等,假以时日,让其经过一定的改造,比如引入Paxos、raft等,强化自己 阅读全文
posted @ 2020-05-02 17:29 sw_kong 阅读(336) 评论(0) 推荐(0) 编辑
摘要:java NIO包括了以下几个核心部分: Channel Buffer Selector java NIO是非阻塞IO,比如:线程请求把channel中的数据读入到buffer,当channle执行读数据到buffer时,线程可以去做其他事,不用一直等它。一旦数据读入缓冲区,线程就可以继续处理它。同 阅读全文
posted @ 2020-05-01 17:35 sw_kong 阅读(227) 评论(0) 推荐(0) 编辑
摘要:网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请求,通过三次握手建立连接,如果连接建立成功,双方就可以通过网络套接字(Socket)进行通信。 IO的方式通常分为几种 阅读全文
posted @ 2020-05-01 08:42 sw_kong 阅读(472) 评论(0) 推荐(1) 编辑