03 2020 档案
hadoop-MapReduce框架原理之InputFormat数据输入
摘要:InputFormat数据输入 1.切片与mapTask并行度决定机制 1.1 问题引出 MapTask的并行度决map阶段的任务处理并发度,进而影响到整个Job的处理速度; 1G的数据,启动八个MapTask,可以提高集群的并发处理能力,那么IK的数据,也启动八个MapTask,会提高集群的性能吗 阅读全文
posted @ 2020-03-31 17:43 wnwn 阅读(345) 评论(0) 推荐(0)
hadoop-序列化
摘要:1.序列化概述 1.1 什么是序列化 序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输; 反序列化就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象; 1.2 为什么要序列化 一般来说,“活的”对象只生存在内存中,关机 阅读全文
posted @ 2020-03-30 18:04 wnwn 阅读(193) 评论(0) 推荐(0)
hadoop-WordCount案例
摘要:1.导入依赖 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> < 阅读全文
posted @ 2020-03-30 16:04 wnwn 阅读(202) 评论(0) 推荐(0)
hadoop-MapReduce概述
摘要:1.MapReduce定义 MapReduce是一个分布式运算程序的编程框架,是用户开发基于hadoop的数据分析应用的核心框架; MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上; 2.MapReduce优缺点 2. 阅读全文
posted @ 2020-03-30 15:42 wnwn 阅读(215) 评论(0) 推荐(0)
工作流引擎-Activiti
摘要:工作流 工作流介绍 工作流就是通过计算机对业务流程自动化执行管理;它主要解决的是“使用多个参与者之间按照某种预定义的规则自动进行传递文档,信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”; 工作流实现方式 在没有专门的工作流引擎之前,我们之前为了实现流程控制,通常的做法就是采用状 阅读全文
posted @ 2020-03-30 13:29 wnwn 阅读(770) 评论(0) 推荐(0)
并发编程面试题
摘要:1.进程和线程还有协程之间的关系 进程:运行起来的程序。进程需要占用系统资源(内存,CPU)。进程是最小的系统资源分配单位,只是给线程提供执行环境。 由于一个进程产生一个进程地址空间,且进程地址空间相互独立,一个进程死亡,其他进程不会受到影响。 线程:LWP(light weight process 阅读全文
posted @ 2020-03-27 18:45 wnwn 阅读(212) 评论(0) 推荐(0)
Happens-before先行发生原则
摘要:简介 从JDK1.5,java使用新的JSR-133内存模型;JSR-133使用happens-before的概念来阐述操作之间的内存可见性;在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么者两个操作之间必须要存在happens-before关系;这里两个操作可以是在一个线程之内,也可以 阅读全文
posted @ 2020-03-27 13:57 wnwn 阅读(462) 评论(0) 推荐(0)
指令重排序
摘要:什么是指令重排序 java语言规范JVM线程内部维持顺序化语义,即只要程序的最终结果与它顺序化情况的结果相等,那么指令的执行顺序可以与代码逻辑不一致,这个过程就叫做执行重排序; 在执行程序时,为了提高性能,编译器和处理器常常会对指令做重排序,重排序分为三种类型: 1.编译器优化的重排序:编译器在不改 阅读全文
posted @ 2020-03-27 13:43 wnwn 阅读(450) 评论(0) 推荐(0)
volatile
摘要:volatile的应用 在多线程并发程序中synchronized和volatile都扮演者着很重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的可见性,能够防止脏读,被volatile关键字修饰的变量,如果值发生了改变,其他线程立刻可见; 可见性的意 阅读全文
posted @ 2020-03-27 13:27 wnwn 阅读(160) 评论(0) 推荐(0)
CAS无锁机制
摘要:1.java内存模型:JMM 在内存模型当中定义一个主内存,所有声明的实例变量都存在于主内存当中,主内存的数据会共享给所有线程,每一个线程有一个块工作内存,工作内存当中主内存数据的副本当更新数据时,会将工作内存中的数据同步到主内存当中; 2.什么是CAS CAS:Compare and Swap,即 阅读全文
posted @ 2020-03-26 13:36 wnwn 阅读(180) 评论(0) 推荐(0)
java锁的深度化-重入锁,读写锁,乐观锁,悲观锁
摘要:1.重入锁 目的:避免死锁的现象 锁作为并发共享数据,保证一致性的工具,在java平台有多种实现synchronized(重量级)和ReentrantLock(轻量级)等等,这些已经写好提供的锁为我们开发提供了便利; 重入锁:也叫作递归所,指的是同一线程外层函数获得锁之后,内层递归函数仍然有取该锁的 阅读全文
posted @ 2020-03-25 13:18 wnwn 阅读(247) 评论(0) 推荐(0)
hadoop-HDFS 2.X新特性
摘要:1.集群间数据拷贝 1.1 scp实现两个远程主机之间的文件复制 scp -r hello.txt root@hadoop103:/user/luomk/hello.txt // 推 push scp -r root@hadoop103:/user/luomk/hello.txt hello.txt 阅读全文
posted @ 2020-03-24 17:55 wnwn 阅读(153) 评论(0) 推荐(0)
hadoop-DataNode工作机制
摘要:1.DataNode工作机制 1.一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的效验和,以及时间戳; 2.DataNode启动后向NameNode注册,通过后,周期性的向NameNode上报所有的块信息; 3.心跳是每三秒一 阅读全文
posted @ 2020-03-24 17:19 wnwn 阅读(298) 评论(0) 推荐(0)
hadoop-NameNode和SecondaryNameNode
摘要:1.NN和2NN工作机制 第一阶段:NameNode启动 (1) 第一次启动NameNode格式化后,创建fsimage和edits文件,如果不是第一次启动,直接加载编辑日志和镜像文件到内存; (2) 客户端对元数据进行增删改的请求; (3) NameNode记录操作日志,更新滚动日志; (4) N 阅读全文
posted @ 2020-03-24 11:58 wnwn 阅读(295) 评论(0) 推荐(0)
并发队列
摘要:在并发队列上JDK提供了两种实现:一个是以ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue; ConcurrentLinkedQueue ConcurrentLinkedQueue:是一个适用于高并发场景 阅读全文
posted @ 2020-03-23 14:58 wnwn 阅读(196) 评论(0) 推荐(0)
Callable的Future模式
摘要:Callable 在java中,创建线程一般有两种方式,一种是继承Thread类,一种是实现Runnable接口。然而,这两种方式的缺点是在线程任务执行结束后,无法获取执行结果。我们一般只能采用共享变量或共享存储以及线程通信的方式实现获得任务结果的目的; 不过,在java中,也提供了使用Callab 阅读全文
posted @ 2020-03-23 13:55 wnwn 阅读(179) 评论(0) 推荐(0)
hadoop-HDFS的数据流
摘要:HDFS写数据流程 1.客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已经存在,父目录是否存在; 2.NameNode返回是否可以上传文件; 3.客户端请求一个block上传到指定的那个DataNode服务器上; 4.Nam 阅读全文
posted @ 2020-03-20 19:31 wnwn 阅读(133) 评论(0) 推荐(0)
hadoop-HDFS客户端API操作
摘要:API操作HDFS 1.上传文件 /*上传文件*/ @Test public void put() throws IOException, URISyntaxException, InterruptedException { //用于配置HDFS相关的参数 Configuration configu 阅读全文
posted @ 2020-03-20 18:52 wnwn 阅读(228) 评论(0) 推荐(0)
hadoop-HDFS的Shell操作
摘要:1.基本语法 bin/hadoop fs 具体命令 bin/hdfs dfs 具体命令 2.命令大全 [root@master hadoop]# bin/hadoop fs Usage: hadoop fs [generic options] [-appendToFile <localsrc> .. 阅读全文
posted @ 2020-03-20 16:02 wnwn 阅读(229) 评论(0) 推荐(0)
hadoop-HDFS概述
摘要:HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理。HDFS只是分布式文件管理系统中的一种; HDFS是什么 HDFS是基于java的分布式文件系统,允许您 阅读全文
posted @ 2020-03-20 11:42 wnwn 阅读(195) 评论(0) 推荐(0)
并发工具类
摘要:1.CountDownLatch CountDownLatch是一个同步计数器,初始化的时候传入需要计数的线程等待数,可以是需要等待执行完成的线程数,或者大于; 作用:用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。是一组线程等待其他的线程完成工作以后在执行,相当于加强 阅读全文
posted @ 2020-03-19 13:35 wnwn 阅读(196) 评论(0) 推荐(0)
线程池
摘要:1.线程池 1.1 什么是线程池 java中的线程池是运用场景最多的并发框架,几乎所以需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来三个好处: 第一:降低资源消耗:通过复利用已创建的线程降低线程创建和销毁造成的消耗; 第二:提高相应程序:当任务达到时,任务可以不 阅读全文
posted @ 2020-03-19 13:34 wnwn 阅读(177) 评论(0) 推荐(0)
hadoop-2.8.0 完全分布式运行模式
摘要:1.虚拟机准备 准备三台客户机(安装JDK8,关闭防火墙,静态ip,主机名称) 修改etc/hosts文件 192.168.138.102 hadoop102 192.168.138.103 hadoop103 192.168.138.104 hadoop104 2.编写集群分发脚本xsync 2. 阅读全文
posted @ 2020-03-19 04:24 wnwn 阅读(310) 评论(0) 推荐(0)
hadoop-2.8.0 伪分布式运行模式
摘要:概述 伪分布式模式下,hadoop将所有进程运行于同一台主机上,但此时hadoop将使用分布式文件系统,而且各jobs也是由JobTracker服务管理的独立进程。同时,由于伪分布式的hadoop集群只有一个节点,因此HDFS的块复制将限制为单个副本,器master和slave也都将运行于本地主机。 阅读全文
posted @ 2020-03-18 20:07 wnwn 阅读(309) 评论(0) 推荐(0)
hadoop-2.8.0 本地运行模式
摘要:1.配置独立操作 独立操作默认情况下,Hadoop被配置为以非分布式模式作为单个java进程运行,这个对调式很有用; 下面的实例复制要用作输入的未打包conf目录,然后查找并显示给定正则表达式的每个匹配项。输出被写入给定的输出目录; 1.1 创建一个文件夹名为input mkdir input // 阅读全文
posted @ 2020-03-18 17:07 wnwn 阅读(178) 评论(0) 推荐(0)
Hadoop-2.8.0 运行环境搭建
摘要:1.安装JDK 1.1 使用【rpm -qa | grep jdk】命令查看目前版本的JDK; 1.2 使用【rpm -e --nodeps】删除当前系统自带的JDK 2.1 【rpm -e --nodeps java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86 阅读全文
posted @ 2020-03-18 17:06 wnwn 阅读(205) 评论(0) 推荐(0)
Hadoop介绍
摘要:hadoop是什么 hadoop是一个由Apache基金会所开发的分布式基础架构,用户在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储; hadoop实现了一个分布式文件系统,简称HDFS,HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上;而且它提供高吞吐 阅读全文
posted @ 2020-03-18 17:05 wnwn 阅读(244) 评论(0) 推荐(0)
并发编程-问题解决
摘要:概述 串行:一个线程在处理操作; 并行:多个线程在处理操作; 并发编程:在多线程环境下,应用程序的执行; 并发编程的目的:同分运用到资源,提供程序的效率 什么情况下用到并发编程: 1.在线程阻塞时,导致应用程序停止; 2.处理任务时间过长,可以创建子任务,来进行分段处理; 3.间断任务执行; 并发编 阅读全文
posted @ 2020-03-18 14:48 wnwn 阅读(177) 评论(0) 推荐(0)
ConcurrentHashMap底层实现
摘要:1.ConcurrentHashMap和HashTable区别 ConcurrentHashMap融合了hashtable和hashMap二者的优势; hashTable是做了同步的,hashMap没有同步,所以hashMap在单线程情况下效率高,hashTable在多线程情况下,同步操作能保证程序 阅读全文
posted @ 2020-03-17 15:16 wnwn 阅读(195) 评论(0) 推荐(0)
HashMap底层源码剖析
摘要:1.介绍HashMap底层用到的数据结构 数组+单向链表+红黑树 数组:数组每一项都是一个链表,其实就是数组和链表的结合体 单向链表:当法神hash碰撞时,首先会找到数组对应位置,然后1.8采用尾插入法(1.7采用头插入法),形成一个单项链表结构 红黑树:当数组中每项的链表长度大于8时,会转换为红黑 阅读全文
posted @ 2020-03-17 14:30 wnwn 阅读(177) 评论(0) 推荐(0)
双列集合map-1
摘要:1.了解map集合,map集合都有哪些实现? 1.1 hashMap 1.2 hashTable 1.3 LinkedHashMap 1.4 TreeMap 1.5 ConcurrentHashMap 2.HashMap和HashTable之间的区别? 2.1 HashMap:底层基于数组+链表(红 阅读全文
posted @ 2020-03-16 14:16 wnwn 阅读(156) 评论(0) 推荐(0)
单列集合List
摘要:1.Vector和ArrayList以及LinkedList区别和联系,以及分别的应用场景 线程安全 Vector:与ArrayList一样,也是通过数组实现的,不同的它支持线程的同步,底层采用synchronized同步方法进行加锁,所以线程安全;即某一时刻只有一个线程能够写Vector,避免多线 阅读全文
posted @ 2020-03-13 14:54 wnwn 阅读(195) 评论(0) 推荐(0)
kafka-Eagle的安装
摘要:kafka Eagle是什么 kafka Eagle是一款控制和管理Apache Kafka的完全开源系统,它提供了完善的管理页面,多方面的去管理和可视化kafka集群的一些信息,例如Broker详情,性能指标趋势,Topic集合,消费者信息等; 1.修改kafka的启动命令 修改kafka-ser 阅读全文
posted @ 2020-03-12 17:02 wnwn 阅读(535) 评论(0) 推荐(0)
kafka-自定义拦截器(interceptor)
摘要:1.拦截器原理 producer拦截器(interceptor)是在kafka0.10版本被引入的,主要用于实现clients端的制定化控制逻辑; 对于producer而言,interceptor是的用户在消息发送前以及producer回调逻辑前有机会对消息做一些定制化需求,比如修改消息同时,pro 阅读全文
posted @ 2020-03-11 15:33 wnwn 阅读(699) 评论(0) 推荐(0)
kafka-Consumer API
摘要:1.简单消费者(自动提交) 1.1 编写消费者代码 package com.wn.consumer; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.C 阅读全文
posted @ 2020-03-10 22:31 wnwn 阅读(353) 评论(0) 推荐(0)
kafka-Producer API
摘要:1.消息发送流程 kafka的producer发送消息采用的是异步发送的方式。在消息发送的过程中,涉及到了两个线程——main线程和Sender线程,以及一个线程共享变量——RecordAccumulator。main线程将消息发送给RecordAccumulator,Sender线程不断从Reco 阅读全文
posted @ 2020-03-10 17:29 wnwn 阅读(291) 评论(0) 推荐(0)
代码优化
摘要:优化,不仅仅是在运行环境进行优化,还需要在代码本身做优化,如果代码本身存在性能问题,那么在其他方面怎么优化也不可能达到效果最优的; 1.尽可能使用局部变量 调用方式时传递的参数以及在调用中床架的临时变量都保存在栈中速度较快,其他变量,如静态变量,实例变量等,都在堆中创建,速度较慢。另外,栈中创建的变 阅读全文
posted @ 2020-03-09 22:31 wnwn 阅读(175) 评论(0) 推荐(0)
JVM字节码
摘要:前面通过tomcat本身的参数以及JVM的参数对tomcat的参数对tomcat做了优化,其实要想将应用程序跑的更快,效率更高,除了对tomcat容器以及JVM优化外,应用程序代码本身如果写的效率不高,那么也是不行的,所以,对于程序本身的优化也很重要; 对于程序本身的优化,可以借鉴很多前辈们的经验, 阅读全文
posted @ 2020-03-09 22:04 wnwn 阅读(265) 评论(0) 推荐(0)
tomcat优化-调整JVM参数进行优化
摘要:下面,测试通过JVM参数进行优化,为了测试一致性,依然将最大线程数设置为500,启用nio2运行模式; 1.设置并行垃圾收集器 JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms64m -Xmx512m -XX:+PrintGCDetai 阅读全文
posted @ 2020-03-09 20:49 wnwn 阅读(299) 评论(0) 推荐(0)
tomcat8优化-调整tomcat参数进行优化
摘要:1.禁用APJ服务 1.1 修改conf目录下的,service.xml文件 1.2 查看报告 可以看到,禁用AJP服务后,吞吐量有所提升; 当然了,测试不一定准确,需要多册测试才能看出是否有所提升; 2.设置线程池 通过设置线程池,调整线程池相关的参数进行测试tomcat的性能 2.1 最大线程数 阅读全文
posted @ 2020-03-09 14:50 wnwn 阅读(549) 评论(0) 推荐(0)
tomcat8优化-使用Apache JMeter进行测试
摘要:部署测试用的java web项 1.1 需要有mysql环境 rpm -qa | grep -i mysql 1.2 找一个sql脚本文件,在Linux服务器上执行 cat dashboard.sql | mysql ‐uroot ‐proot 1.3 执行成功后,数据中有三张表 1.4 部署web 阅读全文
posted @ 2020-03-09 13:20 wnwn 阅读(213) 评论(0) 推荐(0)
tomcat8优化-tomcat配置优化
摘要:部署安装tomcat 1.1 下载并安装 1.2 解压文件 tar -zxvf apache-tomcat-8.5.34.tar.gz 1.3 修改Tomcat的管理用户配置文件 1.3.1 进入Tomcat的conf目录下 cd apache-tomcat-8.5.34/conf/ 1.3.2 修 阅读全文
posted @ 2020-03-09 11:52 wnwn 阅读(446) 评论(0) 推荐(0)
可视化GC日志分析工具
摘要:1.GC日志输出参数 前面通过-XX:+PrintGCDetails可以对GC日志进行打印,我们就可以在控制台查看,这样虽然可以查看GC的信息,但是并不直观,可以借助于第三方的GC日志分析工具进行查看。 在日志打印输出涉及到的参数如下: -XX:PrintGC 输出GC日志 -XX:+PrintGC 阅读全文
posted @ 2020-03-04 15:40 wnwn 阅读(888) 评论(0) 推荐(0)
JVM垃圾收集器以及内存分配
摘要:概述 在JVM中,实现了多种垃圾收集器,包括:串行垃圾收集器,并行垃圾收集器,CMS(并发)垃圾收集器,G1垃圾收集器; 1.串行垃圾收集器 串行(Serial)垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作,并且java应用中的所有线程都要暂停,等待垃圾回收的完成。这种现象 阅读全文
posted @ 2020-03-04 14:44 wnwn 阅读(184) 评论(0) 推荐(0)
VisualVM工具的使用
摘要:概述 VisualVM能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪一个对象分配出来的); VisualVM使用简单,几乎0配置,功能还是比较丰富的,几乎包括了其他JDK自带命令的所有功能; 内存信息; 线程信息; 阅读全文
posted @ 2020-03-03 19:08 wnwn 阅读(317) 评论(0) 推荐(0)
jstack的使用
摘要:概述 有些时候我们需要查看下JVM中的线程执行情况,比如:发现服务器的CPU的负载突然增高了,出现了死锁,死循环等; 由于程序是正常运行的,没有任何的输出,从日志方面也看不出问题,所以就需要看下JVM的内部线程的执行情况,然后在进行分析查找出原因; 这个时候,就需要借助jstack命令了,jstac 阅读全文
posted @ 2020-03-03 17:56 wnwn 阅读(307) 评论(0) 推荐(0)
内存溢出的定位与分析
摘要:概述 内存溢出在实际的生产环境中经常会遇到,比如:不断的将数据写入到一个集合中,出现了死循环,读取超大的文件等等,都可能会造成内存溢出; 如果出现了内存溢出,首先我们需要定位到发生内存溢出的环节,并且进行分析,是正还是非正常情况,如果是正常的需求,就应该考虑加大内存的设置,如果是非正常需求,那么就要 阅读全文
posted @ 2020-03-03 16:47 wnwn 阅读(544) 评论(0) 推荐(0)
jmap的使用以及内存溢出分析
摘要:前面通过jstat可以对JVM对的内存进行统计分析,而jmap可以获取到更加详细的内容,如:内存使用情况的汇总,对内存溢出的定位与分析。 1.查看内存使用情况 使用命令【jmap -heap 进程号】 E:\北大青鸟\Y2\JVM>jmap -heap 17656 Attaching to proc 阅读全文
posted @ 2020-03-03 15:32 wnwn 阅读(1531) 评论(0) 推荐(0)
JVM的内存模型
摘要:1.JDK1.7的堆内存模型 Yong年轻代 Yong区划分为三个部分,Eden区和两个大小严格相同的survivor区,其中,Survivor区间中,某一时刻只有其中一个是被使用的,另外一个留做垃圾收集时复制对象用,在Eden区间变满的时候,GC就会将存活的对象移到空闲的survivor区间中,根 阅读全文
posted @ 2020-03-03 13:31 wnwn 阅读(172) 评论(0) 推荐(0)
JVM运行参数
摘要:JVM的运行参数 在JVM中有很多的参数可以进行设置,这样可以让JVM在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。 三种参数类型 1.标椎参数 -help -version 2.-X参数(非标椎参数) -Xint -Xcomp 3.-XX参数(使用率较高) -XX:newSize -X 阅读全文
posted @ 2020-03-03 13:08 wnwn 阅读(348) 评论(0) 推荐(0)
kafka-高效读写数据+zookeeper作用+事务
摘要:kafka高效写数据 1.顺序写磁盘 kafka的producer生产数据,要写入到log文件中,写的过程是一直追加到文件末端,为顺序写,官网有数据表明,同样的磁盘,顺序写能到600M/s,而随机写只有100M/s,这与磁盘的机械机构有关,顺序写之所以快,是因为其省去了大量磁盘寻址的时间; 2.零复 阅读全文
posted @ 2020-03-02 16:31 wnwn 阅读(358) 评论(0) 推荐(0)
kafka消费者
摘要:1.消费方式 consumer采用pull(拉)模式从broker中读取数据。 push(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。它的目标是尽可能的以最快速度传递消息,但是这样很容易造成consumer来不及处理消息。典型的表现就是拒绝服务以及网络拥塞,而pul 阅读全文
posted @ 2020-03-02 16:17 wnwn 阅读(256) 评论(0) 推荐(0)