- 博客(197)
- 资源 (9)
- 收藏
- 关注
原创 HDFS核心源码解析(三)——DataNode的心跳机制
DataNode在启动之后会周期性地向NameNode发送心跳,那么内部是如何实现的呢?
2021-09-01 17:44:23 1738 2
原创 HDFS核心源码解析(二)——DataNode的启动及注册流程
本文介绍DataNode启动流程,主要包括1. 创建一个DataNode对象2. 启动DataNode执行DataNode的初始化3. 初始化DataStorage4. 初始化DataXceiverServer5. 启动HttpServer服务并注册sevlet6. 初始化RPC7. 创建一个BlockPoolManager,遍历BPOfferService中的BPServiceActor对象的start方法,实际向集群里面的每个NameNode进行注册和心跳8. 获取NameNode代理
2021-08-31 16:06:18 856
原创 HDFS核心源码解析(一)——NameNode的启动流程
本文通过源码的方式详解了NameNode的启动流程1. 通过createNameNode 创建new NameNode对象2. NameNode在创建后立刻执行initialize方法3. 创建并启动HttpServer4. 加载元数据FSNamesystem5. 创建并启动NameNodeRpcServer对象6. 公共服务的检查,磁盘空间、安全模式7. 最后提供了一张大图,对NameNode启动流程做了总结
2021-08-29 15:51:38 1098
原创 Hive个人笔记总结
Hive是一个数据仓库软件Hive主要使用HQL(类sql)来分析已经存储在分布式设备(HDFS)上的数据Hive的本质是将用户编写的HQL,转换为MR/spark程序,对数据进行分析Hive分析的数据必须是结构化的数据,在分析之前,用户需要对数据创建表结构Hive的表结构(shema)存储在关系型数据库中,数据是存储在HDFS上,二者通过表进行映射Hive基于OLAP设计,基于OLAP设计的软件,一般重分析,延时高!
2020-12-15 20:02:09 962
转载 ZooKeeper学习笔记【转】
Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的 Apache 项目。Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。
2020-09-25 11:32:44 536
原创 shell批量复制脚本(rsync)【直接复制拿走】
这篇文章主要介绍了批量复制scp、rsync及执行命令shell脚本,在大数据多机器部署或者日常的运维操作,能减少我们很大的工作量,提升效率
2020-09-17 12:00:35 1776
原创 Maven搭建SpringCloud项目(eureka、gateway、路由转发)【无敌详细图文】
本文将向读者介绍如果使用Maven搭建SpringCloud项目,基于父子模块结构,搭建eureka注册中心模块/业务模块/路由网关gateway模块,图文并茂超级详细哦,傻瓜式教学,还看不懂劝退!!!一 、下载最基本的spring cloud项目1.1 进入spring官网下载项目:https://start.spring.io/选择项,如图所示,最后添加一个Eureka Server依赖,最后点击GENERATE按钮,下载到本地并解压1.2 打开IDEA, 点击open按..
2020-06-15 21:01:20 4159
原创 JAVA获取当前日期或指定日期的前N天的日期集合
因为最近的业务系统需求,前端有两个时间选择框,分别为startTime和endTime,用户展示一段时间内的折线图,但是如果用户选择的时间段太长,折线图时间轴太密集,展示效果十分不佳,于是我使用java代码书写了一个时间工具类,可以返回当前日期或指定日期的前N天的日期集合,如果传入的开始时间和结束时间间隔太大,还可以自动适应时间。废话不多说,直接上代码。
2020-03-20 14:53:00 2276
原创 MySQL计数器、每日计数器表设计与调优
计数器如果应用在表中保存计数器,则在更新计数器时可能碰到并发问题。计数器表在Web应用中很常见。可以用这种表缓存一个用户的朋友数、文件下载次数等。创建一张独立的表存储计数器通常是个好主意,这样可使计数器表小且快。使用独立的表可以帮助避免查询缓存失效,并且可以使用本节展示的一些更高级的技巧。应该让事情变得尽可能简单,假设有一个计数器表,只有行数据,记录网站的点击次数:CREATE TAB...
2019-11-10 21:52:37 1282
原创 MySQL数据类型与优化
关于数据类型的优化1、假如只需要存0~255之间的数,无负数,应使用tinyint unsigned(保证最小数据类型)2、如果长度不可定,如varchar,应该选择一个你认为不会超过范围的最小类型比如: varchar(20),可以存20个中文、英文、符号,不要无脑使用varchar(150)3、整形比字符操作代价更低。比如应该使用MySQL内建的类型(date/time/dateti...
2019-11-07 22:07:01 1141
原创 git从gitlab拉取最新的代码到本地
1、Git下载地址https://www.git-scm.com/download/win2、安装Git(安装步骤参考https://www.cnblogs.com/xwgcxk/p/9209237.html)3、从管理员手中拿到用户名、邮箱、密码假设用户名为: itcats_cn邮箱为itcats_cn@itcats.cn密码为123456784、初始化git信息(...
2019-09-17 19:27:05 119511 7
原创 版本控制工具Git详解
一、Git和SVN的区别?这是一个学Git无法绕开的话题,也是面试的常见题,我猜很多人的回答都是百度上直接背的,有了解过SVN底层的实现原理吗?SVN是一种集中式版本控制工具,SVN架构如图:A、B、C三个开发者如果需要提交自己的代码到远程仓库,必须联网(上传),上传之后SVN仓库内部做了什么?假设用户A提交代码,会将用户A改动过的A.java提交给SVN仓库,仓库中记录的...
2019-08-07 22:28:00 1584 2
原创 ElasticSearch基于version进行乐观锁并发控制实战解析
一、ES解决并发问题的实质ES在多线程异步修改数据时,是根据_version(版本号)来进行乐观锁控制的。1.1 了解_version是什么1、在第一次创建document的时候,该document的_version版本号为1,每次对document进行修改、删除操作,document的_version版本号加1PUT /test_index/test_type/6{...
2019-08-06 11:14:46 1657
转载 Java8新特性 利用流和Lambda表达式对List集合进行处理
最近在做项目的过程中经常会接触到 lambda 表达式,随后发现它基本上可以替代所有 for 循环,包括增强for循环。也就是我认为,绝大部分的for循环都可以用 lambda 表达式改写。lambda表达式有它自己的优点:(1)简洁,(2)易并行计算。尤其适用于遍历结果,循环计算数值或者赋值的时候非常方便。缺点: (1)若不用并行计算,很多时候计算速度没有比传统的 for 循环快。 ...
2019-07-11 17:16:49 1442
原创 Java数组/List集合 转 JSON 字符串
1. 导入fastjson依赖2.转换代码public class Test{ public static void main(String[] args) { /* 需求: 将product数组(List) 转成 JSON 字符串 业务场景: 数据库查出的数据,经过数据分类处理后得到List/Arr,需要到前端Ec...
2019-07-09 16:31:04 3402
原创 cellspacing和cellpadding区别
cellspacing和cellspadding区别属性 含义 常用属性值 cellspacing 设置单元格与单元格边框之间的空白间距 像素值(默认为2px) cellspadding 设置单元格内容与单元格边框之间的空白距离 像素值(默认为1px) 不使用任何的cellspacing和cellspdding修饰:<table bo...
2019-07-08 22:13:42 8909 1
原创 Spring Security入门【基于配置文件和数据库】
一、引言安全包括两个主要操作。“认证”,是为用户建立一个他所声明的主体。主题一般指用户,设备或可以在系统中执行动作的其他系统。简单来说,校验账号密码是否正确,就是"认证"的过程。“授权”,指的是一个用户能否在你的应用中执行某个操作,在到达授权判断之前,身份的主题已经由身份验证过程建立了。简单来说,就是用户是否有权利执行某项操作,而这个授权的过程一般已在数据库约定好了。对于安全框架,一般...
2019-07-07 18:14:46 1164
原创 Spark Core入门2【RDD的实质与RDD编程API】
一、对RDD操作的本质RDD的本质是一个函数,而RDD的变换不过是函数的嵌套.RDD有两类:输入的RDD: 典型如KafkaRDD、JDBCRDD 转换的RDD: 如MapPartitionsRDDRDD的处理流程:以如下代码为例:sc.textFile("abc.log").map().saveAsTextFile("")1. textFile 会构建出一个NewHad...
2019-06-17 12:02:06 440
转载 RDD的几种创建方式
一、RDD简介RDD是Spark的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集 RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每个分区分布在集群中的不同节点上(分区即partition),从而让RDD中的数据可以被并行操作。(分布式的特性) RDD通常通过Hadoop上的文件,即HDFS文件,来进行创建;有时也...
2019-06-16 18:38:55 1043
原创 Spark Core入门1【Spark集群安装、高可用、任务执行流程、使用Scala/Java/Lambda编写Spark WordCount】
一、Spark介绍Spark是一种快速、通用、可扩展的大数据分析引擎,包含SparkSQL、SparkStreaming、GraphX、MLlib等子项目。Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。Spark的优点:1、快:与Ha...
2019-06-11 00:44:03 498
原创 基于Akka模拟Spark中Master和Worker的通信过程
一、Spark中Master与Worker之间的通信过程1、在启动时,Worker会向Master注册自己的信息(内存、核数等),以便2、Master收到各Worker的注册信息后,会回复Worker已注册成功的信息3、worker收到master的注册成功信息后,会定期向Master发送心跳包,回报自己的状态信息4、Master定期收到Worker的心跳信息后,会更新各个Wo...
2019-06-08 01:15:19 945
原创 基于Scala的并发编程模型Akka
一、Akka概念 Akka是JVM平台上构建高并发、分布式和容错应用的工具包和运行时环境。Akka用Scala语言编写,同时提供了Scala 、JAVA的开发接口。二、Akka中Actor模型2.1 Actor模型介绍 Akka处理并发的方法基于Actor模型。在基于Actor的系统里,所有的事物都是Actor。...
2019-06-06 00:43:16 467
原创 ElasticSearch-head安装配置教程
安装ElasticSearch图形管理界面ElasticSearch-head《elasticsearch-head》Github地址安装之前做一些准备工作,将itcats用户切换到root用户suecho "itcats ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/itcats返回: itcats ALL = (roo...
2019-04-27 19:41:49 503
原创 ElasticSearch入门
全文搜索属于最常见的需求,开源的 Elasticsearch是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。ElasticSearch 的底层是开源库 Lucene,Elasticsearch 是 Lucene 的封装,它提供了 REST API 的操作接口,开箱即用。本文从零开始,讲解如何使用 Elas...
2019-04-27 16:55:54 398
原创 ElasticSearch单机/集群搭建教程
本文将介绍ElasticSearch单机版与集群版的安装与配置,ElasticSearch依赖JRE,注意机器是否安装JDK8【最低版本要求就是JDK8】,且JDK环境变量是否已配置完成java -versionecho $JAVA_HOME一、下载《从官网下载ElasticSearch》二、上传安装包到虚拟机解压到/usr/local/下三...
2019-04-26 00:51:02 793
原创 Sqoop快速入门【导入数据到HDFS与导出数据到数据库】
1、Sqoop概述Sqoop - “SQL到Hadoop和Hadoop到SQL”sqoop是apache旗下一款"Hadoop和关系数据库服务器之间传送数据"的工具。导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;导出数据:从Hadoop的文件系统中导出数据到关系数据库mysql等。2、工作机制将导入或导出命...
2019-04-23 17:15:50 5156
原创 StringUtils中 isNotEmpty 和isNotBlank的区别【Java字符串判空】
StringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理。例如,如果输入为null则返回也是null等,具体可以查看源代码)。除了构造器,StringUtils中一共有130多个方法,并且都是static的,所以我们可以这样调用StringUtils.xxx()
2019-04-20 17:06:33 1084
原创 Flume快速入门
前言在一个完整的离线大数据处理系统中,除了HDFS+MapReduce+Hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在Hadoop生态体系中都有便捷的开源框架,如图所示:图:典型大规模离线数据处理平台一、Flume日志采集框架1.1 概述Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输...
2019-04-20 13:39:33 905
原创 HBase原理详解【Master、Region Server内部机制、Zookeeper、读写数据流程、hbase:meta表】
一、HBASE运行原理组件结构图二、各组件的职责2.1 MASTER职责1、管理HRegionServer,实现其负载均衡。2、管理和分配HRegion,比如在HRegion split时分配新的HRegion;在HRegion Server退出时迁移其负责的HRegion到其他HRegionServer上。3、Admin职能:创建、删除、修改Table的定...
2019-04-18 21:25:31 3750 4
原创 HBase快速入门【集群安装配置、读写过程、表模型、命令行、API】
HBase官方文档地址:http://hbase.apache.org一、简单看看HBase与MySQL、Hive的区别二、什么是HBaseHBASE是一个数据库----可以提供数据的实时随机读写HBase与MySQL、Oralce、DB2、SQLServer等关系型数据库不同,它是一个NoSQL数据库(非关系型数据库)HBase的表模型与关系型数据库的表...
2019-04-18 00:42:44 392
原创 用生活举例看Java多线程活跃性问题【死锁、饥饿、活锁】
死锁:吃饭问题,5个人每人只有一双筷子,只有让另外一个人分享他自己的筷子给自己,自己才能吃到饭。若存在这样的情况,若每个人都不把自己的筷子借给别人用餐,每个人都抓着自己手中的筷子不放,那么每个人都吃不上饭饿死了。也就是说A线程拥有B线程所需的资源,B线程也有A线程所需资源,但两者都不把资源分享出来,最后需求达不到,最后饿死。饥饿问题:学校饭堂排队打饭,但有些人无秩序插队,那么插队的人拥有...
2019-04-12 18:07:21 777
原创 数据结构——哈希表
一、从一道Leetcode题目认识哈希表387.字符串中的第一个唯一字符因为该字符串只包含小写字母,即只存在a-z 26个小写字母,我们将其a-z对应到数组0-25索引的位置,出现一次,index+1代码编写:class Solution { public int firstUniqChar(String s) { int[] freq = new...
2019-04-12 18:06:14 335
原创 深入理解Hive【Hive架构介绍、安装配置、Hive语法介绍】
一、Hive的产生背景1、MapReduce编程十分繁琐2、传统RDBMS人员的需要Hive由Facebook开源项目:1、用于解决海量结构化日志的数据统计问题2、构建在Hadoop之上的数据仓库3、Hive提供SQL查询语言:HQL4、底层支持多种不同的执行引擎【MR/Tez/Spark】1.x默认为MR 2.x默认为Spark 当然也可以设置为Te...
2019-04-10 22:23:49 940
转载 Hive文件格式之textfile,sequencefile和rcfile的使用与区别详解
hive在创建表时默认存储格式是textfile,或者显示自定义的stored as textfile。很多人知道hive常用的存储格式有三种,textfile,sequencefile,rcfile,但是却说不清楚这三种格式的干什么用的,本质有有什么区别?适合什么时候用?为什么hive会有多种存储格式?因为hive是文本批处理系统,所以就存在一个往hive中导入数据的问题,首先数据的存储...
2019-04-10 13:56:00 2734
原创 Linux安装和配置MySQL5.7【修改密码、修改字符集等配置】
安装配置MySQL ,看这篇文章就够了。本文包括mysql安装,默认密码获取与修改,修改MySQL默认编码字符集,防火墙关闭CentOS6、CentOS7均可用一、下载和安装mysql源先下载 mysql源安装包[root@localhost ~]# wget https://dev.mysql.com/get/mysql57-community-release-el7...
2019-04-09 15:19:32 3424 4
原创 MapReduce词频统计【自定义复杂类型、自定义Partitioner、NullWritable使用介绍】
一、MapReduce1.0运行模型二、MapReduce编程模型之执行步骤1、准备map处理的输入数据2、交给Mapper进行处理3、Shuffle【规则可以自己控制】4、Reduce处理[合并、归并]5、输出MapReduce处理流程InputFormat读数据,通过Split将数据切片成InputSplit,通过RecordReader读取记...
2019-04-08 16:42:05 1571
原创 Yarn框架深入理解【Yarn集群配置】
一、Yarn框架产生的背景与原因我们都知道Hadoop诞生的目标是为了支持十几台机器的搜索服务,但是随着数据的增加,数据的可用性也是一个待解决的问题。但是Hadoop框架的自身问题限制了集群的发展。首先是,JobTracker和NameNode的单点问题,严重制约了集群的扩展和可靠性。MapReduce采用了基于slot的资源分配模型,slot是一种粗粒度的资源 划分单位,通常一个...
2019-04-08 10:37:17 1905
原创 MapReduce工作流程超详细解释
MapReduce是我们再进行离线大数据处理的时候经常要使用的计算模型,MapReduce的计算过程被封装的很好,我们只用使用Map和Reduce函数,所以对其整体的计算过程不是太清楚,同时MapReduce1.0和MapReduce2.0在网上有很多人混淆。MapReduce1.0运行模型InputInput但是输入文件的存储位置,但是注意这里并一定是一些博客说的当然是...
2019-04-08 00:51:00 3027
原创 Scala中的reduceLeft,reduceRight,foldLeft,foldRight方法
scala中集合类iterator特质的化简和折叠方法c.reduceLeft(op)这样的调用将op相继应用到元素,如:eg:val a = List(1,7,2,9)val a1 = a.reduceLeft(_ - _)// ((1-7) - 2) - 9 = -17c.reduceRight(op)这样的调用将op相继应用到元素,如:var b ...
2019-04-07 13:49:36 639
fastdfs_client_v1.20.jar
2018-08-19
HeimaCodeUtil_V2.4黑马49期配套代码生成器
2018-08-16
dobbo-admin-2.5.4.war
2018-08-13
FWR310 v4路由器升级
2018-08-10
logback-spring.xml
2018-06-23
pagehelper3.4.2-fix
2018-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人