基础知识整理
文章平均质量分 88
整理知识点,供个人复习使用
_Charison
这个作者很懒,什么都没留下…
展开
-
HDFS、Kafka、HBase、Redis 实现 HA 方式的总结
文章目录1. 概述2. HDFS3. Kafka4. HBase5. Redis推荐阅读:redis系列之——高可用(主从、哨兵、集群)1. 概述首先需要明确,什么时候需要实现 HA(高可用)?只有当出现 单点故障问题 的时候,例如:HDFS:客户端请求写文件时,需要请求 NameNode 返回元数据,但 NameNode 只有一个,假如宕机就需要切换到备用的 NameNodeKafka:使用了主从模式,1个 leader 和多个 follower 之间需要同步数据,假如 leader 宕机,原创 2021-05-17 15:57:34 · 588 阅读 · 0 评论 -
10. HBase
文章目录10.1 HBase 架构10.2 Hbase数据存储结构10.3 HBase 工作流程1. 读流程2. 写流程3. 数据 Flush 流程10.4 HBase 和 Hive10.5 RowKey 设计10.1 HBase 架构HBase 也是 Master/Slaves 架构,由一个 HMaster 和多个 HRegionServer 构成。从上图中能看出 HBase 是由 Client、ZooKeeper、HMaster、HRegionServer、HDFS 等几个组件组成,组件的相关功原创 2021-04-21 14:50:41 · 150 阅读 · 0 评论 -
9. Kafka
文章目录9.1 消息中间件MQ9.2 Kafka 是什么9.3 Kafka 架构9.4 为什么一个 Topic 要分成多个 Partition9.1 消息中间件MQ什么是消息中间件:消息中间件关注数据的发送和接收,主要解决的是分布式系统之间的消息传递问题。通过提供 消息传递 和 消息排队 模型,可以在分布式架构下扩展进程间的通信。常见的消息中间件:ActiveMQ,RabbitMQ,RocketMQ,Kafka,Redis消息中间件的术语:Broker:消息服务器,提供核心服务Produc原创 2021-04-19 15:18:12 · 118 阅读 · 0 评论 -
8. Flume
文章目录8.1 Flume 是什么8.2 Flume 架构,Put事务,Take事务8.1 Flume 是什么Flume用于将多种来源的日志以 流 的方式传输至Hadoop或者其它目的地。Flume特点:可靠性:Flume的核心是把数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。Flume 使用事务性的方式保证传送 Event 整个过程的可靠性。可恢复性:Events 在通道中执行,由该通道管理从失败中原创 2021-04-18 15:49:18 · 110 阅读 · 0 评论 -
7. Hive
文章目录7.1 Hive是什么?7.2 Hive 和数据库的区别7.3 Hive 架构7.4 内部表和外部表7.5 排序的区别7.6 窗口函数7.7 Hive 优化7.7.1. Map Join7.7.2. 行列过滤7.7.3. group by 去重7.7.4. 数据倾斜1. 数据倾斜原因2. 调整 Map 数3. 调整 Reduce 数7.7.5 JVM 重用7.1 Hive是什么?简单来说,Hive 就是在 Hadoop 上架了一层 SQL 接口,可以将 SQL 翻译成MapReduce 去 Ha原创 2021-04-17 15:28:08 · 148 阅读 · 0 评论 -
6. Zookeeper
文章目录6.1 选举机制6.2 常用命令6.1 选举机制半数机制(Paxos 协议):集群中半数以上机器存活,集群可用。所以 zookeeper 适合装在奇数台机器上。当集群开启的数量在半数以上时,就会将 Leader 选出来,例如,有 id 为1,2,3三台机器,按顺序启动,第一台开启时,zookeeper 的日志会报错,因为启动数量没有达到集群的一半。继续启动机器2,数量多于一半,然后根据 id 的大小选出 Leader,则2号当选。当3号机器启动时, Leader 已经存在,则只能当小弟了。6原创 2021-04-16 09:59:46 · 91 阅读 · 0 评论 -
5. Hadoop 优化
1)数据输入小文件处理:合并小文件:对小文件进行归档(har)、自定义 inputFormat、将小文件存储成 sequenceFile 文件采用 CombineFileInputFormat 作为输入,解决输入端的大量小文件场景对于大量小文件 Job,可以开启 JVM 重用,推荐阅读:Hadoop的JVM重用2)Map 阶段增大环形缓冲区大小。由 100M 扩大到 200M增大环形缓冲区溢写的比例。由 80% 扩大到 90%减少对溢写文件的 merge 次数不影响实际业务的前提下,采原创 2021-04-16 09:33:32 · 73 阅读 · 0 评论 -
4. Yarn
文章目录4.1 调度器定义、区别4.2 Yarn 的 job 提交流程4.1 调度器定义、区别1)Hadoop 调度器主要分为三类:FIFO、Capacity Scheduler(容量调度器)和 Fair Scheduler(公平调度器)。Hadoop 2.7.2 默认的资源调度器是 容量调度器。2)区别:① FIFO 调度器:先进先出② 容量调度器:允许多个队列共享一个Hadoop集群,每个队列所分配的集群资源是固定的且可配置的。每个队列内部还可以进一步划分成小队列,小队列之间共享整个队列原创 2021-04-15 16:19:34 · 86 阅读 · 0 评论 -
3. Hadoop
文章目录3.1 Hadoop 常用端口号3.2 配置文件以及简单的 Hadoop 集群搭建3.3 HDFS 读流程3.4 HDFS 写流程3.5 MapReduce 过程发生了多少次排序?3.1 Hadoop 常用端口号dfs.namenode.http-address : 50070SecondaryNameNode : 50090dfs.datanode.address : 50010fs.defaultFS : 8020或9000yarn.resourcemanager.webapp.a原创 2021-04-14 15:14:44 · 86 阅读 · 0 评论 -
1. 代码手写
文章目录1.1 快速排序1.2 归并排序1.3 手写 Spark-WordCount1.4 冒泡排序1.7 高效读取大数据文本文件(上亿行数据)1.1 快速排序快速排序:时间复杂度平均o(nlogn),最坏o(n²)空间复杂度平均o(logn),最坏o(n)不稳定public void quickSort(int[] arr, int left, int right) { if (left >= right) return; int temp = arr[left]原创 2021-04-12 15:26:08 · 114 阅读 · 0 评论 -
9. Dubbo
文章目录一、重要的概念1.1 什么是 Dubbo ?1.2 什么是 RPC? RPC原理是什么?1.3 为什么要用 Dubbo?1.4 什么是分布式?1.5 为什么要分布式?二、 Dubbo 的架构2.1 Dubbo 的架构图解2.2 Dubbo 工作原理三、 Dubbo 的负载均衡策略3.1 先来解释一下什么是负载均衡3.2 再来看看 Dubbo 提供的负载均衡策略3.3 配置方式四、 zookeeper宕机与dubbo直连的情况本文主要源自 JavaGuide 地址:https://github.c原创 2021-04-07 11:16:21 · 88 阅读 · 0 评论 -
8. 消息队列
文章目录8.1 什么是消息队列8.2 为什么要用消息队列1. 通过异步处理提高系统性能(削峰、减少响应所需时间)2. 降低系统耦合性8.3 使用消息队列带来的一些问题8.4 JMS VS AMQP1. JMSJMS简介JMS 两种消息模型JMS 五种不同的消息正文格式2. AMQP3. JMS vs AMQP8.5 常见的消息队列对比本文主要源自 JavaGuide 地址:https://github.com/Snailclimb/JavaGuide 作者:SnailClimb仅供个人复习使用8.原创 2021-04-05 15:08:20 · 109 阅读 · 0 评论 -
7. Spring
文章目录7.1 IoC7.2 AOP7.3 Spring Bean1. Spring Bean 的作用域2. Spring 中的单例 bean 的线程安全问题了解吗?3. @Component 和 @Bean 的区别是什么?4 将一个类声明为 Spring bean 的注解有哪些?7.4 Spring MVC1. 说说自己对于 Spring MVC 的了解?2. SpringMVC 工作原理了解吗?7.5 Spring 框架中用到了哪些设计模式?7.6 Spring 事务1. Spring 管理事务的方式有原创 2021-04-03 16:51:11 · 101 阅读 · 0 评论 -
6. Redis
文章目录6.1 Redis 简介6.2 为什么要用 Redis / 为什么要用缓存1. 高性能2. 高并发6.3 为什么要用 Redis 而不用 map/guava 做缓存?6.4 Redis 和 Memcached 的区别6.5 redis 常见数据结构以及使用场景分析1. String2. Hash3. List4. Set5. Sorted Set6.1 Redis 简介简单来说 Redis 就是一个数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的,所以存写速度非常快,因此 Re原创 2021-03-28 10:42:44 · 146 阅读 · 0 评论 -
5. MySQL
文章目录5.1 说说自己对于 MySQL 常见的两种存储引擎:MyISAM 与 InnoDB 的理解5.2 数据库索引了解吗?1. 为什么要使用索引?2. 索引这么多优点,为什么不对表中的每一个列创建一个索引呢?3. 索引是如何提高查询速度的?4. 使用索引的注意事项5. MySQL 索引主要使用的两种数据结构6.5.1 说说自己对于 MySQL 常见的两种存储引擎:MyISAM 与 InnoDB 的理解count 运算上的区别:因为 MyISAM 缓存有表 meta-data(行数等),因此在做 C原创 2021-03-26 13:30:32 · 523 阅读 · 0 评论 -
4. Linux
文章目录4.1 简单介绍一下 Linux 文件系统?4.2 一些常见的 Linux 命令了解吗?目录切换命令目录的操作命令(增删改查)文件的操作命令(增删改查)压缩文件的操作命令其他常用命令4.1 简单介绍一下 Linux 文件系统?在 Linux 操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。也就是说在 Linux 系统中有一个重要的概念:一切都是文件。其实这是 UNIX 哲学的一个体现,而 Linux 是重写 UNIX原创 2021-03-25 16:42:19 · 101 阅读 · 1 评论 -
3.1 计算机网络
文章目录3.1 TCP 和 UDP 协议的区别3.2 在浏览器中输入url地址 ->> 显示主页的过程本文主要源自 JavaGuide 地址:https://github.com/Snailclimb/JavaGuide 作者:SnailClimb仅供个人复习使用3.1 TCP 和 UDP 协议的区别UDP 在传送数据之前不需要先建立连接,目标主机在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 却是一种最有效的工作方式(一般用于原创 2021-03-24 15:53:00 · 104 阅读 · 0 评论 -
2.1 Java基础知识
文章目录2.1.1 重载和重写的区别2.1.2 String 和 StringBuffer、StringBuilder 的区别是什么?String 为什么是不可变的?2.1.3 自动装箱与拆箱2.1.4 == 与 equals2.1.5 关于 final 关键字的一些总结2.1.6 Object类的常见方法总结2.1.7 Java 中的异常处理2.1.8 获取用键盘输入常用的的两种方法2.1.9 接口和抽象类的区别是什么2.1.10 字符型常量和字符串常量的区别?2.1.11 构造器 Constructor原创 2021-03-02 10:49:41 · 227 阅读 · 0 评论 -
2.2 Java集合框架
文章目录2.2.1 Arraylist 与 LinkedList 异同2.2.2 ArrayList 与 Vector 区别2.2.3 HashMap的底层实现JDK1.8 之前从JDK1.8开始2.2.4 HashMap 和 Hashtable 的异同2.2.5 HashMap 的长度为什么是2的幂次方2.2.6 HashMap 多线程操作导致死循环问题2.2.7 HashSet 和 HashMap 区别2.2.8 ConcurrentHashMap 和 Hashtable 的区别2.2.9 Concur原创 2021-03-06 15:11:33 · 207 阅读 · 2 评论 -
2.3 多线程
文章目录2.3.1 说说 sleep() 方法和 wait() 方法的区别?2.3.2 为什么我们调用 start()方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?本文主要源自 JavaGuide 地址:https://github.com/Snailclimb/JavaGuide 作者:SnailClimb仅供个人复习使用2.3.1 说说 sleep() 方法和 wait() 方法的区别?两者最主要的区别在于:sleep 方法没有释放锁,而 wait 方法释放了锁原创 2021-03-19 13:28:24 · 150 阅读 · 0 评论 -
2.4 JVM
文章目录2.4.1 介绍下 Java 内存区域(运行时数据区域)1. 程序计数器2. Java虚拟机栈3. 本地方法栈4. 堆5. 方法区6. 运行时常量池7. 直接内存2.4.2 Java对象的创建过程1. 类加载检查2. 分配内存3. 初始化零值4. 设置对象头5. 执行init方法2.4.3 对象的访问定位有哪两种方式?1. 使用句柄2. 直接指针2.4.4 说一下堆内存中对象的分配的基本策略2.4.5 Minor GC 、Major GC、Full GC 有什么不同呢?2.4.6 如何判断对象是否死原创 2021-03-13 13:17:49 · 173 阅读 · 0 评论