自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

unlock的博客

个人的学习经历及见解

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

原创 Zookeeper源码分析专题[3]-服务端快速选举算法及图解

Zookeeper源码分析专题[3]-服务端快速选举算法及图解  分布式环境下的zk最开始是无主架构,在启动阶段会通过快速选主算法选出主节点,选举结束后,会出现Leader、Follower和Observer三种角色的节点,只有Leader、Follower有投票选主的权利,后续所有的事务性操作只能转发给Leader节点统一管理和执行  在分布式系统动,任何节点都有可能出现问题,如果此时集群的Leader挂了,Zk会选出一个新主接管集群,使用的算法是快速选举算法,快速选举算法是Paxos算法的简化版,有

2022-03-29 22:50:49 450

原创 窗口问题[1]-最小栈

窗口问题[1]-最小栈  实现一个最小栈,这个栈有一个getMin方法,能在O(1)的时间复杂度内返回栈中最小的元素代码及实现思路如下?public class MinStack { /** * 思路 * * 使用两个栈 * * 一个栈存放的是正常的压栈元素 * 另一个压的是包括当前元素在内栈中最小的位置 * * 如果 压入的元素大于最小栈的栈顶 * 说明这个元素大,则将最小栈栈顶元素再次压入

2022-03-20 14:33:28 216

原创 Spark学习笔记[3]-Spark安装部署

Spark学习笔记[3]-Spark安装部署1、下载对应版本的spark  官网我始终都下不下来,推荐一个国内的镜像: https://mirrors.tuna.tsinghua.edu.cn/apache/spark 2、概述2-1 安装模式  虽然Spark是一个分布式计算框架,但是其不属于Hadoop Project,它有自己的资源层管理和文件系统,可以不依赖Hadoop的HDFS和Yarn,所以安装部署的时候可以只安装spark,对应的就是standalone集群, 但是一般都会使用HDF

2022-03-11 22:12:20 3442

原创 复杂算法介绍[4]-Manacher算法实现

复杂算法介绍[4]-Manacher算法实现  直接上代码:public class Manacher { /** * 字符串的最长回文子串 * * 回文串就是字符串关于中间镜面对称 * * 假设字符串是 * fabccba * * 最长回文串就是abccba * * * */ /** * * 暴力解 * *

2022-02-28 20:07:54 135

原创 复杂算法介绍[3]-Manacher算法

复杂算法介绍[3]-Manacher算法  Manacher算法,江湖人称马拉车算法,用来解决最长会问串问题,举个例子:假设字符串是 fabccba 最长回文串就是abccba  如何快速求出这个最长的回文串1、暴力尝试  寻找以每个字符为中心的最长回文子串,但是回文子串有奇数和偶数的区分,例如回文串abccba的中轴线是在两个c中间,并不是独立的字符,为了统一奇数偶数的情况,需要对字符串进行补长变成:#f#a#b#c#c#b#a#,也就是每个字符串前面都补了一个#,字符串最后也补一个

2022-02-28 20:07:27 163

转载 CompletableFuture 详解(二):supplyAsync / runAsync 实现原理 源码分析(转载)

前面CompletableFuture详解(一):基本概念及用法中讲了CompletableFuture的使用,从这篇开始,我会逐步讲解CompletableFuture的实现,以便于大家更深入的理解CompletableFuture是如何运行的,从而有利于大家正确且灵活地使用CompletableFuture。 本篇主要介绍 supplyAsync和runAsync的实现。 1、supplyAsync的实现 ...

2022-02-26 10:31:33 3625

原创 Spark学习笔记[2]-Spark基本介绍与编程模型

Spark学习笔记[2]-Spark基本介绍与编程模型  现在大数据领域两个用的比较多的计算框架应该是Spark和Flink,两个计算框架都想做批流整合,一统天下,但是现在比较多的还是使用Spark做批数据处理,使用Flink做流数据处理  本文会对Spark做简单的介绍,着重介绍其编程模型,后续会有专门的Spark源码分析专题1、从MapReduce说起  Spark在大流程上可以看成是对MapReduce的增强,用过MapReduce的人都知道,MapReduce是真的慢啊,MapReduce的

2022-02-21 22:12:29 1016

原创 复杂算法介绍[2]-KMP算法代码实现

复杂算法介绍[2]-KMP算法代码实现  直接上代码:public class Kmp { /** * 算是比较难的算法之1,看了很多遍,经常忘记 * * 1、给定一个字符串,求某个位置字符之前字符串最长前缀和后缀匹配长度 * abcabck * * 在k位置,就是从长度是1开始遍历 * l = 1,前缀是a,后缀是c * l = 2,前缀是ab,后缀是bc *

2022-02-17 22:26:05 236

原创 复杂算法介绍[1]-KMP算法

复杂算法介绍[1]-KMP算法  KMP算法解决的问题就是字符串模式匹配问题,假设有两个字符串,一个是text,一个是pat,要寻找pat在text中第一次出现的位置,怎么做?1、朴素的思想  首先想到的肯定是暴力搜索,从text的第一个字符开始截取每一个和pat相同长度的子串进行匹配,如下图:  循环比较过程中,如果截取的子串中的任意一个字符和pat对应位置不等,则可以直接跳过该子串和pat剩余位置的比较  上面的解法是暴力解,时间复杂度O(MN),M和N分别是text和pat的长度,更优的

2022-02-17 22:25:32 600

原创 Hadoop学习笔记[8]-MapReduce样例程序

Hadoop学习笔记[8]-MapReduce样例程序  写几个MR的小程序吧1、WordCount  传说中分布式计算领域的Hello Word,就是单词计数,北京和题干就不介绍了2、分组取Top N要求如下有如下的数据集:2019-06-01 00:00:00#322019-05-21 00:00:00#332019-06-01 12:00:00#332019-06-02 00:00:00#312018-03-11 00:00:00#182018-04-23 00:00:00#2

2022-02-15 23:06:11 381

转载 CompletableFuture 详解(一):基本概念及用法(转载)

目录 1、为什么叫CompletableFuture? 2、创建CompletableFuture 2.1 构造函数创建 2.2 supplyAsync创建 2.3 runAsync创建 3、常见的使用方式 3.1 thenApply / thenAccept / thenRun 3.2 thenCombine 3.3 thenCompose 3.4 whenComplete 3.5 hand...

2022-02-13 10:15:52 2490

原创 Hadoop学习笔记[7]-MapReduce运行源码分析

Hadoop学习笔记[7]-MapReduce运行源码分析  分布式计算框架的过人之处在于可以让我们像写单机程序一样写分布式计算程序,只需要关注业务逻辑即可,剩下的事情,框架会帮我们做,前面文章也说了,虽然MR是个感觉有点“过时”的产品,但是其思想和结构相对简单,很容易理解,且是个划时代的产品,所以我们没理由看不起它  本文将介绍MR运行流程中的核心源码,因为对资源管理这部分不熟,so,跳过yarn????1、MR客户端提交源码分析  客户端最重要的工作就是根据需要处理的文件名称,从HDFS获取文件

2022-02-12 09:56:24 471

原创 Hadoop学习笔记[6]-MapReduce与Yarn安装部署流程

Hadoop学习笔记[6]-MapReduce与Yarn安装部署流程  前面的文章已经对MR和Yarn做了基本介绍,本文主要介绍MR和Yarn的安装部署流程1、角色划分  NodeManager和DataNode一般都是1:1,主要是为了计算向数据移动,如果NM和DN分开,就得用网路拷贝数据,在Yarn的体系里NM也是从节点,既然其和DN是1:1的关系,所以配置中和HDFS共用一个slaves文件NNJNDNZKFCZKRMNMhdp001****

2022-02-11 09:11:38 426

原创 Zookeeper源码分析笔记[2]-服务端源码分析

Zookeeper源码分析笔记[2]-服务端源码分析

2022-02-09 21:02:27 314

原创 Hadoop学习笔记[5]-Yarn介绍

Hadoop学习笔记[5]-Yarn介绍  分布式计算简单的说就是要将计算任务分发给不同的计算节点,这其中很自然的就会遇到两个问题:资源管理任务调度  资源管理负责监控计算节点的负载情况,任务调度负责派发具体的任务到计算节点,本文说的Yarn主要就是用于资源管理1、Yarn之前  Hadoop在2.X之后进行了比较大规模的重构,比较大的一块就是集群新增了Yarn这个角色,在Hadoop1.X的时候,负责集群资源管理和任务调度的角色叫JobTracker和TaskTracker,只能支持MR,

2022-02-08 12:10:06 356

原创 Hadoop学习笔记[4]-MapReduce介绍

Hadoop学习笔记[4]-MapReduce介绍  之前就说过的大数据三篇奠基性论文中的第二篇就是MapReduce,MR是分布式计算框架,它的牛X之处在于可以使用普通的计算机进行大规模计算,虽然现在MR使用的越来越少,但是其思想比较简单,对于理解分布式计算非常有帮助  MR在计算的时候后和它的名字一样,主要分为两个阶段,Map阶段和Reduce阶段,Map阶段的处理函数成为Map方法,Reduce阶段称为Reduce方法,其中Map阶段是一定要有的,Reduce阶段可有可无,使用MR从HDFS读取数

2022-02-07 14:29:58 192

原创 Spark学习笔记[1]-scala环境安装与基本语法

Spark学习笔记[1]-scala环境安装与基本语法  正所谓工欲善其事必先利其器,Spark的开发语言不是java而是scala,虽然都是运行于JVM,但是两门语言的基本特性还是有些不一样,这里说明一个概念,JVM不等于JAVA,任何语言只要能编译出符合JVM规范的class文件,都可以运行在JVM上  相比于java,scala语言更加简简洁,且其实函数式编程语言,函数式变成语言的含义就是任何函数都是变量,有点类似于C++中的函数指针,由于语法很简洁,所以带来的问题就是相比于Java,用scala

2022-02-06 14:21:36 1172

原创 Hadoop学习笔记[3]-HDFS权限验证与客户端开发

Hadoop学习笔记[3]-HDFS权限验证与客户端开发  hdfs自身没有用户体系,需要依靠第三方提供。例如LDAP,kerberos,linux系统用户等,但是HDFS和linux一样有超级管理员的概念,linux的超级管理员是root,HDFS的超级管理员是启动NN的用户,比如用hdp01用户启动hdfs,则hdfs的超级用户就是hdp01  虽然HDFS没有用户的概念,但是有自身的权限体系,权限命令和linux差不多,可以赋权给用户或者用户组对应的权限1、权限相关命令实战1-1 熟悉几个命令

2022-02-05 11:39:15 1634

原创 经典排序算法[4]-最小和问题

经典排序算法[4]-最小和问题  这个标题写的有点问题,只是想说明最小和问题可以用排序算法解出,题目定义如下: /** * * 假设有一个数组,数组中每个数据左侧比该数据小的数据的和为最小和,求该数组所有数据最小和的和 * * 假设有[1,2,4,3,5] * 1的最小为0 * 2为 1 * 4为 2+1 = 3 * 3为 1+2=3 * 5为 1+2+4+3 = 10 * 结果为0+1+3+3+

2022-02-04 10:34:02 804 1

原创 经典排序算法[3]-归并排序

经典排序算法[3]-归并排序  将归并排序之前,先解决一个问题,如何合并两个有序数组?arr1 = [1,3,4,6]arr2 = [2,3,7,9,10]  基本思路如下:维护两个索引index1和index2分别代表arr1和arr2的某个位置的元素,初始值都是0,构造一个长度为两个数组长度之和的结果数组res[],res待写位置i初始为0,算法伪代码流程:如果 arr1[index1]<=arr2[index2] 则 拷贝arr1[index1]的元素到结构数组的res

2022-02-04 10:33:29 916

原创 Hadoop学习笔记[2]-HDFS安装部署流程

Hadoop学习笔记[2]-HDFS安装部署流程1、必备软件  1-1 java(最好是1.8及其以上,but1.8以上只有open jdk了)  1-2 ssh软件,免密登录需要具体怎么配置网络上搜吧   直接在官网上搜就行了【https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html 这里就有】,主要就是生成公钥和私钥,并将公钥分发给要免密登录的服务器,登录时,会拿着自己的私

2022-02-03 11:02:48 2641

原创 Hadoop学习笔记[1]-HDFS基本知识和读写原理

Hadoop学习笔记[1]-HDFS基本知识和读写原理  大数据领域的技术基石主要来源于谷歌的三篇论文GFS、MapReduce和BigTable,分别是文件系统、计算框架和数据库,本文所说的HDFS对应其中的GFS,先抛出一个小问题,在HDFS出现之前,市面上就已经存在各种各样的分布式文件系统,那么为什么Hadoop之父还要搞一个HDFS?1、HDFS基本架构1-1 存储模型1)、文件线性按照字节切割成块,具有offset和块ID【数据被切割在不同的块的时候怎么办?】2)、不同文件之间的块大小

2022-02-03 11:01:48 802 1

原创 经典排序算法[2]-堆排

堆结构与堆排序详解

2022-02-02 14:11:45 179

原创 经典排序算法[1]-快排

一文详解快排思想

2022-02-01 15:00:11 408

原创 Zookeeper源码分析笔记[1]-客户端源码分析

zk客户端源码分析

2022-02-01 14:55:41 1830

原创 Netty源码分析专题[2]-消息队列MpscQueue分析

Netty源码分析专题[2]-消息队列MpscQueue分析  在看Netty源码的时候看到了这个队列,之前都没见过,所以特地写个笔记记录一下  MpscQueue的Mpsc的全称是Multi producer single consumer【多生成者单消费者】,我们先把单消费者单生成者的情况分析清楚,在多生产者的情况下,多了一步抢位置的动作,就是如果多个线程同时要往队列添加数据,需要先抢占一下最后一个位置,这就涉及多线程同步,可以加锁,但是更多的是CAS操作,线程同步问题就不在这介绍了1、前序  

2022-01-30 22:14:01 910 4

原创 Netty源码分析专题[1]-服务端启动流程

Netty源码分析专题[1]-服务端启动流程  Netty是一个高性能底层网络传输层技术,深入研究其底层实现原理不仅可以领略其优秀的架构思想,还能为用好这个技术打下坚实的基础,正所谓知其然知其所以然,本文使用的netty版本是4.1.52,其中池化内存部分的源码的变动很大,这个版本的代码在内存回收到缓存的时候有个bug,当然新版本已经修复,具体的可以看池化内存源码分析相关的内容。  从本文开始,会有一系列的Netty源码分析相关的分析1、从Java NIO模型说起  Java NIO类库好像是JDK

2022-01-30 21:53:33 1127 1

原创 Hive支持多分隔符与GBK字符集

近期在做将数据从SFTP拷贝的Hive,SFTP中的文件存储的是从关系型数据库抽出来的数据,字段之间用0x7C0x1C两个字符分割,采用GBK字符集,这些都是公司规定的,不可能改动,字符集问题可以通过指定序列化编码方式适配,但是也有问题,下文会介绍,但是分隔符的问题无法通过指定建表参数解决,因为Hive默认只支持一个分隔符,既然不能通过HIVE命令解决多分隔符问题,那只能通过代码解决,从头开始过一...

2019-01-04 14:58:08 3735

原创 win7下借助kettle7.0在命令行界面将数据库数据传输到hive与HBASE

接上一篇win7传输数据至hdfshive是基于hadoop的数据仓库,具体hive相关的内容可以查看这篇文档,使用kettle将关系型数据库导入hive或者从hive导出数据的方式有以下几种:1、使用kettle的sqoop组件 玩过hive的人都知道,在hadoop生态圈,sqoop的作用就是将关系型数据库的数据导入到hdfs(或者将hdfs的数据导入到关系型数据库),之后使用...

2019-01-04 14:51:46 354

原创 win7下借助kettle7.0在命令行界面将数据传输到hdfs

 为什么写这系列博客的原因就是真的遇到的坑太多了,所以需要写下来,防止以后忘记,话不多说吗,直接进入主题一、环境kettle7.0,kettle是开源的etl工具(kettle7.0需要java8),其优势在于可以使用图形化界面开发,开发完成后可以部署在linux或者windows平台 window7.0 大数据平台采用的是CDH,其余版本的haoop应该也是类似的二、修改配置文件...

2019-01-04 14:21:54 759 1

空空如也

空空如也

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

TA关注的人

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