- 博客(457)
- 资源 (33)
- 问答 (7)
- 收藏
- 关注
原创 Hadoop安全模式详解
Hadoop HDFS的安全模式是NameNode启动时的一种特殊状态,主要用于保障元数据一致性和数据块可用性。该模式下系统只读不可写,NameNode会加载元数据并校验数据块副本状态,当满足最小副本比例(默认99.9%)且稳定30秒后自动退出。管理员可通过命令手动控制安全模式,常见问题包括无法自动退出(需检查DataNode状态或调整参数)和误操作进入(手动退出即可)。安全模式是HDFS保证数据完整性的重要机制。
2025-10-26 11:16:17
439
原创 CyclicBarrier和CountDownLatch
CyclicBarrier表示达到一定数量的线程才会运行;CountDownLatch每来一个线程进行减一操作,直到0为止。CyclicBarrier允许N个线程相互等待;CountDownLatch是允许1或N个线程等待其他线程完成执行。CountDownLatch不可重用,只能触发一次事件,值为0后就不可再用了。CyclicBarrier只能唤起一个任务;这两个类都在jdk的并发包中,都可以用来表示代码运行到某个点上。CyclicBarrier和CountDownLatch。
2025-09-29 16:39:47
455
原创 Hadoop RPC深度解析:分布式通信的核心机制
Hadoop RPC是分布式系统中实现高效通信的核心机制,采用四层架构设计:序列化层通过Writable接口实现高效对象转换;函数调用层利用动态代理和反射完成远程方法定位;网络传输层基于TCP/IP保证可靠通信;服务器端通过Reactor模型处理并发请求。该机制具有高效性、可靠性和易用性特点,支持HDFS、YARN等组件间的频繁交互。Hadoop RPC通过分层设计,屏蔽底层细节,使开发者能够像调用本地方法一样实现跨节点通信,成为Hadoop生态系统的重要基础。
2025-09-29 16:37:16
1145
原创 如何保证接口幂等
session中生成一个唯一标识,请求时将唯一标识写入到表单的隐藏字段中,后端判断唯一标识与session中的是否一致,一致则说明是第一次请求,处理该请求后移除session中的标识;使用重定向方式,使得提交表单后重定向到提交成功页面,避免用户刷新页面导致的重复提交,也可以消除浏览器前进后退导致的问题。使用数据库进行防止,insert时使用唯一索引,update时使用乐观锁version。通过概念得知需要多次发送同一个请求,那么多次请求的原因有哪些。使用浏览器后退按钮重复之前的操作,导致重复提交表单。
2025-09-19 16:26:22
421
原创 Hadoop 1.x 与 2.x 版本对比:架构演进与核心差异解析
Hadoop 1.x到2.x的架构演进实现了重大升级,核心改进是引入YARN框架。1.x版本中JobTracker同时负责资源管理和任务调度,存在单点故障、资源分配僵化等问题。2.x将资源管理职责拆分给ResourceManager,任务调度由各应用的ApplicationMaster负责,支持动态资源分配和高可用,解决了1.x的性能瓶颈。2.x还支持多计算框架共享集群资源,显著提升了扩展性和灵活性。对比显示,2.x在架构设计、资源利用率、集群规模支持等方面均有显著优势。
2025-09-19 16:24:41
1135
2
原创 子线程如何获取Request
有时候在进行业务处理时对于一些对于业务不那么重要且对于返回结果无关的情况会开启一个新的线程进行处理,但是在开启新线程进行处理时发现无法从RequestContextHolder中获取到当前的请求,取出来是null。这是因为RequestContextHolder中的信息都是存储在ThreadLocal中的,而ThreadLocal中的数据是使用线程进行查找的,不是该线程存储的,是无法查找到的。此时就需要将RequestAttributes对象设置为子线程共享的,在开启子线程之前。子线程获取Request。
2025-09-12 15:26:13
674
原创 Hadoop简介:分布式系统的基石与核心架构详解
Hadoop简介:分布式系统核心架构解析 Hadoop作为Apache基金会开发的分布式系统基础架构,通过HDFS和MapReduce两大核心组件解决了海量数据存储与计算问题。HDFS采用主从架构,由NameNode、DataNode和SecondaryNameNode组成,具备高容错性和高吞吐量特性。MapReduce框架将计算任务分解为Map和Reduce阶段,实现分布式并行处理。Hadoop适用于PB级数据的离线批处理场景,具有高可用性、高扩展性、高效性和高容错性四大优势,但在低延迟访问、小文件存储和
2025-09-12 15:25:02
1066
原创 启动Tomcat时出现其他无关的项目
应该是tomcat以前部署的项目有残留,删除掉webapps里面的其他项目,删除掉work文件夹下Catalina下localhost文件夹里其他的项目,删除掉conf文件夹下Catalina下localhost文件夹下的其他项目配置,最后如果还是不行,查看一下conf下的server.xml里是不是有其他项目残留的配置。
2025-09-10 10:12:21
480
原创 Google Bigtable深度解析:分布式存储的设计典范
摘要 Google Bigtable是一种分布式结构化数据存储系统,具有高扩展性、高可用性和灵活的数据模型。它采用三维有序映射(行键、列、时间戳)存储数据,支持PB级数据量。系统架构包含客户端层、主控服务器和子表服务器,依赖GFS和Chubby实现持久化存储和分布式协调。Bigtable通过子表分片、内存MemTable和磁盘SSTable实现高效读写,其设计理念深刻影响了HBase等开源数据库。核心优势包括自动负载均衡、多版本数据支持和灵活的动态列管理,适用于大规模数据处理场景。
2025-09-10 10:11:18
1137
原创 JavaWeb解决中文乱码问题
tomcat的server.xml文件中,在Connector 节点中添加useBodyEncodingForURI="true" 属性 使用请求体的编码,然后在获取请求内容之前使用request.setCharacterEncoding("UTF-8")tomcat的get请求默认使用ISO-8859-1来编码,可以在获取的时候进行转码,new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")
2025-09-09 20:18:02
457
原创 Google GFS 深度解析:分布式文件系统的开山之作
Google GFS是分布式文件系统的开创性技术,专为海量数据存储优化。其核心架构包括主控服务器(管理元数据)、数据块服务器(存储数据块)和客户端(提供访问接口)。GFS采用64MB大块设计减少元数据量,通过租约机制授权主节点协调写操作,避免主控服务器成为瓶颈。系统具有高容错性(多副本存储)、高吞吐量(批量读写优化)和强扩展性等特点,为HDFS等后续系统提供了设计范本。GFS放弃部分POSIX兼容性,针对大数据场景的追加写和批量读进行了专门优化。
2025-09-09 20:16:20
995
原创 单元测试数据库回滚问题
问题解决:单元测试自动回滚,需要加上注解Rollback(false)问题现象: 在进行单元测试时,测试执行成功,可是数据库中的数据没变。
2025-09-03 17:15:54
934
原创 flume拓扑结构详解:从简单串联到复杂聚合的完整指南
Flume拓扑结构详解与配置指南 Flume提供三种核心拓扑结构满足不同数据采集需求:1)简单串联通过Agent链式传输实现跨网络转发,配置简单但存在单点故障风险;2)复制模式将数据同时写入多个存储系统(如HDFS+Kafka);3)多路复用根据Header字段动态路由数据。关键配置要点包括:使用File Channel保障可靠性、合理设置拦截器实现数据分类、为关键链路配置监控。复制模式适合多副本存储场景,而多路复用更适用于按数据类型分发的需求。实际部署时需权衡资源消耗与业务需求,复杂场景可混合使用多种拓扑
2025-09-03 17:12:21
1156
原创 web项目的目录结构
WEB-INF/web.xml web应用程序的描述文件,用来配置资源,如servlet、过滤器、监听器等。WEB-INF 存放class文件、jar文件和配置文件,对于用户来说该文件夹是不可见的。WEB-INF/classes 用于存放class文件,也是该web应用程序的类加载路径。web应用程序只能访问到存放在classes和lib目录下的java类。WEB-INF/lib 用于存放第三方的类库jar文件。其他资源文件存放到和WEB-INF同级的目录中。web项目的目录结构。
2025-09-02 22:40:19
566
原创 flume扩展实战:自定义拦截器、Source 与 Sink 全指南
Flume 内置的组件虽然能满足大部分场景,但在复杂业务需求下(如特殊格式数据采集、定制化数据清洗),需要通过自定义组件扩展其功能。本文将详细讲解如何自定义 Flume 拦截器、Source 和 Sink,从代码实现到配置部署,带你掌握 Flume 扩展的核心技巧。自定义的Source需要继承AbstractSource,实现Configurable和PollableSource接口。头信息,最终不同类型的事件会路由到对应的 Channel 和 Sink,控制台会输出分类后的日志。
2025-09-02 22:32:01
825
原创 JavaWeb之异步处理
在Servlet3.0版本中引入了异步处理的功能,使线程可以返回到容器,从而执行更多的任务。要在servlet上启用异步处理,需要配置asyncSupported为true。使用AysncContext来进行异步操作。以tomcat为例,看一下异步是怎么处理的。
2025-09-01 23:19:58
502
原创 flume接收处理器:构建高可用与高性能的数据链路
机制,提供了强大的故障转移(Failover)和负载均衡(Load Balancing)能力,确保数据链路的高可用性和吞吐量。**:惩罚时间不宜过短(可能导致频繁切换)或过长(故障恢复后不能及时复用),建议根据 Sink 恢复时间设置(如 30-60 秒);故障转移处理器通过优先级机制确保数据始终被健康的 Sink 处理,即使部分 Sink 故障也不会中断数据流转。:故障 Sink 进入惩罚期(如 30 秒),期间不会被选择,流量自动切换到次高优先级 Sink(如。
2025-09-01 23:13:20
994
1
原创 JavaWeb之国际化
在配置文件中i18n.properties i18n_en_US.properties i18n_zh_CN.properties。国际化(i18n): i18n internationalization,网站能够提供翻译成访问者的语言或国籍的不同版本的内容。本地化(i10n): 向网站添加资源,使其适应特定的地理或文化区域,例如将网站翻译为中文。区域设置:通常为语言符号后跟一个由下划线分隔的国家符号。数字、货币格式化 NumberFormat。字符串格式化 MessageFormat。
2025-08-29 16:18:12
626
原创 flume事务机制详解:保障数据可靠性的核心逻辑
Flume事务机制解析:保障数据可靠性的核心逻辑 Flume通过内置的事务机制实现数据采集过程中的"不丢不重"需求。其核心在于Source→Channel和Channel→Sink两个独立的事务阶段:Put事务和Take事务。Put事务通过临时缓冲putlist实现数据原子写入Channel,Take事务则利用takelist确保数据可靠发送至目标存储。当出现异常时,系统通过回滚机制恢复数据。不同Channel类型对事务支持存在差异,File Channel和Kafka Channel通
2025-08-29 16:17:12
958
原创 JavaWeb之异常处理
当servlet出现异常时,servlet容器使用exception-type元素来找到与抛出的异常类型相匹配的配置。可以使用request.getAttribute("")取出。如果出现异常,会在请求域中设置相应的属性。
2025-08-27 14:56:29
665
原创 flume监控文件写入 Kafka 实战:解耦应用与消息队列的最佳实践
写入 Kafka 会导致应用与 Kafka 强耦合(如 Kafka 故障可能影响应用运行)。更优的方案是:应用程序将日志写入本地文件,通过 Flume 监控文件并异步同步到 Kafka,实现 “应用 - 采集 - 存储” 的解耦。:Flume 支持监控文件、目录、网络等多种数据源,统一接入 Kafka。flume监控文件写入 Kafka 实战:解耦应用与消息队列的最佳实践。:应用仅需写本地文件,无需关心 Kafka 集群状态,降低耦合风险;在 Flume 崩溃时会丢失数据,对可靠性要求高的场景建议使用。
2025-08-27 14:52:47
1056
1
原创 JavaWeb之分布式事务规范
J2EE包括了两套规范用来支持分布式事务:一种是Java Transcation API(JTA),一种是Java Transcation Service(JTS)第一阶段:全局的事务管理器向各个数据库发出准备消息,各个数据库需要在本地把一切都准备好,执行操作,锁住资源,记录redo/undo日志,但不提交。多个分布式数据库,有一个全局的事务管理器来协调各个数据库的事务提交,为了实现分布式事务,需要两个阶段。JTA是一种高层的、与实现无关的、与协议无关的标准API。Transcation接口。
2025-08-26 16:35:21
687
原创 flume监控目录文件实战:三种 Source 方案对比与配置指南
在实际业务中,监控目录文件变化并实时采集数据是常见需求(如应用日志、业务数据文件等)。是 Flume 1.7+ 新增的高级方案,支持监控多个文件,通过偏移量文件记录读取位置,重启后不丢失进度。:检测到新文件后,Flume 打开文件并读取内容,转换为 Event 发送到 Channel。监控指定目录,当新文件放入目录后自动读取,读取完成后标记为 “已处理”(如添加后缀)。记录每个文件的最后读取位置(JSON 格式),进程重启后从断点继续,避免重复或丢失。,前者支持文件删除后重建的场景(如日志轮转后新文件)。
2025-08-26 16:06:27
752
1
原创 JavaWeb之过滤器Filter
依赖于servlet容器,基于函数回调,可以对请求和响应进行拦截,在访问后端资源之前,拦截这些来自客户端的请求,在发送回客户端之前,处理这些响应。需要实现Filter接口,其中包含有FilterChain过滤器链和FilterConfig过滤器配置。 并且在web.xml中配置写好的Filter。转换XML内容的XSL/T过滤器。Tokenizing过滤器。触发访问事件资源的过滤器。MIME-类型链过滤器。日志记录和审核过滤器。
2025-08-15 16:29:57
497
原创 flume实战:从零配置到启动运行的完整指南
本文将通过一个简单案例,带你从零开始配置 Flume Agent,理解配置文件的核心逻辑,并通过命令启动采集任务,快速上手 Flume 的使用流程。若配置正确,该命令会在log文件中一直打印数字,表明序列生成器正在产生数据,且通过 Sink 打印到日志,日志所在位置查看log4j.properties中的配置。flume启动时默认堆内存为200M,如果实际数据量很大时,需要修改flume-env.sh中的$JAVA_OPTS。在启动 Flume 前,需先了解核心命令参数,确保启动命令正确无误。
2025-08-15 16:25:29
672
原创 JavaWeb之响应
Servlet封装响应并返回给请求的客户端,该响应由ServletResponse类型的response对象表示,在HTTP请求场景下,容器提供的响应对象的具体类型为HttpServletResponse。HTTP的响应消息分为三部分:状态行、响应头、响应正文。响应正文对应的方法为。
2025-08-13 18:34:55
414
原创 日志数据链路的 “搬运工”:Flume 分布式采集的组件分工与原理
本文全面解析Apache Flume分布式日志采集系统的核心原理与组件架构。Flume作为大数据生态中的关键工具,具备高可用、高可靠和易扩展的特性,能够从多种数据源实时采集并传输数据到存储系统。文章详细介绍了Flume的核心组件:Source(事件源)、Channel(通道)和Sink(接收器),以及它们协同工作的流程,形成完整的数据采集管道。同时深入讲解了Event(事件)、Channel Selector(通道选择器)、Sink Group(接收器组)等关键概念,并列举了Flume丰富的内置组件类型及其
2025-08-13 18:33:29
1318
原创 JavaWeb之请求
客户端请求由ServletRequest类型的request对象表示,在HTTP请求场景下,容器提供的请求对象的具体类型为HttpServletRequest。HTTP的请求消息分为三部分:请求行、请求头、请求正文。网络连接信息相关方法。
2025-08-04 16:06:00
436
原创 手把手配置:Jenkins 代码提交后自动构建的两种方案(附步骤)
本文介绍了Jenkins实现代码提交后自动构建的两种方案。定时轮询通过周期性检查Git仓库变动触发构建,配置简单但实时性差;WebHook触发则通过仓库推送事件实时通知Jenkins,响应快但需公网访问条件。方案对比显示:WebHook适合生产环境,轮询适合小规模项目。建议优先采用WebHook,配合分支过滤和构建失败通知,实现高效自动化构建流程。(149字)
2025-08-04 16:04:12
1390
原创 jenkins 入门指南:从安装到启动的完整教程
本文将以 Mac 系统为例,带你一步步完成 Jenkins 的下载、安装与启动,快速踏上自动化构建之路。:推荐选择「安装推荐的插件」,Jenkins 会自动安装源码管理(如 Git)、构建工具(如 Maven)等核心插件,后续可在「插件管理」中按需添加更多功能。持续集成(CI)是现代开发流程中的核心环节,而 Jenkins 作为一款开源的 CI 工具,凭借。:插件安装完成后,设置管理员用户名、密码和邮箱,即可完成初始化。获取初始密码:根据页面提示,通过终端命令查看密码(通常路径为。
2025-07-23 15:53:00
505
原创 Innodb事务的实现
当执行事务时,会往Innodb_log_buffer日志缓冲区中插入事务日志(redo log);事务提交时不会将redo log buffer中日志写入到os buffer中,而是每秒写入os buffer并调用fsync()写入到redo log file中,如果系统崩溃,将丢失1秒的数据,性能最好,但是安全性最差。除了记录事务日志redo log外,还会记录回滚日志undo log,在进行数据修改时,由于某种原因失败了,需要进行回滚操作,可以利用undo log来将数据回滚到修改之前的样子。
2025-07-21 16:41:54
461
原创 副本数不足就拒写?HDFS 安全模式的 “保守” 设计是否合理?
Hadoop NameNode在启动时会进入安全模式,首先加载fsimage文件并执行edits日志操作,在内存建立元数据映射后创建新的fsimage和空日志。此时系统处于只读状态,NameNode收集DataNode报告,当数据块达到最小副本数即视为安全。待安全数据块达到一定比例后,安全模式自动解除。副本不足的块会被自动复制。数据块位置信息由DataNode维护,NameNode不直接存储这些信息。
2025-07-21 16:39:03
338
原创 MySQL查询状态
线程正在执行查询,并且将其结果都复制到一个临时表中,该状态要么是Group by操作,要么是文件排序操作,或者是union操作,如果这个状态有on disk标记,表示MySQL正在将一个内存临时表放到磁盘上。在一个查询周期中,MySQL任何时刻都有一个状态,该状态可能会变化很多次,可以使用。线程可能在多个状态之间传送数据,或者在生成结果集,或者在向客户端返回数据。线程正在收集存储引擎的统计信息,并生成查询的执行计划。该线程正在等待表锁,行锁不会体现在线程状态中。线程正在执行查询或者正在将结果发送给客户端。
2025-06-24 11:31:44
510
原创 Hadoop RPC 分层设计的哲学:高内聚、低耦合的最佳实践
服务器端处理框架:服务器端处理框架可被抽象为网络IO模型,采用了基于Reactor模式的事件驱动IO模型。函数调用层:主要作用是定位要调用的函数并执行该参数,采用了java反射机制和动态代理实现了函数调用。网络传输层:描述了client和server之间消息传输的方式,基于TCP/IP的socket机制。序列化层:主要作用是将结构化对象转为字节流以便于通过网络进行传输或写入持久存储。
2025-06-24 11:30:11
439
原创 MySQL双写机制
数据库宕机可能导致Innodb出现部分写失效问题,即页面只写入部分数据。虽然重做日志记录了物理操作,但损坏页面的重做无效。为此引入了双写机制:先将脏页复制到内存中的2M doublewrite buffer,再分两次顺序写入共享表空间的2M磁盘区域,并调用fsync同步。通过show global status可监控双写状态。该机制有效防止了部分写失效带来的数据损坏问题。
2025-06-17 18:21:49
1076
原创 Hadoop 版本进化论:从 1.0 到 2.0,架构革命全解析
Hadoop1.x版本由Common、HDFS和MapReduce三部分组成,存在JobTracker资源管理和作业控制耦合、单点故障以及槽位资源分配不均衡等问题。Hadoop2.x版本新增Yarn组件,将资源调度与计算解耦,通过ResourceManager全局资源管理和ApplicationMaster单应用管理提升系统效率。Yarn的引入解决了1.x版本的资源调度瓶颈问题。
2025-06-17 18:18:05
414
1
原创 MySQL优化器
MySQL存储引擎中存在了一个可插拔的优化器OPTIMIZER_TRACE,可以看到内部查询计划的TRACE信息,从而可以知道MySQL内部执行过程。可以在information_schema数据库中的OPTIMIZER_TRACE查看sql执行情况。这里注意一下,我在Navicat中执行时如果两个语句分开执行会导致TRACE中内容为。需要选中两条sql语句一块执行才可以。内容很长,之后在详细说明。
2025-06-11 14:07:27
565
原创 Hadoop 十年:从谷歌论文到全球企业的标配技术
Hadoop是由Apache基金会开发的分布式系统基础架构,其核心组件包括分布式文件系统HDFS和计算框架MapReduce。HDFS具有高容错性、高吞吐量等特点,适合处理超大规模数据;MapReduce为海量数据提供并行计算能力。Hadoop集群由NameNode(元数据管理)、DataNode(数据存储)和SecondaryNameNode(辅助节点)组成。三大发行版本包括Apache基础版、Cloudera企业版和Hortonworks文档优化版。Hadoop优势在于高可用、高扩展、高效和容错性强,适
2025-06-11 14:01:16
547
原创 几个MySQL系统调优工具
基于Java的MySQL / Percona / MariaDB 索引进行插入性能测试工具。一个模块化,跨平台以及多线程的性能测试工具。Percona开发的TPC-C测试工具。几个MySQL系统调优工具。
2025-05-24 22:33:09
710
原创 颠覆传统线程!协程为何成为高并发编程新宠?
协程是对线程做的进一步分割,和当初线程出现的场景差不多,由于进程太过于重量级,创建、调度和上下文切换都需要花费较多的系统资源,为了提升操作系统的并发性,创造出来了线程,线程的创建和切换消耗远远低于进程,但是现在对应用的并发度要求越来越高了,线程的切换也让人觉得有些笨重了,所以协程应运而生。我当时说知道呀,我还在携程上买过火车票呢,然后面试官笑了笑,什么都没有说。不过java原生是不支持协程的,如果要使用协程,需要引入协程框架,如Kilim。Task 协程的载体,使用execute方法来执行任务。
2025-05-24 22:30:51
267
Mycat-server-1.6.7.4-release-20200105164103-mac.tar.gz
2022-05-20
apache-shardingsphere-incubating-4.0.1-sharding-proxy-bin.tar.gz
2022-05-13
java中的强引用软引用问题
2017-05-21
myeclipse报错自动关闭
2017-05-19
myeclipse下编写的jsp中文乱码
2017-04-23
java内部类中的局部变量
2017-05-19
关于JavaScript的事件
2017-04-24
html表格单元格焦点事件问题
2017-04-22
myeclipse中编写html表单
2017-04-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