自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

随我的博客

菜鸟的日常学习记录,CSDN更新不勤,主要更新个人博客https://suiwo.xyz,我会不定期的将个人博客的文章copy到CSDN中。

  • 博客(113)
  • 收藏
  • 关注

原创 Hive之分桶

对于每一个Hive表(包括分区表),Hive可以进一步对数据进行分桶,桶是更细粒度的数据范围划分。

2023-01-08 14:29:55 228

原创 HiveDML数据操作之查询

HiveDML是Hive中对表中数据的查询、插入、删除和修改的语言。

2023-01-08 14:29:49 164

原创 HiveDML数据操作之导入导出

使用HiveDML将数据进行导入导出。

2023-01-08 14:29:00 172

原创 HiveDDL数据操作

HiveDDL是Hive中负责数据结构定义与数据库对象定义的语言

2023-01-08 14:28:17 317

原创 Hive基础

Hive是为了解决海量结构化日志的数据统计框架,他是一个基于Hadoop的数据仓库工具,可以将结构化的数据映射为一张表,并提供类SQL的查询功能。本质就是将HQL转化成MR程序。

2023-01-08 14:25:27 117

原创 MR学习总结

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

2023-01-08 14:23:04 104

原创 Flume自定义Sink

Sink 是完全事务性的。在从Channel 批量删除数据之前,每个Sink用Channel启动一 个事务。批量事件一旦成功写出到存储系统或下一个Flume Agent,Sink就利用 Channel提交事务。事务一旦被提交,该Channel从自己的内部缓冲区删除事件。Sink 组件目的地包括hdfs、logger、avro、file、HBase、solr等。官方提供的 Sink 类型已经很多,但是有时候并不能满足实际开发当中的需求,此时我们就需要根据实际需求自定义某些Sink。

2023-01-08 14:21:25 196

原创 Flume自定义Source

Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种 格式的日志数据,包括 avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。官方提供的 source 类型已经很多,但是有时候并不能 满足实际开发当中的需求,此时我们就需要根据实际需求自定义某些 source。

2023-01-08 14:18:18 226 1

原创 Flume自定义Interceptor

在实际的开发中,一台服务器产生的日志类型可能有很多种,不同类型的日志可能需要 发送到不同的分析系统。此时会用到Flume拓扑结构中的Multiplexing结构,Multiplexing的原理是,根据event中Header的某个key的值,将不同的event发送到不同的Channel中,所以我们需要自定义一个 Interceptor,为不同类型的event的Header中的key赋予不同的值。

2023-01-08 14:16:57 128

原创 Flume初识

本文是尚硅谷Flume课程随手笔记,记录课程的一些实战的操作步骤一、安装Flume并实现一个简易端口监控实现监控端口案例,通过Flume来监听端口数据,并将数据打印到控制台1. 首先进入官网下载Flume源码包2. 修改flume-env.sh文件export JAVA_HOME=/opt/module/jdk1.8.0_1443. 添加配置文件创建Flume Agent配置文件flume-netcat-logger.conf# Name the components on.

2020-05-26 14:29:15 230

原创 Hive初识

一、 安装Hive并启动1. 下载源码包解压源码包后,配置hive-env.sh(a)配置 HADOOP_HOME 路径export HADOOP_HOME=${Hadoop的路径}(b)配置 HIVE_CONF_DIR 路径export HIVE_CONF_DIR=${Hive配置文件路径}2. 启动hadoop3. 启动Hive客户端调用bin/hive进入Hive的客户端启动Hive后会发现Hive源码包中多了derby.log和metastore_db这个就是Hive

2020-05-26 14:28:27 208

原创 YARN集群搭建

本文主要是记录集群搭建流程,具体细节较为简略一、YARN简介Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。二、集群规划主机名作用hadoop11NameNode & DataNode & NodeManager.

2020-05-24 22:45:02 318

原创 HDFS高可用集群搭建

环境CentOS 7JAVA 1.8Zookeeper 2.9.2Hadoop 3.4.14一、简单HDFS集群中存在的问题及解决办法如何解决NameNode的单节点问题多个NameNode备份原NameNode数据如何解决多个NameNode是集群脑裂问题使用QJM,QJM(Quorum Journal Manager)是Hadoop专门为Namenode共享存储开发的组件。其集群运行一组Journal Node,每个Journal 节点暴露一个简单的RPC接口,允许N.

2020-05-24 22:44:11 677

原创 汉诺塔问题总结

