- 博客(16)
- 收藏
- 关注
原创 集群如何布置+为什么避免小文件
原有数据量10T,每天增量20G,规划一年内不用增加机器,集群如何布置?数据节点:33台(10+20*365/1000)*3=51Thdfs磁盘存储达到0.8就会很慢,再去掉一些中间数据,51/0.7=65T,每台datanode有2T存储,那么需要33台datanode。元数据节点:3台namenode一般在datanode达到上千台时才考虑水平扩展,所以这里namenode一主一备,journalNode 3 台,zk 3 台,hiveserver2 2台, resourceMana.
2020-06-30 09:35:17 147
原创 面试--项目
1. 介绍一下第一个项目2. 一共有几台机器,各个组件如何配置的3. 每天的数据量,集群存储量为多少?4. 有多少张表,比如,那几张表,有哪些字段?5. 列举几条hive sql语句?统计的指标是什么?多长时间运行一次?有开启什么参数吗?6. 说说订单模块主要的类,主要有什么功能,类与类之间你是如何抽象的?说说下单的流程?7. 项目中遇到了什么难点?8. 为什么要用kafka,你还知道其他的消息队列吗?说说他们之间使用场景的区别?9. 你用到了redis,那你直到memchche吗,他们间使
2020-06-28 14:33:28 121
原创 redis原理的整理
redis是什么redis是一个开源的内存数据存储结构,被用作内存数据库,消息代理和缓存。它提供5种数据结构,分别是string,list,hash,set,sort set,并支持范围查询,事务机制,批量操作,以及数据自动淘汰策略。redis的数据类型当我们每次往数据库中插入一个数据时,其都会为该数据创建一个对象,数据类型一共有五种,其中的编码格式就指定了数据以何种方式存储,每种类型至少有两种编码格式,就比如当数据量较小的时候,hash并不是使用hash表而是ziplist。下面是五种数
2020-06-23 15:27:17 110
原创 Producer生产消息与Consumer消费消息的源码分析
KafkaApis很重要,无论重要,无论是Producer生产消息还是Consumer消费消息的请求,最后都会触发KafkaApis的handle方法
2020-06-17 17:52:35 101
原创 HDFS-DatanodeDescriptor类
DatanodeDescriptor是Namenode中对Datanode的抽象。DatanodeDescriptor -> DatanodeInfo -> DatanodeID我们看一下各个类的实现1.DatanodeIDDatanodeID用于唯一标识一个Datanode,Datanode是通过<ip,port>以及storageId进行标识的,其属性如下2.DatanodeInfo3. DatanodeDescriptorDatanodeDescriptor
2020-06-10 20:53:15 132
原创 HDFS-FSDirectory类
我们需要先了解与FSDirectory类相关的比较重要的类:INodesInPathINodesInPath有两个重要的数据结构,分别是:INode[] inodes byte[][] path我们可以从FSDirectory.resolvePath(FSPermissionChecker pc, String src, boolean resolveLink)观察INodesInPath中这两个数据结构分别代表什么。该方法
2020-06-10 20:17:09 346
原创 HDFS-FSImage类
FSImage类主要由三部分功能,将内存映像持久化到磁盘,将映像文件加载到内存,生成内存命名空间,加载editLog文件到内存命名空间。先看一下映像文件的Format:真正用于存储数据节点信息的是FileSummary,INode和INodeDirectory等都对应一个section.有对应的FileSummary类,其内部有一个List<Section>。相关结构的说明见《Hadoop 2.X HDFS源码剖析》中3.1.4小节关于FSImage类的说明。持久化到磁盘:
2020-06-10 19:27:06 286
原创 HDFS-FSEditLog类
FSEditLog是操作日志文件的入口类,它负责记录日志,创建日志文件,roll日志文件等。FSeditLog本身是一个状态机,比如在roll一个日志文件与新开一个日志文件之间,它的状态是BETWEEN_LOG_SEGMENTSFSEditLog类最重要的字段是journalSet,它在initJournals()方法中初始化journalSet中的journals,逻辑是这样的,通过遍历传入的List<URI>,如果URI对应的是本地目录则创建FileJournalManager,然
2020-06-10 16:50:34 252
原创 三元表达式踩坑
int x = (seen.containsKey(s)==false) ? 0 : seen.get(s);//这样是可以的 int x = seen.containsKey(s)? 0 : seen.get(s);//这样报空指针异常
2020-06-10 11:14:32 309
原创 hdfs数据块间的传输(Sender与DataXceiverServer交互)
详情参见《Hadoop 2.X HDFS源码剖析》4.5节Sender类和DataXceiver类都实现了DataTransferProtocol接口,Sender在Client端,将参数与调用方法序列化,然后通过连接发送到datanode。DataXceiverServer类相当于一个ServerSocket,随着DataNode建立而建立,逻辑很简单,循环accept,接收到一个后便初始化一个Peer(代表一个连接,相当于一个Socket)和DataXceiver,并启动DataXceiver,
2020-06-08 17:36:36 216
原创 java代码编译成字节码的javac命令原来是用java写的
javac命令可以编译java文件,也可以查看字节码文件将java文件编译成字节码文件的功能是用java写的,项目为%JAVA_HOME%\lib\tools\com\sun\tools\javac
2020-06-06 13:51:26 845
原创 hdfs中块池与命名空间相关类的对应关系
datanode如何与namenode进行通信,在datanode端一个BPServiceActor对应一个namenode,它持有一个bpNameNode,实际上就是rpc的一个proxy,与namenode进行通信,一个HDFS集群可以定义多个命名空间,每一个命名空间在Datanode上都有一个对应的块池存储这个命名空间的数据块,这个块池是由一个BPOfferService实例管理的。由于一个命名空间可以定义多个NameNode,所以BPOfferService类需要与多个Namenode通信并
2020-06-05 20:14:58 600
原创 InvocationHandler中的invoke方法实现为什么不能将proxy强转然后调用其相应的方法或者往method.invoke中传入proxy来执行
原因:这两种方法都会造成死循环第一种方式:死循环,然后造成栈溢出代码:public class Dynamic { interface SayHello{ void sayHello(); } static class animal implements SayHello{ @Override public void sayHello() { System.out.println("animal hel
2020-06-05 17:59:49 405
原创 maven如何打带依赖的包
在pom.xml文件中按如下配置 <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.4</version> <configuration>
2020-06-05 13:40:12 269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人