avatar
文章
123
标签
207
分类
22

Home
Timeline
Tags
Categories
About
big data decode club
Home
Timeline
Tags
Categories
About

big data decode club

YARN源码分析之MRAppMaster启动
发表于2017-08-09|Hadoop
由YARN源码分析之ApplicationMaster启动流程中得知MR的AppMaster是由MRAppMaster启动的,在脚本中调用了AppMaster的main方法。 本文就顺着代码来对MRAppMaster进行解析下。 先来看下该类的main方法, 12345678910111213141516171819202122232425public static void main(String[] args) { try { // Environment中的环境变量是在launch_container.sh中export的 String containerIdStr = System.getenv(Environment.CONTAINER_ID.name()); String nodeHostString = System.getenv(Environment.NM_HOST.name()); String nodePortString = System.getenv(Environment.NM_PORT.name ...
HDFS之Cannot obtain block length for LocatedBlock异常
发表于2017-08-03|Hadoop
昨天公司集群升级,采集平台的flume agent没有停,导致一些文件异常,无法读,也无法使用cp或者get命令,报Cannot obtain block length for LocatedBlock。 首先使用fsck来检查下该文件,命令hdfs fsck file_path -files -blocks -locations,提示如下: 12Status: HEALTHY Total size: 0 B (Total open files size: 18935B) 现实文件依然是打开的,使用命令hadoop fsck file_path -openforwrite查看目录下打开的文件,显示: 1234517/08/03 15:21:50 WARN ssl.FileBasedKeyStoresFactory: The property 'ssl.client.truststore.location' has not been set, no TrustStore will be loadedConnecting to namenode via http: ...
利用canal同步mysql到HDFS
发表于2017-08-02|BigData
之前有一篇介绍性的文章简单介绍了实时同步mysql到hdfs的几种方案,本篇主要记录下利用canal同步mysql到hdfs的具体方案。 canal server 部署在canal中一个mysql实例对应一个配置文件,配置文件放在conf目录下的一个文件夹中,该文件夹的名字就代表了mysql实例。结构如下 12345-rwxr-xr-x 1 dc user 2645 Jul 18 14:25 canal.properties-rwxr-xr-x 1 dc user 2521 Jul 17 18:31 canal.properties.bak-rwxr-xr-x 1 dc user 3045 Jul 17 18:31 logback.xmldrwxr-xr-x 2 dc user 4096 Jul 17 18:38 springdrwxr-xr-x 2 dc user 4096 Jul 19 11:55 trans1 trans1代表一个mysql实例,该文件夹中有个instance.properties文件,在里面配置mysql数据库的信息 12345678## mysql ser ...
Java虚拟机及GC基础介绍
发表于2017-07-07|Java
作为一个hadoop开发,工作中难免会遇到gc的问题,以前总是一头雾水,这次抽时间系统的整理下,只是入门,更加深入的知识在工作中用到了再整理。 要理解gc先要搞清楚JVM,JVM是一个抽象的计算机结构。Java程序根据JVM的特性编写。JVM针对特定于操作系统并且可以将Java指令翻译成底层系统的指令并执行。JVM确保了Java的平台无关性。 JVM架构下图是JVM的架构(此架构图是HotSpot JVM)下面简单介绍下各个组件: class files文件是通过.java文件编译而来的。 ClassLoader的作用是装载能被JVM识别的指令,也就是加载.class文件到堆中,形成一个该类的对象(也就是说ClassLoader将class文件翻译为对象存放在堆内存中。)。其加载流程为加载 –> 验证 –> 准备 –> 解析 –> 初始化。ClassLoader,这个东西还是非常重要的,在JVM中是通过ClassLoader和类本身共同去判断两个Class是否相同。换句话说就是:不同的ClassLoader加载同一个Class文件,那么JVM认为他们生 ...
unclean.leader.election.enable引起的outOfRanger
发表于2017-06-20|Kafka
前段时间采集平台的数据量发生异常,对数据进行排查发现hdfs上存在历史数据重复消费的问题。 采集平台是由TailDirSource+KafkaChannel将数据写入kafka,然后通过kafkaChannel+HDFSSink将数据写入hdfs 整个采集平台可能出现的故障的地方如下: taildir重复采集了log taildir调用kafkachannel向kafka写数据时进行了回滚 hdfsSink调用kafkachannel消费数据时,进行了重复消费 hdfsSink写入hdfs时发生了回滚 故障分析 首先检查了下hdfs上的数据量异常的现象,是多余的数据是最新的数据还是历史数据,经数据校验确认数据量暴增是由于历史数据造成的。 查看业务方服务器上历史log是否发生变化,查证后log的历史文件没有发生变化。 采集端的flume log无异常,在kafka到hdfs的环节中的flume log中发现info级别的offset重置信息。初步怀疑是offset发生了out of ranger,然后被重置了offset,而这个offset又是比较早的一个offset,导 ...
YARN源码分析之ApplicationMaster启动流程
发表于2017-06-19|Hadoop
任何一个计算框架或者说一个服务要运行在yarn上,都需要一个master来对job进行管理,这个master就是ApplicationMaster。 ApplicationMaster是一个job的大脑,下面就以MapReduce为例,介绍下ApplicationMaster的启动流程。 首先client向RM提交一个application请求,RM创建一个application,然后再创建一个appattempt,后期的调度和任务的拆解都是对这个appattempt进行的,当appattempt的状态从ALLOCATED_SAVING变成ALLOCATED时,由AttemptStoredTransition.transition调用appAttempt.launchAttempt()进行启动,下面来看下具体代码: 1234567// RMAppAttemptImpl.javaprivate void launchAttempt(){ // Send event to launch the AM Container // 通过异步调度器得到该事件注册的handle ( ...
YARN源码分析之ApplicationMaster分配策略
发表于2017-06-08|Hadoop
一次和朋友的谈话中涉及到ApplicationMaster的container分配策略是什么,我映像中是随机分配的,但他说是根据各节点空闲资源来分配的。之前看代码的时候也没注意这块的逻辑,既然现在有了疑惑那就去代码里瞅瞅。 从MR的运行log中可以找到AM的container是在什么时候分配的,见log 122017-04-09 03:26:17,113 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptImpl: appattempt_1491729774382_0001_000001 State change from SUBMITTED to SCHEDULED2017-04-09 03:26:17,415 INFO org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainerImpl: container_1491729774382_0001_01_000001 Container Transi ...
Intellij idea中依赖模块间的test代码
发表于2017-06-02|Java
为了方便平时看代码和debug代码,我在hadoop的源码中新建了个模块hadoop-hunhun,此模块依赖其余hadoop模块,这样就可以直接在src中debug代码了。 在使用MiniMRClientCluster进行mr测试时,发现需要依赖一些模块的test代码,下面就来记录下载intellij idea中模块怎么依赖其余模块的test代码。 首先找到所依赖的test代码在哪个模块,这里会依赖jobclient、yarn-server-test和common模块中的test代码,操作步骤为: File -> Project Structure点击新建的hadoop-hunhun模块,选择Dependencies选项卡,这里我已经添加了对其它模块的依赖,如图: 在添加test依赖之前,要在test所在模块中找到test代码的输出路径,以jobclient中test为例,在Project Structure中点击hadoop-mapreduce-client-jobclient模块,然后选择Paths,将其Test Output path的内容进行复制,如下: 然后再次回 ...
flume事务解析
发表于2017-06-01|Flume
在flume中事务是一个重要的概念,事务保证了数据的可用性。这里的事务有别于数据库中的事务,比事务在回滚时,可能会造成数据重复,所以flume保证的是每条数据最少发送一次,以此来保证数据不丢失。 此篇从具体的数据流中分析事务,配置的数据流是taildir+kafkachannel,然后kafkachannel+hdfsSink。 kafkachannel中维护了两个事务,分别是put事务和take事务。 put事务kafkachannel的put事务是由taildir触发的,我们从代码中跟下put事务的流程。 taildir的入口是TaildirSource.process,代码如下: 1234567891011121314151617181920public Status process() { Status status = Status.READY; try { existingInodes.clear(); existingInodes.addAll(reader.updateTailFiles()); for (long inod ...
kafka channel写入kafka报RecordTooLargeException异常
发表于2017-05-16|Flume
flume通过kafka channel直接将数据写入kafka时,如果producer一次写入kafka的数据比较大时,会报异常,异常如下: 12345678910111215 五月 2017 17:17:09,814 WARN [PollableSourceRunner-TaildirSource-r-op_hiveserver] (org.apache.flume.channel.kafka.KafkaChannel$KafkaTransaction.doCommit:560) - Sending events to Kafka failedjava.util.concurrent.ExecutionException: org.apache.kafka.common.errors.RecordTooLargeException: The message is 1730741 bytes when serialized which is larger than the maximum request size you have configured with the max. ...
1…567…13
avatar
混绅士
Any answers you can find in source code.
文章
123
标签
207
分类
22
最新文章
Zero-knowledge proof 入门
Zero-knowledge proof 入门2023-08-08
IoTeX本地standalone模式及合约部署
IoTeX本地standalone模式及合约部署2023-08-06
说浅不浅的谈下CA认证
说浅不浅的谈下CA认证2023-01-04
RxGo常用算子手册
RxGo常用算子手册2022-12-02
Golang开发wasm程序
Golang开发wasm程序2022-11-25
分类
  • BigData4
  • BlockChain11
  • Docker2
  • Druid1
  • Flink3
  • Flume5
  • Golang3
  • HUE2
标签
HadoopBigDataYARNZKLen errorBlockChainKafkaZookeeperPaxosRaftBFTDockerloglog-pilotjavaBuilder设计模式Druid调研EthereumTestFlinkwindowFlinkxConnectorFlume函数式闭包HDFSHAZKFCReplicationMonitorread小文件writeLeaseLocatedBlock异常LightWeightGSetHashMapatime
归档
  • 八月 20232
  • 一月 20231
  • 十二月 20221
  • 十一月 20222
  • 十二月 20212
  • 十一月 20212
  • 五月 20211
  • 四月 20211
网站资讯
文章数目 :
123
已运行时间 :
本站总字数 :
318.6k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2016 - 2023 By 混绅士
框架 Hexo|主题 Butterfly