一、基本递归实现下面是普遍的汉诺塔问题的递归解法代码public class Hanoi{ public static void hanoi(int n, String x, String y, String z){ if (n == 1){ System.out.println(x + " -> " + z); }else { hanoi(n - 1, x, z, y); System

2020-05-24 22:38:57 1299

原创 HBase中使用过滤器筛选数据

一、过滤器能干什么HBase为筛选数据提供了一组过滤器,通过过滤器可以在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作。通常来说,通过行键、列来筛选数据的应用场景较多。二、常见的过滤器基于行的过滤器PrefixFilter: 行的前缀匹配PageFilter: 基于行的分页基于列的过滤器ColumnPrefixFilter: 列前缀匹配FirstKeyOnlyFilter: 只返回每一行的第一列基于单元值的过滤器KeyOnlyFilt

2020-05-24 22:36:53 1637

原创 使用Java操作HBase数据库

一、添加依赖首先我们在maven项目中添加下面两个依赖<!-- hbase依赖 --><dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>1.4.10</version></dependency><!-- 单元测试依赖 --

2020-05-24 22:36:05 721

原创 HBase伪分布式集群安装

一、下载HBase安装包为了防止HBase和Hadoop版本间冲突,可以在CDH上下载和Hadoop兼容的HBase版本,本次搭建选择的是hbase-1.2.0下载路径:http://archive.cloudera.com/cdh5/二、配置伪分布式环境HBase相关配置文件在/conf文件之下,我们需要修改的配置文件有hbase-env.sh和hbase-site.xml我们先将hadoop中的hdfs-site.xml和core-site.xml文件复制HBase的/conf目录之

2020-05-24 22:34:42 559 1

原创 hadoop伪分布式集群安装

一、下载hadoop安装包hadoop安装包分为apache官方以及CDH,具体区别在此不做介绍,本次搭建选择的是hadoop-2.6.0-cdh5.7.0版本下载路径http://archive.cloudera.com/cdh5/二、配置hadoophadoop相关配置文件在/etc目录下我们需要修改的文件有core-site.xml,hadoop-env.sh,hdfs-site.xml对hadoop-env.sh文件中的JAVA_HOME进行一下配置在hdfs-site.x

2020-05-24 22:33:49 166

原创 使用iTerm2和OhMyZsh实现一个强大终端

参考文章:https://blog.csdn.net/qianghaohao/article/details/79440961https://www.jianshu.com/p/9c3439cc3bdbhttps://www.jianshu.com/p/d194d29e488c?open_source=weibo_searchhttps://www.jianshu.com/p/a78845c3f476首先我们看一下最终效果一、下载iTerm2官网下载地址:https://www.iterm

2020-05-24 22:32:43 1179

原创 Kafka初试

二、安装Kafka安装Java安装Zookeeper启动命令: zkServer.sh start停止命令: zkServer.sh stop安装Kafka启动命令: kafka-server-start.sh config/server.properties启动命令: kafka-server-stop.sh config/server.properties三、代码实践添加Maven依赖<dependency> <groupId>org

2020-05-24 22:30:19 133

原创 创建一个基于redis的id生成器

参考文章:https://blog.csdn.net/hengyunabc/article/details/44244951https://www.jianshu.com/p/955909e1bd71https://tech.meituan.com/2017/04/21/mt-leaf.html参考项目:https://github.com/hengyunabc/redis-id-generator值。evalsha教程:https://www.runoob.com/redis/scripti

2020-05-24 22:28:36 1556

原创 手写SpringMVC,剑指优秀开源框架灵魂

由于Spring官方就是选择gradle作为自动化构建工具,所以我们在本次尝试中就按照spring的选择也是用gradle在整个项目中,我们一共包含两个模块framework模块用于首先实现我们springmvc的常见功能,test模块则是用来测试我们手写的模块是否正确项目链接:https://github.com/ZhangJia97/Mini-Spring下面是项目结构,只保留了我们用到的文件结构├── build.gradle├── framework│ ├── build.grad

2020-05-24 22:27:19 140

原创 Springboot集成mapstruct

一、什么是mapstructMapStruct是一个代码生成器的工具类,简化了不同的Java Bean之间映射的处理,所以映射指的就是从一个实体变化成一个实体。在实际项目中,我们经常会将PO转DTO、DTO转PO等一些实体间的转换。在转换时大部分属性都是相同的,只有少部分的不同,这时我们可以通过mapStruct的一些注解来匹配不同属性,可以让不同实体之间的转换变的简单。MapStruct官网...

2019-10-07 22:28:44 8847

原创 aop链式调用

多个aop如果叠加采用了责任链的模式使用ConcerteHandler实现类实现HandleProcess接口同时这个实现类又组合了这个接口,通过successor判断来进行链式调用首先我们新建一个Handlerpublic abstract class Handler { private Handler successor; public Handler get...

2019-10-07 22:26:53 273

原创 cglib动态代理

首先我们看一下如何实现cglib的动态代理cglib通过实现MethodInterceptor接口来实现动态代理public class DemoMethodInterceptor implements MethodInterceptor { @Override public Object intercept(Object o, Method method, Object[...

2019-10-07 22:25:56 129

原创 JDK动态代理解析

首先我们生成的时候调用了Proxy.newInstance()这个方法,这个方法会调用getProxyCLass0()方法,而getProxyCLass0()是从ProxyClassFactory中生成proxy代码,而ProxyClassFactory又是使用ProxyGenerator来生成的代码,然后生成的字节码,使用反射来new一个实例。整个调用大致就是 newInstance() -...

2019-10-07 22:24:54 120

原创 静态代理与动态代理

静态代理静态代理存在一些缺点,如每当要代理的方法越多,那你需要代理的方法也越多,这样可能会有很多的重复下面我们先实现以下静态代理的例子先创建一个接口public interface Subject { void request();}创建一个实现类public class RealSubject implements Subject { @Override ...

2019-10-07 22:24:12 123

原创 Stream流编程

外部迭代与内部迭代public class StreamDemo { public static void main(String[] args) { int[] nums = {1, 2, 3}; int res1 = 0; for(int i = 0; i < nums.length; i++){ res...

2019-10-07 22:23:31 209

原创 lambda表达式

什么是lambda表达式“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。下面是我们常见的命令式编程public class LambdaDemo {...

2019-10-07 22:21:48 120

原创 消费端限流、重回队列、TTL以及死信队列

什么是消费端的限流?假设一个场景,首先,我们Rabbitmq服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况:巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据!RabbitMQ提供了一种qos (服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息(通过基于consume或者channel设置Qos的值)未被确认前,不进行消费新的消...

2019-10-07 22:20:38 156

原创 RabbitMQ生产端可靠性投递

对于消息的生产端的可靠投递,我们常见的解决方案有两种1.消息落库,对消息状态进行打标2.消息的延迟投递,做二次确认,回调检查1、消息落库,对消息状态进行打标上面图片为消息落库,对消息状态进行打标的常见步骤(状态0表示已发送,1表示已消费,2表示失败)首先将将要发送的数据持久化到BIZ数据库中,并且创建一个存储着消息状态的数据持久化到MSG数据库中。将数据发送至MQ。消费者接收...

2019-10-07 22:19:49 259

原创 如何保证消息消费的幂等性

幂等性概念及业界主流解决方案幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品使用约支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条...业界主流的幂等性操作:唯一ID + 指纹...

2019-10-07 22:17:24 301

原创 手写Spring框架

项目结构├── pom.xml├── spring-demo.iml├── src └── main ├── java │ └── xyz │ └── suiwo │ ├── action │ │ ├── controller │ ...

2019-08-13 11:41:57 395

原创 Springboot集成POI

本文比较简单。。。希望想真正使用的同学。。去看别人整理的吧。。。我怕这次整理比较乱。。影响大家阅读什么是POIApache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。添加依赖<dependency> <groupId>org.apache.poi</grou...

2019-08-13 11:41:03 8415

原创 Java遍历一个类的所有属性和值

今天在尝试使用Java反射来实现Java导出数据库数据到Excel中,然后在尝试获取类所有的属性的时候,由于对于反射的不熟练,然后找到了一篇博文,所以在此进行记录,以供未来参考,原博文地址:https://blog.csdn.net/ztx114/article/details/78274314private void bianLi(Object obj){ Field[] fiel...

2019-08-13 11:40:16 15798

原创 RabbitMQ事务以及confirm机制

本文是参考下面这篇博客然后进行复现浓缩后的总结https://www.cnblogs.com/vipstone/p/9350075.html正常情况下,如果消息经过交换器进入队列就可以完成消息的持久化,但如果消息在没有到达broker之前出现意外,那就造成消息丢失,有没有办法可以解决这个问题?RabbitMQ有两种方式来解决这个问题:通过AMQP提供的事务机制实现;使用发送者确认模式...

2019-08-13 11:39:43 645

原创 Redis与LRU

参考文章https://zhuanlan.zhihu.com/p/34133067https://blog.csdn.net/azurelaker/article/details/85045245https://www.bilibili.com/video/av45625512最近在使用redis,然后看到了redis与LRU相关的一些内容,再此对之前所看的一些博文进行总结一、什么是...

2019-08-13 11:38:59 6630

原创 Springboot集成RabbitMQ

一、什么是RabbitMQRabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。二、添加依赖<dependency> <groupId>org.springframework....

2019-08-13 11:38:03 140

原创 springboot集成Log4j2

前言:关于Log4j2,SLF4J,LogBack以及其他的一些日志框架的区别,建议大家可以先了解一下一、添加依赖<!--SpringBoot默认日志框架为LogBack所以我们需要将LogBack依赖移除--><dependency> <groupId>org.springframework.boot</groupId> &l...

2019-08-13 11:37:08 484

原创 springboot集成Redis

由于之前在项目中集成了身份验证以及权限功能,所以在请求操作时会有大量数据库读操作来获取用户的角色以及所拥有的权限,这对于数据库来说是一个巨大的性能开支,所以我打算尝试使用redis来减少数据库读写,而是使用缓存读写,本文是在看完集成Redis入门后所做的总结,所以对很多地方还有疑问,请大家酌情参考一、添加Redis依赖<dependency> <groupId>...

2019-08-13 11:36:07 1650

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除