- 博客(94)
- 资源 (1)
- 收藏
- 关注
原创 HBase 架构详解析
HBase 的架构相对于其他大数据框架的架构来说是较为复杂的HBase特点具有:列式海量储存, 稀疏性, 列数据可为空, 且不占用空间极易扩展, 储存空间添加 DataNode 节点, 处理性能添加 HRegionServer 节点高可用, 利用 Zookeeper高并发架构中的角色1. Client包含了访问 Hbase 的接口,维护对应的 cache ...
2019-02-16 10:32:01 1303
原创 HBase 优化总结
1.高可用HBase 中的 Hmaster 存在单点故障隐患, 故需要配置 HA, HBase 原生支持对 Hmaster 的 HA步骤如下:1.关闭HBase集群(如果没有开启则跳过此步)[rayfun@hadoop102 hbase]$ bin/stop-hbase.sh2.在conf目录下创建backup-masters文件[rayfun@hadoop102 hb...
2019-02-14 13:07:02 412
原创 HBase 读写流程
读数据流程客户端先查看本地是否存有 meta 表 (包含所需数据所在的 HRegionServer 位置) 数据位置元信息的缓存, 即 blockCache, 如果有直接找对应的 HRegionServer 而不用去 zookeeper 查找元信息, 否则需要到 zookeeper 读取 meta 表, 读取后会先把位置元信息缓存到blockcache 找到 meta 信息后, 向对应...
2019-02-12 13:50:10 972
原创 Hive 调优详解
1.fetch属性在旧版本的 Hive 中, hive-default.xml.template文件中 hive.fetch.task.conversion 默认是 minimal, 修改为 more 后, 全局查找、字段查找、limit查找等都会直接执行而不会运行mapreduce.新版本的 Hive Fetch 的默认值已改为 more.2.本地模式数据量小的情况下, 可以使用本地模式...
2019-01-18 19:24:31 716
原创 MySQL解决Waiting for table metadata lock
更改表名时发现卡住show full processlist;发现更改表名的进程卡住,出现表锁,之后所有对这张表的操作都会卡住相关状态 Command 为:Waiting for table metadata lock使用 kill ID杀掉进程但是, 发现杀不掉, 还会以新的 ID 重新运行检查事务:select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.inn..
2021-02-03 15:44:31 2133
原创 mysql 8.0高版本 sql_mode=only_full_group_by 解决方法
运行 sql 时报错Expression #2 of SELECT list is not in GROUP BY clause........ which is not functionally dependent on columns in GROUP BY clause;this is incompatible with sql_mode=only_full_group_by1、报错原因这个错误一般发生在mysql 5.7以及 5.7以上的版本中,其原因是mysql的默认配置中,sql_m
2021-02-02 15:43:37 3900 2
原创 spark利用cache优化shuffle
cache表,数据放内存,数据被广播到Executor,将多份数据进行关联是数据处理过程中非常普遍的用法,不过在分布式计算系统中,这个问题往往会变的非常麻烦,因为框架提供的 join 操作一般会将所有数据根据 key 发送到所有的 reduce 分区中去,也就是 shuffle 的过程。造成大量的网络以及磁盘IO消耗,运行效率极其低下,这个过程一般被称为 reduce-side-join。如果其中有张表较小的话,我们则可以自己实现在 map 端实现数据关联,跳过大量数据进行 shuffle 的过程,
2021-01-02 18:41:13 722
原创 spark缓存机制cache,persist和checkpoint
避免spark每次都重算RDD以及它的所有依赖,cache()、persist()、 checkpoint()。1、cache():会被重复使用,但是不能太大的RDD,将其cache()到内存当中,catch()属于 memory only 。cache 是每计算出一个要 cache 的 partition 就直接将其 cache 到内存中。缓存完之后,可以在任务监控界面storage里面看到缓存的数据。2、persist():可以设置缓存级别,如只在内存,只在磁盘,内存磁盘都用。MEMORY_
2021-01-02 18:16:07 1148 1
原创 Flume到底会不会丢失数据?
Source到Channel是事务性的,put事务Channel到Sink也是事务性的,take事务这两个环节都不可能丢失数据, 传输失败后会回滚doRollback。但是source: (1)exec source ,后面接tail -f,这个数据也是有可能丢的。 (2)TailDir source ,这个是不会丢数据的,它可以保证数据不丢失。channel: 采用MemoryChannel,(1)在agent宕机时候导致数据在内存中丢失;(2)Channel...
2021-01-01 16:19:17 2976 2
原创 MapReduce的shuffle阶段优化详解
一、资源相关参数1)以下参数是在用户自己的mr应用程序中配置就可以生效(mapred-default.xml) 配置参数 参数说明 mapreduce.map.memory.mb 一个Map Task可使用的资源上限(单位:MB),默认为1024。如果Map Task实际使用的资源量超过该值,则会被强制杀死。 mapreduce.reduce.memory.mb 一个Reduce Tas.
2021-01-01 15:14:00 1098
原创 Hive求topN
select t2.* from( select pid,uid,cnt,row_number() over (partition by pid order by cnt desc ) as rank from ( select pid,uid,count(uid) as cnt from visit2 group by pid,uid order by pid,cnt desc ) as t1 ) as t2where t2.r.
2020-12-31 11:48:01 1089
原创 Kafka数据重复详细解决办法
Kafka自带方法:幂等性 +ack-1 + 事务kafka在0.11版新增了幂等型producer和事务型producer。前者解决了单会话幂等性等问题,后者解决了多会话幂等性幂等性: 支持单分区单会话, 分区内数据有序,对照id, 数据有唯一id存在不发送事务: 支持多分区, 数据有唯一id, 和所有分区中比较, 如果存在不发送, 效率低下 (生产环境较少使用, 容易数据挤压, 应更追求效率)保证数据 exactly-once 语义不重复的最佳解决办法:在下一级去重:SparkSt.
2020-12-31 10:52:39 3264
原创 Hive 删除行, 表 ,清空表
删除行A表数据如下id(String) name(String)----------------------------1 aaa2 bbb3 ccc-----------------------------要求删除2 ...
2019-06-28 09:55:31 21976
转载 正则表达式的贪婪和非贪婪匹配
贪婪匹配:正则表达式一般趋向于最大长度匹配。非贪婪匹配:匹配到结果就好。默认是贪婪模式。在量词后面直接加一个问号?就是非贪婪模式。量词:{m.n}:m到n个 *:任意多个(表示匹配0-无穷)+:一个到多个(表示匹配1-无穷) ?:0或一个.表示除\n之外的任意字符(?=Expression)顺序环视,(?=\\()就是匹配正括号eg:...
2019-06-14 13:03:40 6072 3
原创 RegexBuddy 正则表达式辅助工具使用指南
1 下载 RegexBuddy 并安装安装后的界面如下:2 切换布局点击右上角的彩色格子图标,选择 Side by Side Layout:这种布局的好处是,Create 面板与 Test 面板同时被展示,方便比对:3 界面说明4 选择编程语言左上角的下拉框可以指定需要的编程语言:5 解...
2019-06-14 12:48:58 927
转载 Hive 分析函数与混合函数
函数分类HIVE CLI 命令显示当前会话有多少函数可用 SHOW FUNCTIONS;显示函数的描述信息 DESC FUNCTION concat;显示函数的扩展描述信息 DESC FUNCTION EXTENDED concat;简单函数函...
2019-06-07 12:01:45 312
原创 cume_dist () 和 percent_rank () 使用
SQL> create table cume ( 2 id integer, 3 value number(8,2), 4 name varchar2(30));Table created.SQL>SQL> select * from cume; ID VALUE NAME---------- ---------- -...
2019-06-07 11:58:03 5530
原创 Hive 贪婪匹配和非贪婪匹配 .* 和 .*?
贪婪匹配和非贪婪匹配的区别 .* 和 .*?举例如下: 从字符串"888|666|544"中提取最后一个竖线|后面的内容,但是在这个字符串中,竖线的个数不是固定的 。 使用hive中的regexp_extract函数实现如下:hive> select regexp_extract('888|666|544...
2019-06-06 17:25:13 1714 1
转载 Idea 阿里代码规约插件安装设置
在MAC系统中设置为例,其他系统 相差不多 风.fox阿里巴巴Java开发规约插件 安装MAC Preferences->Plugins->Browse repositories WINDOW Settings -> Plugins -...
2019-05-31 18:12:13 1972
原创 Hive 更新增量表
insertoverwritetableerp.tsor_BKPF--要更新此表SELECTtd.*FROM(select ta.*fromerp.tsor_BKPF ta--先要把原来中未更新的数据捞出来leftjoin(selecttc.MANDT,tc.BUKRS,t...
2019-05-27 09:41:13 1687
原创 将 Hive 空值统一为 \N
Hive在使用过程中不可避免需要对NULL、’’(空字符串)进行判断和识别。Hive默认情况下底层存储空值跟其他传统数据库有所不同。1、hive默认存储空值的规则 (1) 不同数据类型对空值的存储规则 Int与String类型,NULL底层默认存储为\N,查询...
2019-05-27 09:24:02 5158
原创 Hive Select 选择语句排除一列或多列
有时候我们需要几乎所有的列,但是不包括分区列或其中的某些列,比如分区列要放最后,我们要在之前插入新列并插入新的数据,这时候排除一列或者多列的 select 语句就十分有用了排除num列set hive.support.quoted.identifiers=none;select`(num)?+.+`from (select row_number() over (p...
2019-05-22 08:43:16 9650 2
转载 Hive select 语句大量技巧
hive 查询操作: 1、列匹配正则表达式 select 查询列使用正则表达式匹配列,hive 0.13 版本之前直接用。0.13 及后续版本需要开设置 hive 的属性set hive.support.quoted.identifiers=none;...
2019-05-19 16:23:07 2845
原创 Hive 全部函数示例
目录关系运算1、等值比较: =2、不等值比较: <>3、小于比较: <4、小于等于比较: <=5、大于比较: >6、大于等于比较: >=7、空值判断: IS NULL8、非空判断: IS NOT NULL9、LIKE比较: LIKE10、JAVA的LIKE操作: RLIKE11、REGEXP操作: REGEXP...
2019-05-17 08:29:34 502
原创 理解 o(1), o(n), o(logn), o(nlogn)
在描述算法复杂度时,经常用到 o (1), o (n), o (logn), o (nlogn) 来表示对应算法的时间复杂度,这里进行归纳一下它们代表的含义:这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。O 后面的括号中有一个函数,指明某个算法的耗时 / 耗空间与数据增长量之间的关系。其中的 n 代表输入数据的量。比如时间复杂度为 O (n),就代表数据...
2019-04-29 07:37:24 1974
原创 Kafka 本地策略 LocationStragies:PreferConsistent
创建 Direct 方式的 Stream注意导入的包名称以及版本是 org.apache.spark.streaming.kafka010Scala 代码:import org.apache.kafka.clients.consumer.ConsumerRecordimport org.apache.kafka.common.serialization.StringDeserial...
2019-04-27 19:49:48 4494 3
原创 Spark 中 reduceByKey 和 countByKey 的区别
相同点:两者都会根据 key 来分组不同点:reduceByKey:Transormation 类算子,根据用户传入的聚合逻辑对数组内的数据进行聚合, 懒策略, 延迟计算countByKey:Action 类算子,不需要用户传入聚合逻辑,直接对数组内的数据进行统计记录数, 触发计算data.countByKey () 相当于 data.reduceByKey (_+_...
2019-04-26 20:39:51 726
原创 Windows 使用 virtualenv 安装 Jupyter notebook
如果图方便可以直接下载 Anaconda 平台, 包含机器学习的常用工具包如果想要简洁可以使用 Miniconda, 这里介绍这种:1.首先安装 Miniconda进入官网, 下载 windows 对应版本https://docs.conda.io/en/latest/miniconda.html2.安装 virtualenv打开创建一个自定义文件, 使用 dir 查看当...
2019-04-22 09:42:48 332
原创 Ubuntu 更换国内安装源
1. 备份原来的源sudo cp /etc/apt/sources.list /etc/apt/sources_init.list以防以后用到2. 更换源sudo vim /etc/apt/sources.list使用 vim 打开文档,将下边的阿里源复制进去, 覆盖或将原来的注释掉,然后点击保存关闭。阿里源deb http://mirrors.aliyun.com/...
2019-04-20 19:51:46 5117
原创 Thread.currentThread().getContextClassLoader().getResourceAsStream
打个简单的比方,你一个 WEB 程序,发布到 Tomcat 里面运行。首先是执行 Tomcatorg.apache.catalina.startup.Bootstrap 类,这时候的类加载器是 ClassLoader.getSystemClassLoader ()。而我们后面的 WEB 程序,里面的 jar、resources 都是由 Tomcat 内部来加载的,所以你在代码中动态加载 ja...
2019-04-19 08:55:17 3360
原创 Spark 函数 updateStateByKey 解析
updateStateByKey 操作允许您在使用新的信息持续更新时保持任意状态1、定义状态 - 状态可以是任意数据类型。2、定义状态更新功能 - 使用函数指定例如以 DStream 中的数据进行按 key 做 reduce 操作,然后对各个批次的数据进行累加对于有状态操作,要不断的把当前和历史的时间切片的 RDD 累加计算,随着时间的流逝⌛,计算的数据规模会变得越来越大upda...
2019-04-15 19:11:42 1385
原创 理解栈帧和栈的运行原理
栈中的数据都是以栈帧(Stack Frame)的格式存在,栈帧是一个内存区块,是一个数据集,是一个有关方法(Method)和运行期数据的数据集,当一个方法A被调用时就产生了一个栈帧 F1,并被压入到栈中,A方法又调用了 B方法,于是产生栈帧 F2 也被压入栈,B方法又调用了 C方法,于是产生栈帧 F3 也被压入栈,……执行完毕后,先弹出 F3栈帧,再弹出F2栈帧,再弹出F1...
2019-04-08 19:53:07 7232 3
原创 理解 JVM GC 垃圾回收算法
JVM 堆根据对象的生命周期长短特点将其进行分块,根据每块内存区间的特点,使用不同的回收算法,新生代使用了复制算法,老年代使用了标记压缩清除算法, 目的是为了提高垃圾回收的效率。这些算法是什么, 有什么不同?究竟是如何提高效率的呢?算法一:复制算法(Java 中新生代采用)核心思想是将内存空间分成两块,同一时刻只使用其中的一块,在垃圾回收时将正在使用的内存中的存活的对象复制到未使...
2019-04-08 19:29:25 194
原创 对象的四种引用: 强引用, 弱引用, 软引用, 虚引用
JDK1.2 之前定义什么是引用:如果 reference 类型的数据中存储的数值代表的是另一块内存的起始地址,就称这块内存代表着一个引用。强引用就是指在程序代码中普遍存在的,类似 “Object obj = new Object()” 这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。软引用是用来描述一些还有用但并非必须的对象。对于软引用关联着的对象,在系统...
2019-04-08 18:56:41 346
原创 HUE 连接 MySql 数据库报错 libmysqlclient_r.so.16: cannot open shared object file: No such file
安装 CDH 的 HUE 时连接 MySql 数据库报错查看日志信息:Error loading MySQLdb module: libmysqlclient_r.so.16: cannot open shared object file: No such file or directorylibmysqlclient_r.so.16: cannot open shared objec...
2019-04-03 21:53:27 1068 2
翻译 认识大牛 深度学习“三剑客”
美国东部时间 2019 年 3 月 27 日,美国计算机协会(ACM)宣布,深度学习的三位推动者尤舒亚·本吉奥(Yoshua Bengio)、杰弗里·辛顿(Geoffrey Hinton),和雅恩·乐昆(Yann LeCun)因其在神经网络方面的成就赢得了 2018 年的图灵奖(A.M. Turing Award)图灵奖诞生于 1966 年,这一奖项名称取自计算机先驱艾伦・图灵(AlanM...
2019-03-29 21:04:24 1978
原创 理解时间复杂度
本篇概念皆是关于时间复杂度首先需要了解一个概念时间频度一个算法中的语句执行次数称为语句频度或时间频度。记为 T(n)。一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多时间复杂度n 称为问题的规模,当 n 不断变化时,时间频度 T(n) 也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念一般情况下,...
2019-03-28 20:13:33 1390
原创 Scala 优雅入门 (八) 数据结构 - 列表
ListScala 中的 List 和 Java List 不一样,在 Java 中 List 是一个接口,真正存放数据是 ArrayList,而 Scala 的 List 可以直接存放数据,就是一个 object,默认情况下 Scala 的 List 是不可变的,List 属于序列 Seqval List = scala.collection.immutable.List...
2019-03-25 21:05:53 275
原创 azkaban 报错:javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:671) at sun.security.ssl.InputRecord.r...
2019-03-25 19:51:45 3618
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人