ThousandHu`s blog

千里之行 始于足下


  • 首页

  • 归档

  • 标签

深入解析yarn架构设计与技术实现1-基本概念

发表于 2016-06-21
hadoop代码结构 hadoop-common-project: hadoop基础库(rpc,metrics,counter等) hadoop-mapreduce-project: mr框架 hadoop-hdfs-porject: hdfs的实现 hadoop-yarn-project: yarn的实现 hadoop-yarn-api: 给出了yarn内部涉及的四个主要rpc协议的java声明和ProtoBuffers定义 hadoop-yarn-common: yarn底层库的实现(事件库,服务库,状态机库,web界面库) hadoop-yarn-applications: distri ...
阅读全文 »

深入理解java虚拟机-虚拟机类加载机制

发表于 2016-06-18
7.2 类加载的时机加载 -》 验证 -》 准备 -》 解析 -》 初始化 -》 使用 -》 卸载 其中验证,准备,解析属于linking阶段。为了支持java语言的动态绑定,解析可能在初始化之后执行 有5种情况必须立即对类进行初始化: 遇到new,getstatic,putstatic或者invokestatic这四条字节码时,如果类没有被初始化则会出发初始化。常见命令是,使用new实例化一个对象,读取或者设置一个类的静态字段,以及调用一个类的静态方法 使用java.lang.reflect包对类进行反射是,如果类没有进行过初始化,则需要先出法初始化 初始化一个类,如果父类没有初始化,则父 ...
阅读全文 »

深入理解java虚拟机-类文件结构

发表于 2016-06-18
Class类文件结构class类文件由无符号数和表组成,u1,u2,u4,u8分别表示占1,2,4,8个字节 类型 名称 数量 u4 magic (标识文件类型) 1 u2 minor_version 1 u2 major_version(jvm会拒绝超过其版本的class运行) 1 u2 constant_pool_count 1 cp_info constant_pool constant_pool_count - 1 u2 accessflags(这是个类or接口,是否public,abstract等信息) 1 u2 this_class(是一个索引 ...
阅读全文 »

深入理解java虚拟机 垃圾收集器与内存分配策

发表于 2016-06-18
3.2对象已死么程序计数器,虚拟机栈,本地方法栈随着线程生成或销毁。栈帧随着方法的进入和退出而执行出入栈,不需要考虑垃圾回收。而java堆和方法区需要动态回收,所以这部分内存的分配需要垃圾收集 引用计数算法 每有一个地方引用,计数器+1;引用失效减一;为0则可回收 很难解决相互循环引用 可达性分析: 通过一些列成为GC ROOTS的对象最为起点,从这些节点开始向下搜索,搜索的路径成为引用链,当一个对象到GC ROOTS没有任何引用链时,则被判定为可回收对象。 GC ROOTS: 虚拟机栈中(栈帧中的本地变量表)引用的对象 方法区中类静态属性引用的对象 方法区中常量引用的对象 本地方法栈中 ...
阅读全文 »

深入理解java虚拟机 java内存区域与内存溢出异常

发表于 2016-06-18
发现深入理解java虚拟机的读书笔记一直没发,一口气都发了好了。。。 概述 运行时数据区 所有线程共享的数据区 堆 java虚拟机启动时创建 所有对象的实例在这里分配内存 gc也在这里 方法区 储存已被虚拟机加载的类信息,常量,静态变量等数据 运行池常量 线程隔离的数据区 程序计数器:当前线程所执行的字节码行号指示器、字节码解释器工作是通过改变该计数器值来选取下一条需要执行的字节码指令 java虚拟区栈:每个方法在执行的同时都会创建一个栈帧用于储存局部变量表,操作数栈、动态链接、方法出口等信息。每个方法执行到完成,就对应着一个栈帧在虚拟机栈中的入栈到出栈的过程 stackOver ...
阅读全文 »

迭代器访问Collection与fail-fast机制

发表于 2016-06-08
迭代器访问Collection与fail-fast机制 一个bug这个问题要从今天看的一个bug说起。这个bug的原因是我们的程序有一个api,输入一个json,对于json的每一个字段查询一个结果后放在这个json里面,遇到一些特殊的查询情况我们会在json里面加一个字段作为标签。因为对每个字段的查询要访问elasticsearch,我们大量使用了future做并行。在遍历json字段时,我们用了这个的写法for (Entry<String, Object> entry : json.entrySet()) {...}。并且我们只在添加字段时对json做了sync,没有对for循 ...
阅读全文 »

spark入门1

发表于 2016-05-20
并行集合对scala seq调用SparkContext的parallelize方法可以创建一个并行集合,之后在这个并行集合就可以被并行操作。并行集合有一个参数是切片数,表示一个数据集切分的份数,一般spark会根据集群自动化分,也可以手动设置。 外部文本数据及可以用SparkContext.textFile构造并行集合。 RDD 内部的数据集合在逻辑上(以及物理上)被划分成多个小集合,这样的每一个小集合被称为分区。 操作对于RDD,有两种类型的动作,一种是Transformation,一种是Action。它们本质区别是: Transformation返回值还是一个RDD。它使用了链式调用的设 ...
阅读全文 »

记一次修复maven打包类加载冲突

发表于 2016-05-19
编译kg-buslogic时遇到类加载冲突,提示 123[ERROR] /Users/ziqian/project/yisou/kg-buslogic/src/main/java/cn/creditease/bdp/kg/buslogic/merged/ThridPartClien t.java:[94,16] 找不到符号[ERROR] 符号: 方法 setConfig(org.apache.http.client.config.RequestConfig)[ERROR] 位置: 类型为org.apache.http.client.methods.HttpRequestBase的变 ...
阅读全文 »

配置spark on yarn

发表于 2016-05-13
在之前配置好hadoop的基础上,我配置了spark on yarn。 主要有两步,分别是安装scala和配置spark 安装scala我们的spark是1.5.2版,使用的scala版本是scala-2.11.6。安装后要在/etc/bashrc里面配置export SCALA_HOME=/opt/scala-2.11.6 配置spark从官网下载spark-1.5.2的源代码,在dn1.hadoop下解压到/usr/local下。修改spark-env.sh 1234567cp spark-env.sh.template spark-env.sh #从配置模板复制cp spark-en ...
阅读全文 »

kafka vs flume

发表于 2016-05-01
Flume是一个单纯的管道系统,使用push的方式进行消息传递,本身使用非常简单,提供了很多的sink接口支持不同类型的下游数据。与hadoop生态圈结合很好,比如往hdfs,hbase传数据都支持很完善。 kafka是一个可持久化的分布式消息队列,和flume最大的相似之处在于都可以传输数据。 他们的区别在于: kafka是pull的方式,flume是push的方式。pull的方式的好处就是 实时层面:可以随时按需复现一段时间的数据 离线层面:可以从持续的单条写入变成定期的批量写入,可控性和资源效率更高 kafka有备份,容错能力会比较好。Flume不支持副本事件。于是,如果Flume ...
阅读全文 »
1…456…10
ThousandHu

ThousandHu

千里之行 始于足下

91 日志
49 标签
github zhihu 微信公众号:thousandhu学架构
© 2015 - 2017 ThousandHu
由 Hexo 强力驱动
主题 - NexT.Mist