- 博客(125)
- 收藏
- 关注
原创 数据倾斜解决方案
第一种情况问题描述:上游表文件的大小特别不均匀,而且小文件特别多,导致当前表Map端读取的数据分布不均匀,引起长尾第一种情况解决方案:读取的时候合并小文件,尽量做到读取文件大小差不多第二种情况问题描述:Map端做聚合时,就是combine操作的时候读取文件的某个值特别多而引起长尾第二种情况解决方案:用distribute by rand() 来打乱数据分布,访问读取某一个key的数据过多。
2023-04-20 22:47:52
471
原创 in和exist用法
## name id name class_id1 xiaoming 1null liming 23 xiaozhang 3## classid class_name1 class_12 class_2null class_3insert into table name values(1,'xiaoming',1);insert into table name values(null,'liming',2);
2021-01-07 16:00:59
322
原创 join特殊用法总结
笛卡尔积写法A表的行 * B表的行(产生笛卡尔积)cross join案例:select * from A cross join Bjoin操作后边不加on条件案例:select * from A join Bjoin操作后边直接加上on 1 = 1案例:select * from A join B on 1 = 1...
2021-01-07 14:51:20
4394
原创 双重group by优化原理
原始sqlexplain select count(distinct user_id) ,count(1)from testwhere dt = '2020-10-01';优化sqlexplain select count(1)test ,sum(u_cnt) from ( select user_id ,count(1) as u_cnt from test where dt = '2020-
2020-12-17 16:29:07
1107
原创 orc和parquet数据存储格式
Parquet行组(Row Group):按照行将数据物理上划分为多个单元,每一个行组包含一定的行数。一个行组包含这个行组对应的区间内的所有列的列块官方建议更大的行组意味着更大的列块,使得能够做更大的序列IO。我们建议设置更大的行组(512MB-1GB)。因为一次可能需要读取整个行组,所以我们想让一个行组刚好在一个HDFS块中。因此,HDFS块的大小也需要被设得更大。一个最优的读设置是:1GB的行组,1GB的HDFS块,1个HDFS块放一个HDFS文件。列块(Column Chunk):在
2020-12-17 16:20:27
731
原创 数据指标体系命名规范
原子指标定义原子指标 = 单一业务修饰词+基础指标词根,例如:支付金额-payment_amt命名规范派生指标定义派生指标 = 多业务修饰词+基础指标词根,派生指标继承原子指标的特性,例如:T+180体系课商品复购率,其中T+180是时间修饰词、体系课复购是业务修饰词、比率是基础指标词根命名规范日期类指标命名规范命名时要遵循:业务修饰词+基础指标词根+聚合修饰词(日期修饰词)。将日期后缀加到名称后面,如下图所示:聚合类型指标命名规范命名时要遵循:业务修饰词+基础指标词根+聚
2020-12-17 16:05:24
4324
原创 数据主题域划分
作用:对公司所有的业务过程进行归纳汇总后,总结出公司所有的主题域,并且也能清晰的知道公司的所有业务模块有助于建模人员和运营人员对了解公司业务情况有利于在进行模型设计时,根据主题域和业务过程设计表,做到看到一个表名就知道他真正的业务含义以下主题域仅供参考:...
2020-12-17 15:57:14
4639
1
原创 flink的checkpoint容错机制
Checkpoint 在 Flink 中是一个非常重要的 Feature,Checkpoint 使 Flink 的状态具有良好的容错性,通过 Checkpoint 机制,Flink 可以对作业的状态和计算位置进行恢复。Flink 的 Checkpoint 有以下先决条件:需要具有持久性且支持重放一定时间范围内数据的数据源。例如:Kafka、RabbitMQ 等。这里为什么要求支持重放一定时间范围内的数据呢?因为 Flink 的容错机制决定了,当 Flink 任务失败后会自动从最近一次成功的 Check
2020-12-17 15:31:14
670
1
原创 实时计算引擎对比
modelflink和storm是基于Native Streaming,来一条处理一条,单位为毫秒spark streaming、spark structured streaming、strom的trident是batch为单位进行数据处理,单位为秒timeflink支持三种process time(事件被机器处理的事件)、event time(事件自身的时间)、ingestion time(事件进入flink的时间)spark、storm只支持process timewaterma..
2020-12-17 15:18:52
1021
原创 mapreduce基础原理
Map完成过程为:<k1,v1> => list<k2,v2>1. 写入环形缓冲区Map函数产⽣输出时,不是简单的写⼊到磁盘。⾸先,每个map任务在内存中都有⼀个环形缓冲区,⼀般默认⼤⼩为100M。Map开始产⽣输出后,先将数据存⼊这个缓冲区,当缓冲区存储内容达到阈值(⽐如80%)时,启动⼀个后台线程将内容溢出(spill)到本地磁盘。在溢出写的同时,map继续输出到缓冲区,如果此期间缓冲区填满,则需要阻塞等待写磁盘的过程完成。2. 溢出写到磁盘分区 -> 排
2020-12-17 15:15:06
227
原创 维度建模和ER模型的对比
从业务角度出发来考虑ER模型是用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,是以业务功能为出发构建数据模型,而不是针对某个具体业务流程的,面向功能性模块开发。维度建模以分析决策的需求为出发点构建模型,一般有较好的大规模复杂查询的响应性能,更直接面向业务,典型的代表是我们比较熟知的星形模型,常用就是事实表关联很多维度表、退化维度形成宽表、根据某主题下的业务过程进行建模,往往是维度建模友好度更高,面向分析式模型开发。从易用性和交付效率方面来考虑ER模型是规范性好、冗余少、但..
2020-12-17 14:58:37
3672
1
原创 hue解决下载的excel表格为10万行的限制
解决方案:CDH的版本为:5.14.0vim /opt/cloudera/parcels/CDH/lib/hue/apps/beeswax/src/beeswaxDOWNLOAD_CELL_LIMIT = Config( key='download_cell_limit', # 表格限制的大小,行数 * 列数 default=10000000, type=int, h...
2018-11-29 20:10:37
3491
2
原创 kudu数据刷新策略api
课程链接: http://edu.51cto.com/course/15174.htmlpackage src.main.java.org.kududb.examples.sample;import com.google.common.collect.ImmutableList;import org.apache.kudu.ColumnSchema;import org.apache.k...
2018-10-19 14:59:18
1637
原创 centos7.4安装ambari2.6.0和hdp2.6.5
下载包:http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.6.0.0/ambari-2.6.0.0-centos7.tar.gzhttp://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.5.0/HDP-2.6.5.0-centos7-r...
2018-06-15 17:46:56
1685
原创 ambari卸载smartsence
smartsense是hortonworks一个商业的组件功能,作用是监控集群,并提供建议,建议是不用第一步,确定SmartSence服务均已关闭curl -u admin:admin -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo": {"context" :"Stop SmartSense via REST"}, "B...
2018-06-15 17:37:09
1729
原创 ambari安装过程中错误解决
问题一: ERROR: Exiting with exit code -1. REASON: Before starting Ambari Server, you must copy the MySQL JDBC driver JAR file to /usr/share/java and set property “server.jdbc.driver.path=[path/to/custo...
2018-06-15 17:32:10
7468
4
原创 ambari和hdp滚动升级
ambari升级备份元数据ambari-server backup备份mysql数据库mysql -u ...... &gt; ambari.sql备份ambari配置文件cp /etc/ambari-server/conf/ambari.properties /etc/ambari-server/conf/ambari.properties.bak停止相关...
2018-06-15 17:11:37
1593
原创 ambari和clouderaManager对比
出版商:hortonworks研发了Ambari和hdp的大数据分析集成平台cloudera研发了cloudera manger和cdh大数据分析集成平台稳定性:cloudera相对来说比较稳定ambari相对来说不稳定(页面打开速度慢)资源消耗:cloudera manager的server端Xmx是2G,agent是1G,但是有host monitor和ser...
2018-06-15 16:48:32
4252
2
原创 azkaban的execute讲解
NotificationThe notification options allow users to change the flow’s success or failure notification behavior.Notify on Failure● First Failure - Send failure emails after the first failure is d...
2018-05-16 17:22:46
1231
原创 kudu1.7.0新特性
Apache Kudu 1.7.0是一个次要版本,提供新功能,性能优化,增量改进和错误修复。1、kudu支持decimal类型 2、Kudu用于自动修复由于服务器或磁盘故障而丢失副本的tablet策略已得到改进。新的重新复制策略或副本管理方案首先添加替代tablet副本,然后驱逐失败的。 3、新的扫描读取模式READ_YOUR_WRITES。在C ++,Java和Python客户端中创建新...
2018-05-09 13:13:26
1782
3
原创 spark源码分析之dagscheduler原理篇
一个action操作触发runjob方法,然后一步一步的调用runjob,一直调用到dagScheduler的runjob方法 解释: 1、首先会创建一个hadoopRDD,然后将hadoopRDD变成一个MapppedRDD 2、创建一个FlatMappedRDD 3、创建一个MappedRDD 4、reduceByKey这个算子,首先会产生MapPartitionsRDD,然后是...
2018-02-15 18:48:47
520
3
原创 spark源码分析之worker原理篇
解释: 1、master要求worker启动driver和executor 2、worker启动driver的一个基本的原理,worker会启动一个线程DriverRunner,然后DriverRunner会去负责启动driver进程,然后在之后对driver进程进行管理 3、worker启动executor的一个基本的原理,worker会启动一个线程ExecutorRunner,然后...
2018-02-13 18:48:59
447
原创 spark源码分析之master资源调度schedule篇
原理解释: 1、首先判断master的状态不是alive的话直接返回,也就是说,standby master是不会进行application等资源的调度的 2、对取出workers中所有注册上来上的worker,进行过滤,必须是状态为alive的worker,调用rondom的shuffle方法进行随机的打乱(从第三个worker进行shuffle) 3、遍历活着的worker,启动driv...
2018-02-10 22:54:08
354
原创 spark源码分析之master状态改变篇
解释: executor状态改变(ExecutorStateChanged) 1、找到executor对应的applicaiton,然后再反过来通过applicaiton内部的executors缓存获得executor信息 2、设置executor的当前状态为LAUNCHING状态,并向driver同步发送ExecutorUpdated消息 3、如果executor的状态已经发生变化,...
2018-02-10 22:06:52
328
原创 spark源码分析之master注册机制篇
解释: worker向master注册worker在启动之后,就会向master进行注册对于worker状态为dead的,过滤掉。比如说master在一定时间期限已经完成了恢复,但是发现其中的worker为unknown的情况下,对worker进行remove,将worker的状态设置为dead,如果过了很长时间worker又莫名其妙的向master进行注册的情况下,直接过滤掉对于...
2018-02-10 17:53:55
274
原创 spark源码分析之master主备切换篇
Master的准备切换分为两种 ①、一种是基于文件系统的,spark提供目录保存spark Application和worker的注册信息,并将他们的恢复状态写入该目录,当spark的master节点宕掉的时候,重启master,就能获取application和worker的注册信息。需要手动进行切换### 配置:conf/spark-env.shexport SPARK_DAEMON...
2018-02-10 13:57:35
414
原创 spark源码分析之sparkcontext原理篇
首先通过SparkContext方法,进行TaskScheduler的初始化机制,通过createTaskScheduler方法,通过创建TaskSchedulerImpl类(实际就是我们所说的taskScheduler)和SparkDeploySchedulerBackend,然后TaskSchedulerImpl的initialize方法,创建SchedulerPool(资源调度池,比如...
2018-02-09 18:35:03
501
原创 idea构建scala的maven项目
1.下载scala的插件快捷键:Ctrl+Alt+s安装完成后,提醒需要重新IDEA 2.创建maven工程3.安装scala的sdk 4.创建scala的package
2018-02-09 12:14:14
1690
原创 impala架构详细讲解
架构:采用无中心设计三大核心组件:Impala Daemon impalad是Impala的核心进程,运行在所有的数据节点上,可以读写数据,并接收客户端的查询请求,并行执行来自集群中其他节点的查询请求,将中间结果返回给调度节点。调用节点将结果返回给客户端。用户在impala集群上的某个节点提交数据处理请求 则该节点称为coordinator node(协调器节点),其...
2018-02-09 12:13:53
3564
原创 impala两种方式同步hive元数据
基础知识Impala采用多个impalad(impala的核心进程)同时提供服务的方式,并且它会由catalogd(元数据管理和元数据存储)缓存全部元数据,再通过statestored(状态管理进程)完成每一次的元数据的更新到impalad节点上,Impala集群会缓存全部的元数据。 Impala在传统的MySQL或PostgreSQL数据库称为Metastore,Hive也在...
2018-02-09 12:13:33
22045
原创 oozie更改默认数据库为mysql
1、在mysql中设置访问权限CREATE database oozie DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; GRANT ALL PRIVILEGES ...
2018-02-09 12:12:51
884
2
原创 oozie报错解决方案
问题一:错误描述:2017-7-29 16:13:25,949 WARN org.apache.oozie.command.wf.ActionStartXCommand: USER[akhanolk] GROUP[-] TOKEN[] APP[WorkFlowForSshAction] JOB[0000002-131029144918199-oozie-oozi-W] ...
2018-02-09 12:12:06
3273
4
原创 cloudera manager整体介绍
体系架构 Cloudera Manager的核心是Cloudera Manager Server。Server托管Admin Console Web Server和应用程序逻辑。它负责安装软件、配置、启动和停止服务以及管理运行服务的群集。 解释:Agent:安装在每台主机上。它负责启动和停止进程,解压缩配置,触发安装和监控主机Management Service:执行各种监控、报...
2018-02-09 11:57:55
13909
2
原创 spark源码分析之内核架构篇
第一步: 在一台具有spark安装包上的机器,通过spark-submit提交Spark程序,也就是我们的Application,通过反射机制创建一个DriverActor的进程(这里所说的提交方式为standalone模式,包括client和cluster模式) 第二步: Driver进程执行我们的application应用程序,也就是我们的代码。 第三步: 初始化SparkCon...
2018-02-08 20:33:53
879
1
原创 superset安装步骤
Superset目前使用Python 2.7和Python 3.4+进行测试。 推荐Python 3,不支持Python 2.6。第一步:下载依赖包yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel sq...
2018-02-08 06:59:49
2002
原创 kafka报错解决
错误一: 解决办法:启动kafka集群错误二: test - marked for deletion 解决办法:[zk: localhost:2181(CONNECTED) 0] ls /admin/delete_topics/test[][zk: localhost:2181(CONNECTED) 3] rmr /admin/delete_topics/te...
2018-02-08 06:51:48
1870
原创 jupyter的python2和python3共存解决方案
效果图: 解决办法: 安装anaconda3 点击Anaconda Navigator第一步:查看安装了那些包conda list第二步:在安装python3的基础上新建一个python2.7的环境conda create -n py27 python=2.7activate py27conda install -n py27 ipykerne...
2018-02-08 06:49:59
5176
1
原创 redis安装流程
1、安装依赖包yum -y install gcc gcc-c++ libstdc++-devel tcl2、获取安装文件并解压文件tar -zvx -f redis-3.2.4.tar.gz 3、进入目录cd redis-3.2.44、编译make5、安装make install6、设置配置文件路径mkdir -p /etc/red...
2018-02-08 06:48:06
298
原创 cloudera manager的agent的ip地址改变解决方案
1、首先在安装cloudera-manager的主机上,启动所有的cloudera管理进程 [root@node1 ~]# /etc/init.d/cloudera-scm-server-db status[root@node1 ~]# /etc/init.d/cloudera-scm-server status2、查看postgresql 的scm用户的密码 grep pa...
2018-02-08 06:47:00
1006
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人