2018年10月21日
摘要: 最近或许有伙伴发现,写技术实现及细节的变少了,更多是经历以及思想、规范。莫非是道则道,非常道,你道我也道?然,并不是:)。 当入行四五年时,个人经历中,从14年开始实习工作到15年转正,各电信项目现场跑,开发、测试、产品部署及支持运维。16年银行实时系统开发、测试、运维、部署,最后推进了MapRed阅读全文
posted @ 2018-10-21 22:47 超大的雪童子 阅读(1003) 评论(3) 编辑
  2018年9月29日
摘要: 什么是All In? 是你不知道全力做这件事情会得到什么。但你只想把它做好的感觉。 最近项目着实忙碌,奋战在第一线,从一开始了解需求,整理需求,到系统设计,模块儿设计。随后前后端接口约定,后台管理模块儿与核心模块儿开发,前后端接口联调,与其他系统接口约定联调。再到全项目测试,以及迎来最终阶段的开发与阅读全文
posted @ 2018-09-29 15:36 超大的雪童子 阅读(754) 评论(1) 编辑
  2018年8月24日
摘要: 随着工作年限的增长,我们从一开始负责一个功能,再到负责一个模块的数据字典及框架设计。再到负责整个系统的需求评审及架构设计。这一路见证着程序猿的成长。但当我们逐步成为一名架构师,或是一名项目管理人员时,会发现一个项目的成功,会牵扯到各式各样的问题及风险。无论是系统本身要兼容快速发展的业务形态,还是由于阅读全文
posted @ 2018-08-24 00:35 超大的雪童子 阅读(681) 评论(2) 编辑
  2018年6月28日
摘要: 工作已有四年有余,从最初的亚信 到现在的 阿里。。总结了下思维模式,以个人的视角,供各位干代码的小伙伴们参考,能够深入无论 技术还是业务还是产品的本质。发现其中的规律,更好地把握自己的方向及未来。那么总的来说,我分为四种思维模式: 一、技术思维 卧槽!干代码!出bug了!没错,这就是你进步的源头。技阅读全文
posted @ 2018-06-28 16:57 超大的雪童子 阅读(990) 评论(0) 编辑
  2018年6月25日
摘要: 前言 就这样,大数据领域蓬勃发展了好几年,有很多伙伴执迷于技术,成为了分布式计算与存储的领域专家。也有很多伙伴执迷于数据,成为了行业的数据研发专家。当然还有很多小伙伴,热衷于工具系统开发,成为了数据技术专家。那么我们回过头来考虑,什么是大数据,什么又是数据仓库,什么又是数据技术。大数据其实是个非常笼阅读全文
posted @ 2018-06-25 23:52 超大的雪童子 阅读(1543) 评论(0) 编辑
  2018年2月24日
