- 博客(47)
- 收藏
- 关注
原创 Git简介
我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。如果在dev分支上面,对一个文件做了修改,这个时候master分支上面对应的文件是没有修改信息的。在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件的模式。选择Git命令的执行环境,这里推荐选择第一个,就是单独用户Git自己的命令行窗口。
2023-10-05 20:53:47 136
原创 Redis
这个时候,分表分库成了一个热门技术,是业界讨论的热门技术问题。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。在Memcached的高速缓存,MySQL的主从复制,读写分离的基础之上,这时MySQL主库的写压力开始出现瓶颈,而数据量的持续猛增,由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。超过后,就呈现阻塞状态。
2023-10-05 20:52:37 170
原创 Structured Streaming
精准一次消费是结构化流设计的主要目标之一,为此结构化有接收器和执行引擎,可以可靠地跟踪处理确切的进度,以便结构化流可以通过重新启动或/重新处理来处理任何类型的故障。例如流数据源Kafka,结构化流可以跟踪对应偏移量读取位置,引擎使用checkpoint和wal预写日志记录每个trigger触发器的偏移量。结构化流可以重播源数据和幂等的接收器,确保精准一次消费。watermark 在用于基于时间的状态聚合操作时, 该时间可以基于窗口, 也可以基于 event-time本身.
2023-10-05 20:51:33 423
原创 集群监控Zabbix
Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。
2023-10-05 20:25:51 164
原创 即席查询Presto&Kylin
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
2023-10-05 20:19:29 282
原创 Superset
第1章 Superset入门1.1 Superset概述Apache Superset是一个开源的、现代的、轻量级BI分析工具,能够对接多种数据源、拥有丰富的图标展示形式、支持自定义仪表盘,且拥有友好的用户界面,十分易用。1.2 Superset应用场景由于Superset能够对接常用的大数据分析工具,如Hive、Kylin、Druid等,且支持自定义仪表盘,故可作为数仓的可视化工具。第2章 Superset安装及使用Superset官网地址:Welcome | Superset2.1 安装Python环境
2023-10-05 20:12:44 76
原创 大数据项目之电商数据仓库系统(四)
导入数据时采用--null-string和--null-non-string。sum(if(login_date_first=date_add('$do_date',-1) and login_date_last='$do_date',1,0)),--$do_date的1日留存数。sum(if(login_date_first=date_add('$do_date',-2) and login_date_last='$do_date',1,0)),--$do_date的2日留存数。
2023-10-05 20:11:44 157
原创 大数据项目之电商数据仓库系统(三)
用户在使用过程中,若因收发短信或接电话等退出应用30秒又再次返回应用中,那这两次行为应该是延续而非独立的,所以可以被算作一次使用行为,即一次启动。例如,5月份新增用户200,这200人在6月份启动过应用的有100人,7月份启动过应用的有80人,8月份启动过应用的有50人;则5月份新增用户一个月后的留存率是50%,二个月后的留存率是40%,三个月后的留存率是25%。首次联网使用应用的用户。新增用户包括日新增用户、周新增用户、月新增用户。某段时间内的新增用户,经过一段时间后,仍然使用应用的被认作是留存用户;
2023-10-05 20:08:02 61
原创 大数据项目之电商数据仓库系统(二)
最后通过查询临时表数据,把查询到的数据插入到最终的目标表中。SELECT get_json_object('[{"name":"大郎","sex":"男","age":"25"},{"name":"西门庆","sex":"男","age":"47"}]',"$[0].age");select get_json_object('[{"name":"大郎","sex":"男","age":"25"},{"name":"西门庆","sex":"男","age":"47"}]','$[0]');
2023-10-05 20:02:15 153
原创 大数据项目之电商数据仓库系统(一)
关系模型如图所示,严格遵循第三范式(3NF),从图中可以看出,较为松散、零碎,物理表数量多,而数据冗余程度低。我们站在用户维度表的角度去看订单事实表,重点关注订单事实表至今的累积下单次数、累积下单金额和某时间段内的累积次数、累积金额,以及关注下单行为的首次时间和末次时间。如果报错,就根据提示,修改相关方法,直到不报错,打包获取jar包。事实表和维度表的关联比较灵活,但是为了应对更复杂的业务需求,可以将能关联上的表尽量关联上。例如,需要统计,什么时间下的订单多,哪个地区下的订单多,哪个用户下的订单多。
2023-10-05 19:58:08 528
原创 电商数仓(系统业务数据仓库)
这24个表以订单表、用户表、SKU商品表、活动表和优惠券表为中心,延伸出了优惠券领用表、支付流水表、活动订单表、订单详情表、订单状态表、商品评论表、编码字典表退单表、SPU商品表等,用户表提供用户的详细信息,支付流水表提供该订单的支付详情,订单详情表提供订单的商品数量等情况,商品表给订单详情表提供商品的详细信息。当用户寻找到自己中意的商品,可能会想要购买,将商品添加到购物车后发现需要登录,登录后对商品进行结算,这时候购物车的管理和商品订单信息的生成都会对业务数据库产生影响,会生成相应的订单数据和支付数据。
2023-10-05 12:33:46 142
原创 电商数仓(用户行为数据采集)
bin/bash case $1 in "start"){ for i in hadoop102 hadoop103 hadoop104 do echo ---------- zookeeper $i 启动 ------------ ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start" done };元数据层面:每个小文件都有一份元数据,其中包括文件路径,文件名,所有者,所属组,权限,创建时间等,这些信息都保存在Namenode内存中。
2023-10-05 12:31:27 498
原创 Spark优化
stage的task在运行的时候,可能要从一些Executor中去拉取shuffle map output文件,但是Executor可能已经由于内存溢出挂掉了,其关联的BlockManager也没有了,这就可能会报出shuffle output file cannot find,executor lost,task lost,out of memory等错误,此时,就可以考虑调节一下Executor的堆外内存,也就可以避免报错,与此同时,堆外内存调节的比较大的时候,对于性能来讲,也会带来一定的提升。
2023-10-05 12:26:38 740
原创 Spark内核
不同的管理模式下,这三部分占用的空间大小各不相同。这里还是有4个Tasks,数据类别还是分成3种类型,因为Hash算法会根据你的 Key 进行分类,在同一个进程中,无论是有多少过Task,都会把同样的Key放在同一个Buffer里,然后把Buffer中的数据写入以Core数量为单位的本地文件中,(一个Core只有一种类型的Key的数据),每1个Task所在的进程中,分别写入共同进程中的3份本地文件,这里有4个Mapper Tasks,所以总共输出是 2个Cores x 3个分类文件 = 6个本地小文件。
2023-10-05 12:25:32 39
原创 SparkStreaming
第1章SparkStreaming概述1.1Spark Streaming是什么Spark流使得构建可扩展的容错流应用程序变得更加容易。Spark Streaming用于流式数据的处理。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如HDFS,数据库等。和Spa
2023-10-05 12:23:12 74
原创 SparkSQL
但是,随着Spark的发展,对于野心勃勃的Spark团队来说,Shark对于Hive的太多依赖(如采用Hive的语法解析器、查询优化器等等),制约了Spark的One Stack Rule Them All的既定方针,制约了Spark各个组件的相互集成,所以提出了SparkSQL项目。如果原封不动地执行这个执行计划,最终的执行效率是不高的。强类型的Dataset和弱类型的DataFrame都提供了相关的聚合函数, 如 count(),countDistinct(),avg(),max(),min()。
2023-10-03 18:44:36 52
原创 SparkCore
第1章Spark概述1.1Spark是什么iSpark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。并且 Spark 目前已经成为 Apache 最活跃的开源项目, 有超过 1000 个活跃的贡献者。1.2Spark特点快速与 Hadoop 的 MapReduce 相比, Spark 基于内存的运算是 MapReduce 的 100 倍.基于硬盘的运算也要快 10 倍以上.Spark 实现了高效的 DAG 执行引擎, 可以通过基于内存来高效处理数据流
2023-10-03 18:41:33 89
原创 Azkaban
azkaban-exec-server-3.84.4.tar.gz和azkaban-web-server-3.84.4.tar.gz到/opt/module/azkaban目录下。7)新建/opt/module/azkaban/azkaban-web/plugin/alerter/phone-alerter文件夹,并在内部新建conf和lib两个目录。9)将代码打包,并将alerter.jar上传到/opt/module/azkaban/azkaban-web/lib文件夹,并重启web服务。
2023-10-03 16:08:20 119
原创 HBase
第1章 HBase简介1.1 HBase定义HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。1.2 HBase数据模型逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个multi-dimensional map。1.2.1 HBase逻辑结构1.2.2 HBase物理存储结构1.2.3 数据模型1)Name Space命名空间,类似于关系型数据库的
2023-10-03 16:02:40 55
原创 Kafka
第1章 Kafka概述1.1定义Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。1.2 消息队列1.2.1传统消息队列的应用场景使用消息队列的好处1)解耦允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。2)可恢复性系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。3)缓冲
2023-10-03 15:58:37 81
原创 Flume
第1章 Flume概述1.1Flume定义Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。1.2Flume基础架构Flume组成架构如下图所示。1.2.1 AgentAgent是一个JVM进程,它以事件的形式将数据从源头送至目的。Agent主要有3个部分组成,Source、Channel、Sink。1.2.2 SourceSource是负责接收数据到Flume Agent的组件
2023-10-03 15:57:20 53
原创 Hive基础
第1章 Hive基本概念1.1 什么是Hive1) hive简介Hive:由Facebook开源用于解决海量结构化日志的数据统计工具。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。2) Hive本质:将HQL转化成MapReduce程序(1)Hive处理的数据存储在HDFS(2)Hive分析数据底层的实现是MapReduce(3)执行程序运行在Yarn上1.2Hive的优缺点1.2.1 优点(1)操
2023-10-03 15:52:35 204
原创 Zookeeper
/创建临时节点 //String path = zkClient.create("/atguigu2", "shanguigu".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);} //参数解读 1节点路径 2节点的值 3版本号 zkClient.setData("/atguigu", "sgg".getBytes(), stat.getVersion());此次投票结果:服务器1为0票,服务器2为0票,服务器3为3票。
2023-10-03 14:48:11 24
原创 Hadoop(优化&新特性)
第1章 Hadoop数据压缩1.1 概述压缩概述压缩策略原则1.2 MR支持的压缩编码 压缩格式 hadoop自带? 算法 文件扩展名 是否可切分 换成压缩格式后,原来的程序是否需要修改 DEFLATE 是,直接使用 DEFLATE .deflate 否
2023-10-03 11:32:36 65
原创 Hadoop(MapReduce&Yarn)
第1章 MapReduce概述1.1 MapReduce定义MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。1.2MapReduce优缺点1.2.1 优点1)MapReduce易于编程它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说
2023-10-03 10:20:19 57
原创 Hadoop(HDFS)
dfs.namenode.checkpoint.txns</name> <value>1000000</value> <description>操作动作次数</description> </property> <property> <name>dfs.namenode.checkpoint.check.period60s 1分钟检查一次操作次数
2023-10-03 10:08:52 57
原创 Hadoop(入门)
<name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value>
2023-10-03 10:07:18 43
原创 大数据技术之Shell
bin/bash echo "$0 $1 $2" #大于10的参数应该写${} [atguigu@hadoop101 datas]$ chmod 777 parameter.sh [atguigu@hadoop101 datas]$ ./parameter.sh cls xz ./parameter.sh cls xz。
2023-10-03 09:08:02 29
原创 第16章 File类与IO流
File类是java.io包下代表与平台无关的文件和目录,也就是说如果希望在程序中操作文件和目录都可以通过File类来完成,File类能新建、删除、重命名文件和目录。在API中File的解释是文件和目录路径名的抽象表示形式,即File类是文件或目录的路径,而不是文件本身,因此File类不能直接访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。File类代表磁盘或网络中某个文件或目录的路径名称,如:/atguigu/javase/io/佟刚.jpg。
2023-10-03 09:06:07 40
原创 第十七章 设计模式
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的代码设计经验的总结。Scott Mayers 在其巨著《Effective C》就曾经说过:C老手和 C++新手的区别就是前者手背上有很多伤疤。即所谓的大神都是靠踩过很多坑,一路摸爬滚打成长起来的。即设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案,设计模式代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
2023-10-03 08:43:55 60
原创 JSE-15(网络编程)
/获取本机的域名和 TP 地址。若希望输出数据,例如向服务器端的 CGI (公共网关接口-Common Gateway Interface-的简称,是用户浏览器和服务器端的应用程序进行连接的接口)程序发送一些数据,则必须先与URL建立连接,然后才能对其进行读写,此时需要使用 URLConnection。Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。
2023-10-02 20:29:00 35 1
原创 第14章 Java反射机制
/2.获取系统类加载器的父类加载器,即扩展类加载器 classloader = classloader.getParent();//5.测试JDK提供的Object类由哪个类加载器加载 classloader = Class.forName("java.lang.Object").getClassLoader();注:在类中属性都设置为private的前提下,在使用set()和get()方法时,首先要使用Field类中的setAccessible(true)方法将需要操作的属性设置为可以被外部访问。
2023-10-02 20:28:13 26 1
原创 JSE-13(多线程)
public void run(){ synchronized (account) { if (account.getBalance() > withDraw) { System.out.println(Thread.currentThread().getName() ":取款成功,取现的金额为:" + withDraw);
2023-10-02 20:27:28 51 1
原创 第12章 IO流
try { //step1:创建缓冲流对象:它是过滤流,是对节点流的包装 br = new BufferedReader(new FileReader("d:\\IOTest\\source.txt"));= null) { //读取用户输入的一行数据 --> 阻塞程序 if (s.equalsIgnoreCase("e") || s.equalsIgnoreCase("exit")) { System.out.println("安全退出!
2023-10-02 20:26:41 35 1
原创 第11章集合与泛型
//static的方法中不能声明泛型 //public static void show(T t){ //} //不能在try-catch中使用泛型定义 //try{} //catch(T t){} }若使用自定义类作为TreeMap的key,所属类需要重写equals()和hashCode()方法,且equals()方法返回true时,compareTo()方法应返回0。l利用int compare(T o1,T o2)方法,比较o1和o2的大小:如果方法返回正整数,则表示o1大于o2;
2023-10-02 20:25:51 34 1
原创 第10章异 常
catch (Exception e) { System.out.println("捕获其他可能的所有异常:" + e);} } static void methodB() { try { System.out.println("进入方法B");} catch (MyException e) { System.out.print("登记失败,出错种类"+e.getId());
2023-10-02 20:23:43 42 1
原创 第9章使用基础API
System.out.println("String的执行时间:"+(endTime-startTime));//将指定的日期解析后格式化按指定的格式输出 System.out.println(date2.toString());Ø相应的valueOf(byte b)、valueOf(long l)、valueOf(float f)、valueOf(double d)、valueOf(boolean b)可由参数的相应类到字符串的转换。
2023-10-02 20:21:35 37 1
原创 第8章高级类特性
b.mb(333);} public class Outer{ publicstatic void main(String[] args) { newOuter().callInner(new A(){ //接口是不能new但此处比较特殊是子类对象实现接口,只不过没有为对象取名 public void fun1() { System.out.println(“implement for fun1");public void m2( ){ System.out.println("A类中定义的m2方法");
2023-10-02 20:20:21 27 1
原创 第7章 面向对象编程(下)
本章内容l第一节 类的继承l第二节 多 态l第三节 对象关联与Object类l第四节 static与final修饰符第一节 类的继承面向对象特征之二:继承示例—Employee类1 public class Employee { 2 String name = "张三"; 3 String address; 4 float salary; 5 6 public void receivesPay() { 7 System.out.println(" receivesP
2023-10-02 20:14:13 120 1
原创 第6章创建和使用数组
由于java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public,又因为java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static的,该方法接收一个String类型的数组参数,该数组中保存执行java命令时传递给所运行的类的参数。格式3(静态初始化):int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
2023-10-02 19:09:30 41 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人