- 博客(157)
- 收藏
- 关注
原创 深入理解Basic Paxos协议
Paxos作用Paxos用来在多个节点间确定并只确定一个不可变变量的取值。(一旦确定后就不可以更改)基本概念系统内部由多个Acceptor组成,也就是参与决议的一方,用于存储和管理变量。系统外部有多个Proposer可以任意并发调用API,向系统提交不同的提议。Proposer发起的每项提议分别用一个ID标识,提议可表示为(ID, value)。ID是一个比较大小的值,比如可以用当前时间戳。
2017-12-02 20:50:45
1536
原创 2PC和3PC中故障情况分析
2PC故障情况分析1. 协调者正常,参与者宕机发生在第二阶段:无论协调者发起的是提交还是终止,那宕机的参与者在重启之后,都将执行对应操作,不存在不一致情况。发生在第一阶段:由于协调者无法收集到所有参与者的反馈,会陷入阻塞情况。解决办法:引入超时机制。超过指定时间未收到反馈,事务失败,向所有节点发送终止事务请求。宕机的节点启动后,收到终止事务请求,该事务失败。小结简单来说,由于协调者没挂,
2017-12-01 12:58:08
3671
3
原创 数独的Java版解法
最近偶尔有玩数独,有的题太复杂了不好解,刚好看到LeetCode上有这样的题,就尝试写了个Java的解法。1. 数独介绍数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。左边是数独的题目,右边是完成后的结果。 2.
2017-11-25 15:27:54
7655
原创 Presto内存管理源码分析
1. 内存池初始化初始化代码在LocalMemoryManager中,启动时将内存分为3个内存池,分别是:RESERVED_POOL:预留内存池,用于执行最耗费内存资源的查询。GENERAL_POOL:普通内存池,用于执行除最耗费内存查询以外的查询。SYSTEM_POOL:系统内存池,预留的用于Presto内部数据结构和临时的分配需求使用的内存。long maxHeap = Runtime.
2017-11-24 21:21:00
2870
原创 常见排序算法总结
1. 选择排序找到数组中最小的那个元素将它与数组的第一个元素交换位置再次,在剩余的元素中找到最小的元素,如此反复。2. 插入排序选择第二个元素。将它从后往前依次与之前的元素比较如果小于之前的元素,则交换两个元素位置,并继续从后往前比较之前元素,直至到第一个元素或者出现大于的情况位置如果大于之前的元素,则终止比较。并选择下一个元素,重复执行2-4步骤。适用场景对于部分有序的数据十分高
2017-11-23 00:50:20
625
原创 数据仓库与联机分析处理笔记
本文为《数据挖掘:概念与技术》中“数据仓库与联机分析处理”的阅读笔记。4. 数据仓库与联机分析处理ETL:用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。数据仓库提供联机分析处理(OLAP)工具,用于各种粒度的多维数据的交互分析,有利于有效的数据泛化和数据挖掘。数据立方体,是一种用于数据和OLAP以及OLAP操作(如上卷、下钻、切片
2017-11-21 00:10:42
1885
原创 记录一次大对象导致的Java堆内存溢出问题
前几天早上出现一后台项目无法登陆的情况,排查发现新生代和老年代都占用100%,FullGC次数大概有100多次,最终出现OOM。重启Tomcat后,至13点,FullGC的次数达到31次。
2017-08-29 23:09:12
7025
2
原创 Presto日志中出现大量的Triggering GC to avoid Code Cache eviction bugs
问题描述:Presto日志中出现大量的2017-07-31T15:31:21.505+0800 INFO Code-Cache-GC-Trigger com.facebook.presto.server.CodeCacheGcTrigger Triggering GC to avoid Code Cache eviction bugs排查过程:1. 检查Presto源码出现该条日
2017-08-02 21:14:50
2475
5
原创 HiveJDBC与其他JDBC一起使用时出现java.lang.IllegalArgumentException: Bad URL format
程序中需要使用JDBC的方式同时访问Hive和MySQL,发现在获取MySQL连接的时候(DriverManager.getConnection方法)出现Hive的类中的Bad URL format异常。代码如下: public Connection getMySqlConn() { Connection conn = null; try {
2017-07-07 11:40:47
3298
5
原创 Flume 1.7 源码分析(五)从Channel获取数据写入Sink
6 从Channel获取数据写入Sink6.1 Sink部分Sink部分主要分为以下3个步骤: 1. 由SinkRunner不断调用SinkProcessor的process方法。 2. 根据配置的SinkProcessor的不同,会使用不同的策略来选择sink。SinkProcessor有3种,默认是DefaultSinkProcessor。 3. 调用选择的sink的process
2017-03-04 17:46:27
3613
原创 Flume 1.7 源码分析(四)从Source写数据到Channel
5 从Source写数据到Channel5.1 Source部分5.1.1 SourceRunnerSourceRunner就是专门用于运行Source的一个类。 在”物化配置”一节获取配置信息后,会根据Source去获取具体的SourceRunner,调用的是SourceRunner的forSource方法。public static SourceRunner forSource(Sour
2017-03-01 13:42:04
4135
4
原创 Flume 1.7 源码分析(三)程序入口
Flume 1.7 源码分析(一)源码编译 Flume 1.7 源码分析(二)整体架构 Flume 1.7 源码分析(三)程序入口 4 程序入口启动Flume的过程可以简单分为2个步骤: 1. 获取相关配置文件(一般来说就是flume-conf.properties)。 2. 启动各组件。不特别说明,本文中的组件是指实现了LifecycleAware接口的类的对象,一般就是
2017-02-27 13:20:03
4164
5
原创 Flume 1.7 源码分析(二)整体架构
Flume 1.7 源码分析(一)源码编译 Flume 1.7 源码分析(二)整体架构 3 整体架构Flume有三大组件:Source、Channel、Sink。Source就是数据来源,例如Web Server产生日志后,可使用ExecSource执行tail -F命令后不断监听日志文件新生成的数据,然后传给Channel。Channel就是一个缓存队列,由于读取数据和写入数据的速
2017-02-27 13:07:56
4127
4
原创 Flume 1.7 源码分析(一)源码编译
1 说明Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,目前已经是Apache的一个子项目。Flume是一个专用工具被设计为旨在往HDFS、HBase发送数据。它对HDFS有特殊的优化,并且集成了Hadoop的安全特性。本文将详细分析Flume核心模块的源码实现。2 下载、编译2.1 源码检出Flume源码的git地址是:https://git-w
2017-02-26 16:11:45
4763
6
原创 Leet Code OJ 3. Longest Substring Without Repeating Characters
题目Given a string, find the length of the longest substring without repeating characters.Examples:Given “abcabcbb”, the answer is “abc”, which the length is 3.Given “bbbbb”, the answer is “b”, with the
2017-02-14 14:16:01
1451
原创 Leet Code OJ 4. Median of Two Sorted Arrays [Difficulty: Hard]
题目There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).Example 1:nums1 = [1, 3]nums
2017-02-10 07:36:39
825
原创 Leet Code OJ 388. Longest Absolute File Path [Difficulty: Medium]
题目Suppose we abstract our file system by a string in the following manner:The string “dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext” represents:dir subdir1 subdir2 file.ext The dir
2017-02-06 13:16:33
924
1
原创 Flume 1.6 遇Emoji表情发生截断丢失数据问题分析
问题描述最近有一段时间,跑ETL的时候,发现出来的数据明显比之前少,少了大约一半左右,就开始排查。 我们的数据是从Flume采集过来的,排查日志发现,flume在读取到某一条的时候,就不再往下读取了。问题分析进一步拿到原始文件后,找到那条数据。用vim打开发现其中有个地方有两个空格。起初以为是乱码(之前flume出过乱码中断的问题),贴到ide里面,得到具体编码,发现是四字节的utf-8编码。贴到
2017-02-04 07:19:22
2150
6
原创 Leet Code OJ 482. License Key Formatting [Difficulty: Medium]
给定一个非空字符串S,代表一个软件授权秘钥,我们需要格式化这个秘钥。这个字符串由字母、数字(a-z and/or A-Z and/or 0-9)和中划线(-)组成。中划线把字符串S分为几个组(例如有M个中划线,那会被分为M+1个组)。现在,中划线放置的位置可能被放错了。我们希望每个组的字符长度为整数K(除了第一个组,允许少于K,但是至少要有一个字符)。为了满足这个需求,我们需要重新放置中划线。另外,还需要把所有小写
2017-02-04 06:28:32
1912
原创 Flume学习笔记(二)问题整理
本文环境如下: 操作系统:CentOS 7.2.1511 64位 Flume版本:1.6.01. 当Flume与Hadoop不在同一服务器上当Flume与Hadoop不在同一服务器上时,又配置了写HDFS,则Flume启动时会报找不到类的错误。 需要添加Hadoop相关的包到flume的classpath配置中(或者直接拷贝到flume的lib文件夹中)。 具体需要的包,我是在ma
2016-08-04 13:51:11
3644
1
原创 Flume学习笔记(一)安装与简单使用
本文环境如下: 操作系统:CentOS 7.2.1511 64位 Flume版本:1.6.01. 系统需求Flume需要Java 1.6及以上(推荐1.7),对Agent监控目录的读写权限。2. 下载软件包到Flume官网上https://flume.apache.org/download.html下载软件包,例如:wget "https://mirrors.cnnic.cn/apache
2016-07-26 13:56:46
13545
10
原创 java.util.ConcurrentModificationException异常分析
异常日志2016-07-20 15:02:41,278 (New I/O worker #197) [ERROR - org.apache.flume.source.AvroSource.appendBatch(AvroSource.java:388)] Avro source r1: Unable to process event batch. Exception follows.java.u
2016-07-26 13:33:41
2584
原创 Flume性能测试报告
1. 测试环境1.1 硬件CPU:Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz(8核) 内存:16G1.2 软件Flume:1.6.0 Hadoop:2.6.0-cdh5.5.0 Kfaka:2.11-0.9.0.1 JDK:1.8.0_91-b14 64位 1.3 测试文件文件大小:107M ,共490010条记录1.4 Flume配置(
2016-07-15 13:42:09
13559
4
原创 Leet Code OJ 91. Decode Ways [Difficulty: Medium]
题目: A message containing letters from A-Z is being encoded to numbers using the following mapping:'A' -> 1'B' -> 2...'Z' -> 26Given an encoded message containing digits, determine the total number
2016-06-24 13:57:28
5347
原创 Leet Code OJ 344. Reverse String [Difficulty: Easy]
题目: Write a function that takes a string as input and returns the string reversed. Example: Given s = “hello”, return “olleh”.翻译: 写一个函数,使用字符串作为输入,返回它反转后的结果。 例如,输入”hello”,返回”olleh”。分析: 转为字符数组后,将第一
2016-06-23 13:50:55
3710
转载 关于Storm Tick
转载自kqdongnanf-博客园;Email:[email protected]。1. tick的功能Apache Storm中内置了一种定时机制——tick,它能够让任何bolt的所有task每隔一段时间(精确到秒级,用户可以自定义)收到一个来自__systemd的__tick stream的tick tuple,bolt收到这样的tuple后可以根据业务需求完成相应的处理。Tick功能从
2016-05-25 13:23:02
22216
3
原创 YARN体系学习笔记
一、基本组成结构1. ResourceManager负责对各个NodeManager 上的资源进行统一管理和调度。包含两个组件: * Scheduler:调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序 * Applications Manager:应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调
2016-05-20 16:12:15
18781
6
原创 Presto常用语句整理
查询从0或多个表获取数据行[ WITH with_query [, ...] ]SELECT [ ALL | DISTINCT ] select_expr [, ...][ FROM from_item [, ...] ][ WHERE condition ][ GROUP BY expression [, ...] ][ HAVING condition][ UNION [ ALL |
2016-05-16 22:08:40
79102
5
转载 HDFS High Availability体系介绍(Using the Quorum Journal Manager)
一、背景HDFS集群中只有一个Namenode,这就会引入单点问题;即如果Namenode故障,那么这个集群将不可用,直到Namenode重启或者其他Namenode接入。 有两种方式会影响集群的整体可用性: 1. 意外的突发事件,比如物理机器crash,集群将不可用,直到管理员重启Namenode。 2. 系统维护,比如软件升级等,需要关闭Namenode,也会导致集群暂时性的失效。
2016-05-16 11:19:20
12887
4
转载 Hive体系结构(四)注意事项与扩展特性
Hive体系结构(一)架构与基本组成 Hive体系结构(二)Hive的执行原理、与关系型数据库的比较 Hive体系结构(三)元数据库与基本操作 Hive体系结构(四)注意事项与扩展特性1. 使用HIVE注意点字符集 Hadoop和Hive都是用UTF-8编码的,所以, 所有中文必须是UTF-8编码, 才能正常使用。 备注:中文数据load到表里面,,如果字符集不同,很有可能
2016-05-15 18:00:39
12111
转载 Hive体系结构(三)元数据库与基本操作
Hive体系结构(一)架构与基本组成 Hive体系结构(二)Hive的执行原理、与关系型数据库的比较 Hive体系结构(三)元数据库与基本操作1. Hive元数据库Hive将元数据存储在RDBMS 中,一般常用的有MYSQL和DERBY。 hive元数据对应的表约有20个,其中和表结构信息有关的有9张,其余的10多张或为空,或只有简单的几条记录,以下是部分主要表的简要说明。 表名
2016-05-15 17:34:04
6346
转载 Hive体系结构(二)Hive的执行原理、与关系型数据库的比较
接上篇:Hive体系结构(一)架构与基本组成1. Hive执行原理Hive构建在Hadoop之上, 1. HQL中对查询语句的解释、优化、生成查询计划是由Hive完成的 2. 所有的数据都是存储在Hadoop中 3. 查询计划被转化为MapReduce任务,在Hadoop中执行(有些查询没有MR任务,如:select * from table) 4. Hadoop和Hive都是用UTF-8编
2016-05-15 17:11:27
11750
翻译 15分钟了解Apache Phoenix(HBase的开源SQL引擎)
翻译自官方文档(https://phoenix.apache.org/Phoenix-in-15-minutes-or-less.html),翻译的不好,望轻拍砖!什么是Phoenix?Phoenix是一个开源的HBase的SQL外壳。你可以使用标准的JDBC API代替HBase客户端API来创建表,插入数据,查询你的HBase数据。不要在我的程序和HBase之间增加额外的层,它只会拖慢速度的?事实
2016-05-12 19:48:38
10507
转载 Hive体系结构(一)架构与基本组成
1 Hive的体系结构划分下面是Hive的架构图: 1. 用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 WUI是通过浏览器访问Hive。
2016-05-12 14:13:14
13647
原创 HiveQL基本操作整理
1. 创建操作1.1 创建表CREATE TABLE pokes (foo INT, bar STRING);1.2 基于现有的表结构创建一个新表create table new_table like records;1.3 创建视图:CREATE VIEW valid_records AS SELECT * FROM records2 WHERE temperature !=9999;1.4
2016-05-12 09:12:09
7920
1
原创 CentOS下Hive2.0.0集群模式安装详解
本文环境如下: 操作系统:CentOS 6 32位 Hive版本:2.0.0 JDK版本:1.8.0_77 32位 Hadoop版本:2.6.41. 准备工作先完成CentOS下Hive2.0.0单机模式安装详解中的前三个步骤。 Hive和Hadoop一样,有3种启动模式,分别是单机模式,伪分布模式,分布模式。这里说一下分布模式(集群模式)的安装部署方案。 这边使用My
2016-05-09 19:38:19
8035
5
原创 Kafka使用Java客户端进行访问
本文环境如下: 操作系统:CentOS 6 32位 JDK版本:1.8.0_77 32位 Kafka版本:0.9.0.1(Scala 2.11)1. maven依赖包<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version
2016-05-09 16:15:48
35735
3
原创 Kafka单机、集群模式安装详解(二)
本文环境如下: 操作系统:CentOS 6 32位 JDK版本:1.8.0_77 32位 Kafka版本:0.9.0.1(Scala 2.11)接上篇 Kafka单机、集群模式安装详解(一)6. 单节点多Broker模式Kafka使用可以有多种模式,包括单节点单Broker,单节点多Broker,多节点多Broker。 这里我们简单区分一下: 单节点单Broker:在单台机子
2016-05-09 14:47:06
7146
原创 Kafka单机、集群模式安装详解(一)
本文环境如下: 操作系统:CentOS 6 32位 JDK版本:1.8.0_77 32位 Kafka版本:0.9.0.1(Scala 2.11)1. 所需要的环境Kafka需要以下运行环境: Java 安装参考CentOS 6使用rpm方式安装JDK8 Zookeeper 安装参考:CentOS下ZooKeeper单机模式、集群模式安装2. 下载、解压Kafka安装包Ka
2016-05-09 14:41:49
22423
3
原创 Gerrit评审报错[remote rejected] develop-> refs/for/develop(no new changes)
在使用Gerrit做评审的时候,在本次push有提交内容的情况下,遇到这个奇葩错误[remote rejected] develop-> refs/for/develop(no new changes)。 具体情况如下: 我使用develop分支创建了一个新的功能分支A,并将修改的代码push到Gerrit(对应远程的分支A),并在Gerrit完成评审。接着,我需要将分支A合并到develop分
2016-05-06 18:07:46
13245
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人