摘要: 从上一篇对Hive metastore表结构的简要分析中,我再根据数据设计的实体对象,再进行整个代码结构的总结。那么我们先打开metadata的目录,其目录结构: 可以看到,整个hivemeta的目录包含metastore(客户端与服务端调用逻辑)、events(事件目录包含table生命周期中的检阅读全文
posted @ 2018-02-24 17:06 超大的雪童子 阅读(1001) 评论(0) 编辑
  2018年2月19日
摘要: 今天总结下,Hive metastore的结构设计。什么是metadata呢,对于它的描述,可以理解为数据的数据,主要是描述数据的属性的信息。它是用来支持如存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录。为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数阅读全文
posted @ 2018-02-19 18:47 超大的雪童子 阅读(1176) 评论(0) 编辑
摘要: 硬盘的物理组成:由许许多多的圆形硬盘盘所组成。宜居硬盘盘能够容纳的数据量,而有所谓的单碟或者多碟。 首先,硬盘里一定会有所谓的磁头(Head)在进行该硬盘上面的读写动作,而磁头是固定在机械手臂上的,机械手臂上有多个磁头可以进行读取的动作。而当磁头固定不动,硬盘转一圈所画出来的圆就是所谓的磁道(Tra阅读全文
posted @ 2018-02-19 12:09 超大的雪童子 阅读(85) 评论(0) 编辑
  2018年2月18日
摘要: 最近在看鸟哥的Linux私房菜,我觉得这本书还是很不错的。这里进行相关的总结。 1、Linux目录权限概念 Linux一般讲目录可存取的方式分为三个类别,分别是owner/group/other,且各有read/write/excute等权限。在Linux系统当中,预设的情况下,所有的系统上的账号与阅读全文
posted @ 2018-02-18 18:44 超大的雪童子 阅读(180) 评论(0) 编辑
  2017年12月18日
摘要: 有人会问,为啥要用这个叫啥Kudu的,Kudu是啥? 就像官网所说,Kudu是一个针对Apache hadoop 平台而开发的列式存储管理器,在本菜鸟看来,它是一种介于hdfs与hbase的一种存储。它的优势在于: 1、OLAP工作的快速处理,也就是针对于查询,很快,很牛逼。 2、针对同时运行顺序和阅读全文
posted @ 2017-12-18 21:12 超大的雪童子 阅读(1497) 评论(0) 编辑
  2017年9月11日
摘要: 上次写了hive metastore的partition的生命周期,但是简略概括了下alter_partition的操作,这里补一下alter_partition,因为随着项目的深入,发现它涉及的地方较多,比如insert into 时如果路径存在情况下会调用alter_partition,调用in阅读全文
posted @ 2017-09-11 01:36 超大的雪童子 阅读(315) 评论(0) 编辑
  2017年8月30日
摘要: 最近随着项目的深入,发现hive meta有些弊端,就是你会发现它的元数据操作与操作物理集群的代码耦合在一起,非常不利于扩展。比如:在create_table的时候同时进行路径校验及创建,如下代码: 所以这是meta无法统一所有元数据的原因么。。其实hive metastore的代码从大的来看,就好阅读全文
posted @ 2017-08-30 03:09 超大的雪童子 阅读(1721) 评论(0) 编辑
  2017年8月17日
摘要: 不要问我为什么,因为爱,哈哈哈哈。。。进入正题,最近做项目顺带学习了下hive metastore的源码,进行下知识总结。 hive metastore的整体架构如图: 一、组成结构: 如图我们可以看到,hive metastore的组成结构分为 客户端 服务端 ,那么下来我们逐一进行分析: 1、客阅读全文
posted @ 2017-08-17 02:34 超大的雪童子 阅读(780) 评论(0) 编辑
  2017年7月3日
摘要: Hadoop的HDFS可以分为NameNode与DataNode,NameNode存储所有DataNode中数据的元数据信息。而DataNode负责存储真正的数据(数据块)信息以及数据块的ID。 NameNode上并不永久保存哪个DataNode上有哪些数据块的信息,而是通过DataNode启动时的阅读全文
posted @ 2017-07-03 21:40 超大的雪童子 阅读(170) 评论(0) 编辑
  2017年7月2日
摘要: 最近突然觉得, 很多掌握的都还是很浅的原理,需要更深入细粒度去了解整个分布式系统的运转机制。于是。。开始作死而又作死而又作死的源码之旅。 Hadoop包的功能总共有下列几类: tool:提供一些命令行工具,如DistCp,archive mapreduce,:Hadoop的Map/Reduce实现 阅读全文
posted @ 2017-07-02 15:05 超大的雪童子 阅读(178) 评论(0) 编辑
  2017年4月30日
摘要: 最近做一个oracle项目迁移工作,跟着spark架构师学着做,进行一些方法的总结。 1、首先,创建SparkSession对象(老版本为sparkContext) val session = SparkSession.builder().appName("app1").getOrCreate() 阅读全文
posted @ 2017-04-30 16:12 超大的雪童子 阅读(332) 评论(1) 编辑
  2017年4月15日
摘要: 最近没怎么写技术博客了。。原因是,跳到了曾经期望的公司,还在做技术储备。。。如今入职一个月了,已经完全进入状态。同时,也带来更多思考与感悟。 我记得第一面,是支付宝的架构师。与他聊了很多关于技术上,性能上,架构与业务上的知识。他对我说,有没有兴趣来杭州,大牛都是逼出来的,BAT想着是如何将每一台服务阅读全文
posted @ 2017-04-15 01:15 超大的雪童子 阅读(949) 评论(5) 编辑
  2017年3月19日
摘要: 1、数据查询 //提高聚合的性能 SET hive.map.aggr=true; SELECT count(*),avg(salary) FROM employees; //木匾不允许在一个查询语句中使用多于一个的函数(DISTINCT。。。)表达式 SELECT count(DISTINCT sy阅读全文
posted @ 2017-03-19 16:19 超大的雪童子 阅读(165) 评论(0) 编辑
摘要: 1、创建表 create table if not exists mydb.employees{ name String COMMENT 'Employee name', salary FLOAT COMMENT 'Empolyee salary', subordinates APPAY<STRIN阅读全文
posted @ 2017-03-19 12:00 超大的雪童子 阅读(119) 评论(0) 编辑
  2017年3月6日
摘要: 应用于:对于不同用户创建的表目录,进行文件的下载,程序中执行hadoop cat命令 下载文件到本地,随后通过ftp传至目标服务器,并将hdfs文件目录的修改时间存入mysql中。每次修改前将mysql中记录的数据,与本批次下载的HDFS文件路径修改时间对比,如果改变,则决定是否下载文件: 入口: 阅读全文
posted @ 2017-03-06 16:32 超大的雪童子 阅读(116) 评论(0) 编辑
  2017年2月12日
摘要: 帮一个朋友写个样例,顺便练手啦~一直在做平台的各种事,但是代码后续还要精进啊。。。阅读全文
posted @ 2017-02-12 03:38 超大的雪童子 阅读(291) 评论(0) 编辑
  2016年12月29日
摘要: 之前查阅源码啊,性能测试啊调优啊。。基本告一段落,项目也接近尾声,那么整理下spark所有配置参数与优化策略,方便以后开发与配置: Spark安装配置与代码框架 spark-default.conf 配置 spark.executor.instance 参数,向Yarn申请创建的资源池实例数 spa阅读全文
posted @ 2016-12-29 11:26 超大的雪童子 阅读(392) 评论(0) 编辑
  2016年12月11日
摘要: 到年底了,想着总结下所有知识点好了~今年应用的知识点还是很多的~ Hadoop生态圈: 1、文件存储当然是选择Hadoop的分布式文件系统HDFS,当然因为硬件的告诉发展,已经出现了内存分布式系统Tachyon,不论是Hadoop的MapReduce,Spark的内存计算、hive的MapReudu阅读全文
posted @ 2016-12-11 15:54 超大的雪童子 阅读(2044) 评论(0) 编辑
  2016年12月10日
摘要: 不知不觉,毕业一年半了,从实习开始接触大数据技术。那时懵懂的我,不对,应该说懵逼的我在想,卧槽,这是啥这么牛逼,我都不会啊。。。啥都不会完蛋了。。即便现在也是这样认为= = 今年还是有很多变故的,不过丝毫无法阻挡我对技术的热情,这种热情犹如滔滔江水连绵不绝,哗啦啦啦啦啦啦~上图,让我们看下大数据工程阅读全文
posted @ 2016-12-10 22:10 超大的雪童子 阅读(849) 评论(2) 编辑
摘要: 要完整去学习spark源码是一件非常不容易的事情,但是咱可以积少成多嘛~那么,Spark Streaming是怎么搞的呢? 本质上,SparkStreaming接收实时输入数据流并将它们按批次划分,然后交给Spark引擎处理生成按照批次划分的结果流: SparkStreaming提供了表示连续数据流阅读全文
posted @ 2016-12-10 16:45 超大的雪童子 阅读(302) 评论(0) 编辑
  2016年12月9日
摘要: 假设客户端分别发送了两个数据包D1和D2给服务器,由于服务器端一次读取到的字节数是不确定的,所以可能发生四种情况: 1、服务端分两次读取到了两个独立的数据包,分别是D1和D2,没有粘包和拆包。 2、服务端一次接收到了两个数据包,D1和D2粘合在一起,被称为TCP粘包。 3、服务端分两次读取到了两个数阅读全文
posted @ 2016-12-09 00:54 超大的雪童子 阅读(202) 评论(0) 编辑
  2016年12月8日
摘要: spark呢,对Netty API又做了一层封装,那么Netty是什么呢~是个鬼。它基于NIO的服务端客户端框架,具体不再说了,下面开始。 创建了一个线程工厂,生成的线程都给定一个前缀名。 像一般的netty框架一样,创建Netty的EventLoopGroup: 在常用的netty框架中呢,会创建阅读全文
posted @ 2016-12-08 23:42 超大的雪童子 阅读(1605) 评论(0) 编辑
  2016年12月6日
摘要: 首先,整理NIO进行服务端开发的步骤: (1)创建ServerSocketChannel,配置它为非阻塞模式。 (2)绑定监听,配置TCP参数,backlog的大小。 (3)创建一个独立的I/O线程,用于轮询多路复用器Selector。 (4)创建Selector,将之前创建的ServerSocke阅读全文
posted @ 2016-12-06 23:42 超大的雪童子 阅读(1131) 评论(0) 编辑
  2016年12月5日
摘要: 自己对着源码敲一遍练习,写上注释。发现NIO编程难度好高啊。。虽然很复杂,但是NIO编程的有点还是很多: 1、客户端发起的连接操作是异步的,可以通过在多路复用器注册OP_CONNECTION等待后续结果,不需要像BIO的客户端一样被同步阻塞。 2、SocketChannel的读写操作都是异步的,如果阅读全文
posted @ 2016-12-05 23:50 超大的雪童子 阅读(268) 评论(0) 编辑
  2016年11月27日
摘要: 如何能更好的运用与监控sparkSQL?或许我们改更深层次的了解它深层次的原理是什么。之前总结的已经写了传统数据库与Spark的sql解析之间的差别。那么我们下来直切主题~ 如今的Spark已经支持多种多样的数据源的查询与加载,兼容了Hive,可用JDBC的方式或者ODBC来连接Spark SQL。阅读全文
posted @ 2016-11-27 14:55 超大的雪童子 阅读(2198) 评论(0) 编辑
摘要: 之前阅读也有总结过Block的RPC服务是通过NettyBlockRpcServer提供打开,即下载Block文件的功能。然后在启动jbo的时候由Driver上的BlockManagerMaster对存在于Executor上的BlockManager统一管理,注册Executor的BlockMana阅读全文
posted @ 2016-11-27 10:33 超大的雪童子 阅读(805) 评论(0) 编辑
  2016年11月26日
摘要: 我们又都知道,Spark中任务的处理也要考虑数据的本地性(locality),Spark目前支持PROCESS_LOCAL(本地进程)、NODE_LOCAL(本地节点)、NODE_PREF、RACK_LOCAL(本地机架)、ANY(任何)几种。其他都很好理解,NODE_LOCAL会在spark日志中阅读全文
posted @ 2016-11-26 04:32 超大的雪童子 阅读(326) 评论(0) 编辑
  2016年11月25日
摘要: shuffle。。。相当重要,为什么咩,因为shuffle的性能优劣直接决定了整个计算引擎的性能和吞吐量。相比于Hadoop的MapReduce,可以看到Spark提供多种计算结果处理方式,对shuffle过程进行了优化。 那么我们从RDD的iterator方法开始: 我们可以看到,它调用了cach阅读全文
posted @ 2016-11-25 00:43 超大的雪童子 阅读(716) 评论(0) 编辑
  2016年11月24日
摘要: 源码层面整理下我们常用的操作RDD数据处理与分析的函数,从而能更好的应用于工作中。 连接Hbase,读取hbase的过程,首先代码如下: 我们来一点一点解析整个过程。 1、val configuration = HBaseConfiguration.create() 这个用过hbase的伙伴们都知道阅读全文
posted @ 2016-11-24 10:22 超大的雪童子 阅读(613) 评论(0) 编辑
  2016年11月23日
摘要: 我们都知道Spark的每个task运行在不同的服务器节点上,map输出的结果直接存储到map任务所在服务器的存储体系中,reduce任务有可能不在同一台机器上运行,所以需要远程将多个map任务的中间结果fetch过来。那么我们就来学习下shuffleClient。shuffleClient存在于每个阅读全文
posted @ 2016-11-23 22:18 超大的雪童子 阅读(844) 评论(0) 编辑
  2016年11月22日
摘要: sparkContext创建还没完呢,紧接着前两天,我们继续探索。。作死。。。 紧接着前几天我们继续SparkContext的创建: 接下来从这里我们可以看到,spark开始加载hadoop的配置信息,第二张图中 new出来的Configuration正是hadoop的Configuration。同阅读全文
posted @ 2016-11-22 21:58 超大的雪童子 阅读(170) 评论(0) 编辑
  2016年11月21日
摘要: 额,没忍住,想完全了解sparksql,毕竟一直在用嘛,想一次性搞清楚它,所以今天再多看点好了~ 曾几何时,有一个叫做shark的东西,它改了hive的源码。。。突然有一天,spark Sql突然出现,如下图: = =好了,不逗了,言归正传。。。那么一条sql传统数据库会是怎么解析的呢? 传统数据库阅读全文
posted @ 2016-11-21 23:34 超大的雪童子 阅读(291) 评论(0) 编辑
摘要: 紧接着昨天,我们继续开搞了啊。。 1、下面,开始创建BroadcastManager,就是传说中的广播变量管理器。BroadcastManager用于将配置信息和序列化后的RDD、Job以及ShuffleDependency等信息在本地存储。紧接着blockManager的创建后创建。如下: 随之我阅读全文
posted @ 2016-11-21 21:54 超大的雪童子 阅读(352) 评论(0) 编辑
  2016年11月20日
摘要: 即日起开始spark源码阅读之旅,这个过程是相当痛苦的,也许有大量的看不懂,但是每天一个方法,一点点看,相信总归会有极大地提高的。那么下面开始: 创建sparkConf对象,那么究竟它干了什么了类,从代码层面,我们可以看到我们需要setMaster啊,setAppName啊,set blabla啊。阅读全文
posted @ 2016-11-20 16:38 超大的雪童子 阅读(589) 评论(1) 编辑
摘要: 平时用于从生产环境hbase到导出数据到测试环境。 导入数据: 导出数据:阅读全文
posted @ 2016-11-20 15:04 超大的雪童子 阅读(712) 评论(0) 编辑