- 博客(40)
- 收藏
- 关注
原创 JUC面试题汇总
1. Synchronized与Lock的区别Synchronized能实现的功能Lock都可以实现,而且Lock比Synchronized更好用,更灵活。Synchronized可以自动上锁和解锁;Lock需要手动上锁和解锁2. Runnable和Callable的区别Runnable接口中的方法没有返回值;Callable接口中的方法有返回值Runnable接口中的方法没有抛出异常;Callable接口中的方法抛出了异常Runnable接口中的落地方法是call方法;Callable接
2021-02-25 21:12:10
385
原创 JVM面试题汇总
1. JVM内存分哪几个区,每个区的作用是什么?java虚拟机主要分为以下几个区:方法区:a. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载b. 方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。c. 该区域是被线程共享的。d. 方法区里有一个运行时常量池,用于存放静态编译产生的字面量和符号引用。该常量池具有动态性,也就是说常量并不一定是编译时确定,运行时生成的常量也会存在
2021-02-25 21:10:21
220
原创 HDFS-HA
一、HDFS-HA故障转移机制考虑到edits编辑日志如果放在一台active的NamNode上话,如果此节点挂掉,另外的NameNode无法获取到数据,所以引出了Edits文件管理系统:qjournal集群。故障转移流程NameNode正常运行时,向去journal集群获取edits,各个NameNode节点都有一个独立的Zookeeper Failover controller(ZKFC),active的NameNode的ZKFC在Zookeeper中占用一个临时节点,其余的ZKFC通过监视此
2021-02-25 20:47:40
326
原创 Zookeeper小结
一、什么是Zookeeper打开Apache zookeeper的官网,一句话定义zookeeper:Apache ZooKeeper致力于开发和维护可实现高度可靠的分布式协调的开源服务器。zookeeper是个服务,服务的对象我们都称为客户端,在大数据生态里面的客户,hadoop、hbase、hive…组件都是分布式部署,这些组件们利用zookeeper的服务做了一些维持自身平衡的事情,比如集群管理、master选举、消息发布订阅、数据存储、分布式锁等等。作为整个集群的心脏的存在,zookeeper本
2021-02-25 20:15:26
200
原创 hive面试题汇总
1. Hive和数据库比较Hive 和数据库除了拥有类似的查询语言,再无类似之处。1)数据存储位置Hive 存储在 HDFS 。数据库将数据保存在块设备或者本地文件系统中。2)数据更新Hive中不建议对数据的改写。而数据库中的数据通常是需要经常进行修改的,3)执行延迟Hive 执行延迟较高。数据库的执行延迟较低。当然,这个是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive的并行计算显然能体现出优势。4)数据规模Hive支持很大规模的数据计算;数据库可以支持的数据
2021-02-25 16:26:15
578
原创 Java面试题汇总
一、HashMap1.存储结构的理解Map中的key:无序的、不可重复的,使用Set存储所的key —> key所在的类要重写equals()和hashCode() (以HashMap为例)Map中的value:无序的、可重复的,使用Collection存储所的value —>value所在的类要重写equals()一个键值对:key-value构成了一个Entry对象。Map中的entry:无序的、不可重复的,使用Set存储所的entry2.常用方法添加:put(Obje
2021-02-25 16:19:49
176
2
原创 基于MapReduce计算TopN
一、项目需求对上述用户流量表进行处理,输出总流量top10的数据二、项目梳理1、大致流程项目设计分为如下类:FlowBean类:封装用户数据,并定义数据比较方式Mapper类:将从文件读入的每行数据按格式分隔后存入FlowBean输出Comparator类:设置分组比较器,将所有数据输出到一个ReduceReducer类:将从Map端读取到的数据取top10,输出到目标文件2、详细流程首先定义FlowBean,用来封装用户数据(手机号,上行流量,下行流量),还要实现WriteCom
2021-02-24 21:58:03
780
1
原创 Hadoop面试题汇总
1.Hadoop常用端口号dfs.namenode.http-address:9870dfs.datanode.http-address:9864SecondaryNameNode辅助名称节点端口号:9868dfs.datanode.address:9866fs.defaultFS:9820yarn.resourcemanager.webapp.address:8088历史服务器web访问端口:198882.Hadoop配置文件以及简单的Hadoop集群搭建(1)配置文件:core-
2021-02-23 23:43:57
370
原创 基于MapReduce实现PageRank算法
一、什么是PageRankPageRank,又称网页排名、谷歌左侧排名,是一种由搜索引擎根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。二、实现公式对于一个页面A,那么它的PR值为:R(A) 是页面A的PR值PR(Ti)是页面Ti的PR值,在这里,页面Ti是指向A的所有页面中的某个页面C(Ti)是
2021-02-23 22:17:42
826
1
原创 hive存储压缩与优化
一、习题--有哪些顾客连续两天来过我的店--先排号select *, row_number() over(partition by name order by orderdate) rnfrom business;--求日期相减select *, date_sub(orderdate, rn) tempfrom t1;--求连续两天来过的select name, count(*) cfrom t2group b
2021-02-17 15:26:20
136
原创 hive函数
一、常用函数--nvl空字段赋值select comm, nvl(comm, -1) from emp;--case when--统计不同部门男女各有多少人select dept_id, count(*) total, sum(case sex when '男' then 1 else 0 end) male, sum(case sex when '女' then 1 else 0 end) femalefrom emp_sexgroup by
2021-02-17 15:20:43
193
原创 hive之DML
一、基本查询--建立员工表create table if not exists emp(empno int,ename string,job string,mgr int,hiredate string, sal double, comm double,deptno int)row format delimited fields terminated by '\t';--建立部门表create table if not exists dept(deptno int,dname
2021-02-17 15:15:53
129
原创 hive之DDL
一、库的DDL--建库CREATE DATABASE [IF NOT EXISTS] database_name[COMMENT database_comment][LOCATION hdfs_path][WITH DBPROPERTIES (property_name=property_value, ...)];--例create database testcomment "Just for test"location '/test.db'with dbproperties("aaa
2021-02-17 15:04:53
106
原创 浅谈Yarn
一、Yarn的架构二、作业提交流程1> 作业提交client调用job.waitForCompletion方法,向集群提交MapReduce作业client向ResourceManager申请一个ApplicationRM给Client返回该job资源的提交路径和作业idClient提交jar包、切片信息和配置文件到指定的资源提交路径Client提交资源完后,向RM申请运行MRAppMaster2> 作业初始化当RM收到Client的请求后,将该job添加到容量调度器中
2021-02-17 12:45:23
741
原创 浅谈MapReduce
一、MR的编写1. MR的编程规范MR的编程只需要将自定义的组件和系统默认组件进行组合,组合之后运行即可编程步骤:Map阶段的核心处理逻辑需要编写在Mapper中Reduce阶段的核心处理逻辑需要编写在Reducer中将编写的Mapper和Reducer进行组合,组合成一个Job对Job进行设置,设置后运行2. MapperMapper是MapTask中负责Map阶段核心运算逻辑的类继承Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>K
2021-02-17 09:38:13
172
原创 MapReduce工作流程
1、Mapper的map()方法传来的<k,v>数据会先进入环形缓冲区kvbuffer(内存中首尾相连的数据结构,环形缓冲区由数据区和索引区组成),当kvbuffer中的数据达到80%,就会发生溢写。2、溢写前,kvbuffer会对缓冲区内的数据进行快排,先按分区编号排序,再按map的key排序。(排序只会改变索引区索引的顺序,不会改变数据区的数据)3、溢写多次,就会产生多个磁盘文件file.out,和索引文件file.out.index。4、多个溢写文件会合并成一个文件(通过归并排序).
2021-02-17 07:36:55
8326
原创 浅谈HDFS
一、HDFS写数据流程1)客户端通过DistributedFileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否存在,父目录是否存在,是否有写权限。2)NameNode返回是否可以上传。3)客户端请求上传第一个Block。4)NameNode返回存储块的位置信息(存储节点数取决于文件的副本数)5)客户端通过FSDataOutputStream模块请求与DataNode1建立数据传输通道,dn1收到请求会继续调用dn2,dn2调用dn3,直至通信通道建立完成。6
2021-02-16 10:39:52
146
原创 Shell入门
一、Shell中的变量1. $n基本语法2. $#基本语法$#(功能描述:获取所有输入参数个数,常用于循环)。3. $*基本语法$*(功能描述:这个变量代表命令行中所有的参数,把所有的参数看成一个整体)4.$@基本语法$@(功能描述:这个变量也代表命令行中所有的参数,不过他把每个参数区分对待)5.$?基本语法$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行
2021-01-31 17:31:44
106
原创 GC垃圾回收
一、GC概述JVM在进行GC时,并非每次都对Yong区、Old区、Perm区这三个内存区域一起回收的,大部分时候回收的都是指新生代。因此GC按照回收的区域又分了两种类型,一种是普通GC(minor GC),一种是全局GC(major GC / Full GC)普通GC(minor GC):只针对新生代区域的GC。 全局GC(major GC or Full GC):针对年老代的GC,偶尔伴随对新生代的GC以及对永久代的GC。 二、Minor GC和Full GC的区别普通GC(minor G
2020-05-31 22:58:51
162
原创 浅谈HDFS
一、块概念1. 概念HDFS的本质是一个文件系统,特点是分布式,需要在多台机器启动多个NN,DN进程组成一个分布式系统HDFS不支持对一个文件的并发写入,也不支持对文件的随机修改,不适合存储小文件(存储小文件时会降低NN的服务能力)2. HDFS的块大小块大小可以通过hdfs-site.xml中的dfs.blocksize进行配置,如果不配置,那么在hadoop1.x时,dfs.blocksize=64M,在hadoop2.xdfs.blocksize=128M默认值为12
2020-05-31 21:02:44
301
原创 HDFS的读写流程
一、块概念1. 概念HDFS的本质是一个文件系统,特点是分布式,需要在多台机器启动多个NN,DN进程组成一个分布式系统HDFS不支持对一个文件的并发写入,也不支持对文件的随机修改,不适合存储小文件(存储小文件时会降低NN的服务能力)2. HDFS的块大小块大小可以通过hdfs-site.xml中的dfs.blocksize进行配置,如果不配置,那么在hadoop1.x时,dfs.blocksize=64M,在hadoop2.xdfs.blocksize=128M默认值为12
2020-05-30 22:50:00
155
原创 使用Java客户端操作HDFS
1. 参数说明FileSystem: 文件系统的抽象基类① FileSystem的实现取决于fs.defaultFS的配置 ② 有两种实现:LocalFileSystem: 本地文件系统 fs.defaultFS=file:///DistributedFileSystem: 分布式文件系统 fs.defaultFS=hdfs://xxx:9000③ 声明用户身份:FileSystem fs = FileSystem.get(new URI(“hdfs://hadoop101:9000
2020-05-28 23:07:49
283
原创 完全分布式集群的搭建
一、节点规划Hadoop中的进程需要在多台机器运行,并且HDFS需要1个NN+N个DN(+n个2nn)YARN需要1个RM+N个NM为了避免单点故障,NN和RM建议分散到多台机器。(分配时注意负载均衡)以如下规划为例:hadoop101hadoop102hadoop103DNDNDNNMNMNMNNRM2NN二、准备工作克隆三台虚拟机a)配置每台机器的ip地址、网卡等b)在每台机器的/etc/hosts中配置集群所有机器的ip和主机
2020-05-28 22:33:42
285
原创 HDFS和MapReduce的安装和启动
一、 HDFSHDFS(hadoop distributed filesystem),他的功能是用来完成大数据的存储。HDFS的运行模式有两种:本地模式和分布式模式,其取决于参数: fs.defaultFS=file:///(默认)fs.defaultFS在core-default.xml中本地模式在本机上使用HDFS,使用的就是本机的文件系统修改参数:fs.defaultFS=file:///分布式模式要使用的文件系统是一个分布式的文件系统。一个分布式的文件系统,必须由NN,DN等若干
2020-05-26 12:22:03
510
原创 Hadoop的安装
一、安装HadoopHadoop运行的前提是本机已经安装了JDK,配置JAVA_HOME变量在Hadoop中启动多种不同类型的进程例如NN,DN,RM,NM,这些进程需要进行通信。在通信时,常用主机名进行通信。 需要在集群的每台机器上,配置集群中所有机器的host映射。配置:Linux: /etc/hostsWindows: C:\Windows\System32\drivers\etc\hosts不配报错:DNS映射异常,HOST映射异常注意权限hadoop框架在
2020-05-26 12:00:23
271
原创 大数据常用框架简介
一、Hadoop1.HadoopHadoop的初衷是采用大量的廉价机器,组成一个集群!完成大数据的存储和计算!2.hadoop中的组件hadoop 1.xHDFS: 负责大数据的存储Common: HDFS和MR共有的常用的工具包模块MapReduce: 负责计算,负责计算资源的申请的调度完成大数据的计算①写程序,程序需要复合计算框架的要求。java---->main----->运行MapReduce(编程模型)----->Map–Reducer②运行程序,申请计
2020-05-25 23:01:46
1754
原创 Shell指令
一、shell简介1.shell是什么Linux操作系统的核心是kernal(内核),当应用程序在执行时,需要调用计算机硬件的cpu、内存等资源,程序将指令发送给内核执行。为了防止程序发送一些恶意指令导致损坏内核,在内核和应用程序接口之间,设置一个中间层,称为shell。shell: 一个可以解释shell规定的语法命令的解释器。解释器负责将应用程序发送的指令,进行检查,合法后交给内核解释执行,并返回结果。shell命令: shell解释器要求的指定语法编写的命令。shell脚本: 多条s
2020-05-25 22:49:45
430
原创 浅谈JVM
一、JVM体系结构概述1.JVM的位置JVM是运行在操作系统之上的,它与硬件没有直接的交互2.类加载器ClassLoader负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。加载器分为启动类加载器,扩展类加载器,应用程序类加载器和用户自定义类加载器:启动类加载器(Bootstrap)C++扩展类加载器(Extension)Java应用程序类加载器(AppCla
2020-05-22 22:43:02
208
原创 MySQL高级
一、MySQL逻辑架构1.连接层最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。2.服务层2.1 Management Serveices & Utilities: 系统管理和控制工具2.2 SQL Int
2020-05-20 11:06:15
239
原创 07-异常处理
一、异常1.异常的体系结构java.lang.Throwable |-----java.lang.Error:一般不编写针对性的代码进行处理。 |-----java.lang.Exception:可以进行异常的处理 |------编译时异常(checked) |-----IOException |-----FileNotFoundException |----...
2020-04-28 14:25:45
100
原创 08-多线程
一、线程1.说明1. 线程,是程序内部的一条执行路径。2. 如果一个进程同一时间并行执行多个线程,则为支持多线程。3。 线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(pc),线程切换的开销小。4. 一个进程中的多个线程共享相同的内存单元/内存地址空间它们从同一堆中分配对象,可以访问相同的变量和对象。这就使得线程间通信更简便、高效。但多个线程操作共享的系统资源可能就会带...
2020-04-28 14:07:25
252
原创 09-Java常用类
一、String类java.lang.String1.说明String:字符串,使用一对""引起来表示。1.String声明为final的,不可被继承2.String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小3.String内部定义了final char[] value用于存储字符串数据4.通过字面量的方...
2020-04-27 21:44:16
148
原创 10-枚举类&注解
一、枚举类1.说明枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类当需要定义一组常量时,强烈建议使用枚举类如果枚举类中只一个对象,则可以作为单例模式的实现方式。2.自定义枚举类//自定义枚举类class Season{ //1.声明Season对象的属性:private final修饰 private final String seasonName;...
2020-04-27 20:57:55
155
原创 16-Java8新特性
一、Lambda表达式1.基本语法1.举例: (o1,o2) -> Integer.compare(o1,o2);2.格式: -> :lambda操作符 或 箭头操作符 ->左边:lambda形参列表 (其实就是接口中的抽象方法的形参列表 ->右边:lambda体 (其实就是重写的抽象方法的方法体2.语法格式的6种情况语法格式一:无参,...
2020-04-26 10:57:23
290
原创 15-反射
一、反射的概述1.反射的理解Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。(框架 = 反射 + 注解 + 设计模式。)2.反射的动态性@Testpublic void test2(){ for(int i = 0;i < 100;i++){ ...
2020-04-25 22:14:05
130
原创 14-Java网络编程
一、InetAddress类的使用1.实现网络通信需要解决的两个问题如何准确的定位网络上的一台或多台主机,如何定位主机上的特定的应用找到主机后如何可靠高效地进行数据传输2.网络通信的两个要素IP和端口号(对应问题1)提供网络通信协议:TCP/IP参考模型(应用层、传输层、网络层、物理+数据链路层)(对应问题2)3.通信要素一:IP和端口号3.1 IP的理解IP:唯一的标...
2020-04-24 10:23:21
191
原创 13-IO流
一、File类1.理解File类的一个对象,代表一个文件或一个文件目录(即文件夹)File类声明在java.io包下File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。File类的对象通常会作为参数传递到流的构造器中,指明读取或写入的“终点”。2.File的实例化...
2020-04-24 09:38:21
156
原创 12-泛型
一、泛型的理解1.泛型的概念所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口),用这个类型声明变量、创建对象时确定(即传入实际的类型参数,也称为类型实参)。2.泛型的引入背景集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计...
2020-04-21 11:46:23
135
原创 11-Java集合
一、数组与集合1.集合与数组存储数据概述1>集合、数组都是对多个数据进行存储操作的结构,简称Java容器。2>说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中)2.数组存储的特点1>一旦初始化以后,其长度就确定了。2>数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。3.数组存储的...
2020-04-18 22:43:33
211
原创 刷题记
Leetcode刷题记两数之和class Solution { public int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length; i++) { for (int j = i + 1; j< nums.length; j++) { ...
2020-02-29 11:53:13
241
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人