- 博客(28)
- 收藏
- 关注
原创 switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?
在 switch(expr1)中,expr1 只能是一个整数表达式或者枚举常量(更大字体),整数表达 式可以是 int 基本类型或 Integer 包装类型。由于byte,short,char 都可以隐含转换为 int,所 以,这些类型以及这些类型的包装类型也是可以的。显然, long 和 String 类型都不符合 switch 的语法规定,并且不能被隐式转换成 int 类型,所以,它们不能作用于 swtich 语句中。...
2020-08-18 22:09:47 291
原创 JVM GC(垃圾回收机制)
在学习Java GC 之前,我们需要记住一个单词:stop-the-world 。它会在任何一种GC算法中发生。stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行。当stop-the-world 发生时,除GC所需的线程外,所有的线程都进入等待状态,直到GC任务完成。GC优化很多时候就是减少stop-the-world 的发生。...
2020-08-10 22:09:20 177
原创 什么是线程安全?
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码;如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和的是一样的,就是线程安全的。或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否
2020-08-07 22:59:37 234
原创 二叉树的特点
1)树执行查找、删除、插入的时间复杂度都是O(logN)2)遍历二叉树的方法包括前序、中序、后序3)非平衡树指的是根的左右两边的子节点的数量不一致4) 在非空二叉树中,第i层的结点总数不超过 , i>=1;5)深度为h的二叉树最多有个结点(h>=1),最少有h个结点;6)对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;...
2020-08-06 22:31:41 322
原创 二叉树概念
1.树有很多种,每个节点最多只能有两个子节点的一种形式为二叉树。2.二叉树的字节点分为左节点和右节点。3.如果该二叉树的所有叶子节点都在最后一层,并且节点总数=2^n-1,n为层数,则我们称为满二叉树。4.如果该节点的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续,则我们称为完全二叉树。...
2020-08-06 22:30:45 94
原创 冒泡排序 时间复杂度 O(n^2) 空间复杂度O(1)
*/public class BubbleSort {public static void bubbleSort(int[] data) { System.out.println("开始排序"); int arrayLength = data.length; for (int i = 0; i < arrayLength - 1; i++) { boolean flag = false; for (int j = 0; j < arrayLength -
2020-08-04 23:04:32 510 1
原创 FileChannel优化
通过配置dataDirs指向多个路径,每个路径对应不同的硬盘,增大Flume吞吐量。官方说明如下:Comma separated list of directories for storing log files. Using multiple directories on separate disks can improve file channel peformancecheckpointDir和backupCheckpointDir也尽量配置在不同硬盘对应的目录中,保证checkpoint坏掉后
2020-08-03 22:16:02 361 1
原创 RDD 五大特性
1、RDD 是由一系列的分区组成。2、操作一个 RDD 实际上操作的是 RDD 的所有分区。3、RDD 之间存在各种依赖关系。4、可选的特性,key-value 型的 RDD 是通过 hash 进行分区。5、RDD 的每一个分区在计算时会选择最佳的计算位置。...
2020-07-26 23:23:11 345
原创 Spark 的特点
1)快速:基于内存的计算比 MapReduce 快 100 倍,基于磁盘快 10 倍。2)易用:编写一个 spark 的应用程序可以使用 Java, Scala, Python, R,这就使得我们的开发非常地灵活。并且,对比MapReduce,spark 内置了 80 多个高级操作,这使得开发十分高效和简单。3)运行范围广:spark 可以运行在 local、yarn、mesos、standalone、kubernetes 等多种平台之上。它可以访问诸如 HDFS, Cassandra, HBase,
2020-07-25 22:44:55 2782
原创 fsimage 和 edit 的区别
当 NN,SN 要进行数据同步时叫做 checkpoint 时就用到了 fsimage 与 edit,fsimage 是保存最新的元数据的信息,当 fsimage 数据到一定的大小事会去生成一个新的文件来保存元数据的信息,这个新的文件就是 edit,edit 会回滚最新的数据。...
2020-07-24 22:20:10 856
原创 zookeeper 是如何保证事务的顺序一致性的?
zookeeper 采用了递增的事务 Id 来标识,所有的 proposal(提议)都在被提出的时候加上了 zxid, zxid 实际上是一个 64 位的数字,高 32 位是 epoch (时期; 纪元; 世; 新时代)用来标识 leader 是否发生改变,如果有新的 leader 产生出来,epoch 会自增,低 32 位用来递增计数。当新产生 proposal 的时候,会依据数据库的两阶段过程,首先会向其他的 server 发出事务执行请求,如果超过半数的机器都能执行并且能够成功,那么就会开始执行
2020-07-23 22:29:59 906
原创 Zookeeper 同步流程
1、Leader 等待 server 连接;2、Follower 连接 leader,将最大的 zxid 发送给 leader;3、Leader 根据 follower 的 zxid 确定同步点;4、完成同步后通知 follower 已经成为 uptodate 状态;5、Follower 收到 uptodate 消息后,又可以重新接受 client 的请求进行服务了。...
2020-07-22 22:59:42 211
原创 zookeeper 是如何保证事务的顺序一致性的?
zookeeper 采用了递增的事务 Id 来标识,所有的 proposal(提议)都在被提出的时候加上了 zxid, zxid 实际上是一个 64 位的数字,高 32 位是 epoch (时期; 纪元; 世; 新时代)用来标识 leader 是否发生改变,如果有新的 leader 产生出来,epoch 会自增,低 32 位用来递增计数。当新产生 proposal 的时候,会依据数据库的两阶段过程,首先会向其他的 server 发出事务执行请求,如果超过半数的机器都能执行并且能够成功,那么就会开始执行
2020-07-22 12:02:06 733
原创 Zookeeper 工作原理
Zookeeper 的核心是原子广播,这个机制保证了各个 Server 之间的同步。实现这个机制的协议叫做 Zab 协议。Zab 协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步) 。当服务启动或者在领导者崩溃后, Zab 就进入了恢复模式,当领导者被选举出来,且大多数 Server 完成了和 leader 的状态同步以后,恢复模式就结束了。状态同步保证了 leader 和 Server 具有相同的系统状态。...
2020-07-22 12:00:05 107
原创 hadoop 的 TextInputFormat 作用是什么,如何自定义实现
InputFormat 会在 map 操作之前对数据进行两方面的预处理。1.是 getSplits,返回的是 InputSplit 数组,对数据进行 Split 分片,每片交给 map 操作一次。2.是 getRecordReader,返回的是 RecordReader 对象,对每个 Split 分片进行转换为 keyvalue 键值对格式传递给 map 常用的 InputFormat 是 TextInputFormat ,使用的是LineRecordReader 对每个分片进行键值对的转换,以行偏移量
2020-07-20 22:31:33 1006
原创 Storm和Spark Streaming的区别
1.Spark Streaming 最低可在 0.5 秒~2 秒内做一次处理,而 Storm 最快可达到 0.1 秒,在实时性和容错性上,Spark Streaming 不如Strom2.Spark Streaming 的集成性优于 Storm,可以通过 RDD 无缝对Spark 上的所有组件,还可以很容易的与 kafka,flume 等分布式框架进行集成。3.在数据吞吐量上,Spark Streaming 要远远优于 Storm。综上所诉,Spark Streaming 更适用于大数据流式处理。
2020-07-19 12:28:37 322
原创 hbase中scan和get的功能以及实现的异同
HBase 的查询实现只提供两种方式:1、按指定 RowKey 获取唯一一条记录,get 方法(org.apache.hadoop.hbase.client.Get)Get 的方法处理分两种 : 设置了 ClosestRowBefore 和没有设置的 rowlock .主要是用来保证行的事务性,即每个 get 是以一个 row 来标记的.一个 row 中可以有很多 family 和column.2、按指定的条件获取一批记录, scan 方法(org.apache.Hadoop.hbas
2020-07-18 22:01:35 1628 1
原创 hbase的rowkey设计原则
Rowkey 长度原则Rowkey 是一个二进制码流,Rowkey 的长度被很多开发者建议说设计在 10~100 个字节,不过建议是越短越好,不要超过 16 个字节。原因如下:(1)数据的持久化文件 HFile 中是按照 KeyValue 存储的,如果 Rowkey 过长比如 100 个字节,1000 万列数据光 Rowkey 就要占用 100*1000 万=10 亿个字节,将近 1G 数据,这会极大影响 HFile 的存储效率;(2)MemStore 将缓存部分数据到内
2020-07-17 23:09:20 99
原创 hbase 的特点
(1) Hbase 一个分布式的基于列式存储的数据库,基于 Hadoop 的 hdfs 存储, zookeeper 进行管理。(2) Hbase 适合存储半结构化或非结构化数据,对于数据结构字段不够确定或者杂乱无章很难按一个概念去抽取的数据。(3) Hbase 为 null 的记录不会被存储.(4)基于的表包含 rowkey,时间戳,和列族。新写入数据时,时间戳更新,同时可以查询到以前的版本.(5) hbase 是主从架构。hmaster 作为主节点,hregionserver 作为从节点。.
2020-07-16 22:45:02 776
原创 分桶和分区的区别
分区1.是指按照数据表的某列或某些列分为多个区,区从形式上可以理解为文件夹,比如我们要收集某个大型网站的日志数据,一个网站每天的日志数据存在同一张表上,由于每天会生成大量的日志,导致数据表的内容巨大,在查询时进行全表扫描耗费的资源非常多。2.那其实这个情况下,我们可以按照日期对数据表进行分区,不同日期的数据存放在不同的分区,在查询时只要指定分区字段的值就可以直接从该分区查找分桶1.分桶是相对分区进行更细粒度的划分。2.分桶将整个数据内容安装某列属性值得 hash 值进行区分,如要按照 name 属
2020-07-15 20:49:17 4227
原创 hive里面的排序关键字
sort by :不是全局排序,其在数据进入 reducer 前完成排序order by :会对输入做全局排序,因此只有一个 reducer(多个 reducer 无法保证全局有序).只有一个 reducer,会导致当输入规模较大时,需要较长的计算时间。cluster by : 当 distribute by 和 sort by 的字段相同时,等同于 cluster by.可以看做特殊的 distribute + sortdistribute by :按照指定的字段对数据进行划分输出到不
2020-07-15 12:24:03 1513
原创 数据倾斜的原因以及怎么去解决
数据倾斜的原因1.key 分布不均匀2.业务数据本身的特性3.SQL 语句造成数据倾斜如何解决数据倾斜1.hive 设置 hive.map.aggr=true,hive.groupby.skewindata=true2.有数据倾斜的时候进行负载均衡,当选项设定为 true,生成的查询计划会有两个 MR Job。第一个 MR Job 中, Map 的输出结果集合会随机分布到 Reduce 中,每个 Reduce 做部分聚合操作,并输出结果,这样处理的结果是相同 Group By Key 有可能被分
2020-07-14 20:57:57 492
原创 Flume的事务机制
Flume 使用两个独立的事务分别负责从 Soucrce 到 Channel (put),以及从 Channel 到Sink 的事件传递(take)。比如 spooling directory source 为文件的每一行创建一个事件,一旦事务中所有的事件全部传递到 Channel 且提交成功,那么 Soucrce 就将该文件标记为完成。同理,事务以类似的方式处理从 Channel 到 Sink 的传递过程,如果因为某种原因使得事件无法记录,那么事务将会回滚。且所有的事
2020-07-14 11:55:09 396
原创 MapReduce运行原理简述
先将文件进行分割后,进行 map 操作,后面进行 shuffle 操作,分为 map 端 shuffle 和 reduce端 shuffle。map 输出结果放在缓冲区,当缓存区到达一定阈值时,将其中数据 spill (也就是溢写)到磁盘,然后进行 partition, sort, combine 操作,这样多次 spill 后,磁盘上就会有多个文件,merge 操作将这些文件合并成一个文件。reduce 端 shuffle 从 map 节点拉取数据文件,如果在内存中放得下,就直接放在内存中,每个 m
2020-07-13 20:19:22 668
原创 大数据的笔记(2)
Hive 中追加导入数据的 4 种方式和简要语法从本地导入:load data local inpath ‘/home/1.txt’ (overwrite)into table student;从 Hdfs 导入: load data inpath ‘/user/hive/warehouse/1.txt’ (overwrite)into table student;查询导入: create table student1 as select * from student;(也可以具体查询某项数据)
2020-07-13 14:13:47 97
原创 大数据的笔记
hadoop 集群中 hadoop 都需要启动的进程及他们的作用。–namenode =>HDFS 的守护进程,负责维护整个文件系统,存储着整个文件系统的元数据信息,有 image+edit log namenode 不会持久化存储这些数据,而是在启动时重建这些数据。–datanode =>是具体文件系统的工作节点,当我们需要某个数据,namenode 告诉我们去哪里找,就直接和那个 DataNode 对应的服务器的后台进程进行通信,由 DataNode 进行数据的检索,然后进行具体
2020-07-13 01:34:07 106
原创 一个大神的进阶之路
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2020-07-11 20:37:48 103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人