自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

暁洣的博客

读奇书,交奇友,做奇事,做个奇女子。

  • 博客(37)
  • 收藏
  • 关注

原创 Shell面试题总结

shell相关面试题。

2024-01-15 23:52:44 526

原创 Hadoop中的mapper数量和reducer数量的设定

Hadoop本身提供了map-reduce分布式计算框架,将大文件切块存储、计算,分而治之。在map-reduce框架中,输入数据被划分成等长的小数据块,称为输入分片(input split)。 每个输入分片均会构建一个map任务以处理分片中的每条记录,排过序的处理结果通过网络传输发送到运行reduce任务的节点。 reduce任务节点在复制完所有map输出后,将其按照排序顺序合并。 最后,red...

2019-08-26 09:46:57 4378

原创 大话排序算法(五)--快速排序

前言排序算法事很重要的算法之一,几乎是Java的面试必问题了,在此通过几篇博文,总结一下几种常见的排序算法。当然这只是其中的几个。排序算法可以分为内部排序和外部排序。外部排序通常是读数据量很大的数据进行排序,且因为需要排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。内部排序需要排序的数据量相对较小。是将需要排序的数据记录在内存中进行排序。博文链接:(点击排序名称...

2019-08-19 10:16:22 266

原创 大话排序算法(四)--希尔排序

前言排序算法事很重要的算法之一,几乎是Java的面试必问题了,在此通过几篇博文,总结一下几种常见的排序算法。当然这只是其中的几个。排序算法可以分为内部排序和外部排序。外部排序通常是读数据量很大的数据进行排序,且因为需要排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。内部排序需要排序的数据量相对较小。是将需要排序的数据记录在内存中进行排序。博文链接:(点击排序名称...

2019-08-16 16:50:27 234

原创 大话排序算法(三)--插入排序

前言排序算法事很重要的算法之一,几乎是Java的面试必问题了,在此通过几篇博文,总结一下几种常见的排序算法。当然这只是其中的几个。排序算法可以分为内部排序和外部排序。外部排序通常是读数据量很大的数据进行排序,且因为需要排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。内部排序需要排序的数据量相对较小。是将需要排序的数据记录在内存中进行排序。博文链接:(点击排序名称...

2019-08-16 15:23:47 130

原创 大话排序算法(二)--选择排序

前言排序算法可以分为内部排序和外部排序。外部排序通常是读数据量很大的数据进行排序,且因为需要排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。内部排序需要排序的数据量相对较小。是将需要排序的数据记录在内存中进行排序。博文链接:(点击排序名称可看到不同排序的博文。不断更新中…)  常见的内部排序算法有:冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序等...

2019-08-16 14:49:57 140

原创 大话排序算法(一)-- 冒泡排序

前言排序算法事很重要的算法之一,几乎是Java的面试必问题了,在此通过几篇博文,总结一下几种常见的排序算法。当然这只是其中的几个。排序算法可以分为内部排序和外部排序。外部排序通常是读数据量很大的数据进行排序,且因为需要排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。内部排序需要排序的数据量相对较小。是将需要排序的数据记录在内存中进行排序。博文链接:(点击排序名称...

2019-08-16 10:34:12 151

原创 Hbase原理解读(七)-- Hbase常见问题总结

HBase表设计概述HBase的表设计将会直接影响:HBase表使用的效率及便利性,并且 HBase的表的结构一旦确立下来之后很难更改,所以在创建HBase表时,需要对表结构进行设计。HBase中的表设计主要设计的是:行键 和 列族HBase表中的列族设计在设计HBase表时,列族不宜过多,越少越好,官方推荐不要超过3个。经常要一起查询的数据不要放在不同的列族中,尽量减少跨列族的数据访...

2019-08-14 15:02:30 316

原创 Hbase原理解读(六)-- HBase表设计

这是HBase原理解读系列的最后一篇。在对HBase进行原理总结的时候遇到的一些常见问题进行总结。1. 为什么hbase可以很快?HBase的内部有memStore做缓冲,读写都是有限基于内存实现的。所以读写的效率高。HBase中存储的数据是按照行键的字典顺讯进行排序的,所以查询效率高。HBase中存储的数据从水平方向上切分为若干个HRegion,进行分布式的存储,所以提高效率。2....

2019-08-14 11:15:07 257

原创 Hbase原理解读(五)-- Hbase的系统结构

Hbase的系统架构HBase中的主节点叫HMaster,从节点叫HRegionServer。客户端叫Client。Zookeepr为hbase提供集群协调。先放一张我在网上找到的一个图片:Client客户端客户端用来访问hbase,同时保留一些缓存信息提升效率。zookeeper保证任何时候Hbase的集群只有一个HMaster。监控regionServer的状态,将其上线...

2019-08-14 09:49:12 509

原创 Hbase原理解读(四)-- HBase的HRegion寻址

在Hbase中存在一张特殊的meta表,其中存放着HBase的元数据信息,包括,有哪些表,表有哪些HRegion,每个HRegion分布在哪个HRegionServer中。meta表很特殊,永远有且仅有一个HRegion存储meta表,这个HRegion存放在某一个HRegionServer中,并且会将这个持有meta表的Region的HRegionServer的地址存放在Zookeeper中me...

2019-08-13 16:22:22 568

原创 Hbase原理解读(三)-- Hbase的读写原理

HBase的写数据流程当客户端联系HBase要写入一条数据时,根据表名和行键确定要操作的是哪个HRegion,找到存储着该HRegion的HRegionServer,对该HRegion进行操作,根据要操作的列族确定要操作的store,向该sotre中的memStore中写入当前数据,并在HLog中记录操作日志,之后返回表示写入成功。内存满了怎么办当不停的写入数据,将store中的memSto...

2019-08-13 16:19:00 257

原创 Hbase原理解读(二)-- Hfile的文件结构

HFile的文件结构在网上找了一个随处可见的图片来辅助理解:一个StoreFile分为DataBlock ,MetaBlock ,FileInfo, DataIndex, MetaIndex, Trailer。其中:- Data Blocks保存表中的数据,这部分的数据可以被压缩。DataBlocks中存放了大量的DataBlock,其中以键值对(key-value)的形式保存着表中...

2019-08-13 16:05:43 347

原创 Hbase原理解读(一)--HRegion的分裂及内部结构

HBase概述HBase是基于Hadoop数据库工具,来源于Google三篇论文之一 BIGTABLE,APACHE做了开源的实现就是 HBASE 技术。HBase是一种 NoSQL的 非关系型数据库,其不符合关系型数据库的范式,适合存储半结构化、 非结构化的数据。适合存储稀疏的数据 空的数据不占用空间面向列(族)进行存储。提供实时的增删改查的能力,是一种真正的数据库产品可以存储海量...

2019-08-13 15:51:33 2447 1

原创 Hadoop的shuffle的过程

Hadoop的shuffle的过程可以拆分为:map端的shuffle和reduce端的shuffle。在网上搜了一张shuffle的过程图:一、map端的shuffleMap是映射,负责数据的过滤分发:    Map端会处理输入的数据,将产生的中间结果写到本地磁盘。针对上图,对每一步都进行一下解读:1. input在map端首先接触的是InputSplit,在InputSpl...

2019-08-09 16:01:08 468

原创 hive表数据导入到Hbase

hive数据导入到Hbase中有两种方式。方式一 —— 内部表映射适用于数据量不是特别大的场景。首先说一下Hbase数据到hive内部表的映射,代码如下:create table stu_info{ key string comment '主键', name string comment '名字', age int comment'年龄'}STORED BY 'org.ap...

2019-08-08 15:27:38 6431 3

原创 Hbase数据映射到hive

今天同事过来问我hbase和hive字段类型之间的对应关系,我就顺带问了一下,她在干什么,她说要将hbase的数据映射到hive中去,建一个hbase的映射表,问我是建一个内部表映射呢,还是外部表映射呢。恰好最近正在做知识总结,我就来总结下这个映射关系吧。内部表映射首先说一下Hbase数据到hive内部表的映射,代码如下:create table stu_info{ key string...

2019-08-08 10:27:52 1938

原创 说说zookeeper的观察者

想写这么一个文章呢,是源于某天,有人问我,你知道zookeeper的观察者吗?作为一个大数据攻城狮,那肯定是知道的呀。于是灵魂三问来了,那你知道为什么要有zookeeper的观察者吗,你知道观察者的作用吗,你知道观察者和leader、flower的区别是什么吗?Enmm…于是得到了一声冷笑,看来基础知识是忘了,恶补一下吧。暗戳戳的翻了之前的学习笔记之后,现在来理直气壮的回答一下这三个问题吧。为...

2019-08-07 14:49:49 1253

原创 分布式计算系统三巨头--Hadoop、Storm、Spark的区别和比较

目前主流的三大分布式计算系统Hadoop、Storm、Spark被广泛运用于大数据领域,且常常用来进行比较。现在就来分析一下,三只之间的区别Hadoop、Spark的比较 核心组成 hadoop核心包括Hadoop分布式文件系统(HDFS),Hadoop YARN,HadoopMapReduce。Spark包括sparkcore,sparksql,sparkstreaming,spark...

2019-08-07 11:06:03 1300

原创 漫谈数据库和数据仓库的区别和联系

背景接触大数据两年的时间里,数据仓库这个词频繁出现在我的耳朵里,随着知识的逐渐积累,对数据仓库和数据库也有了一个大概的了解。概念数据库(DB)简单来说,数据库就是存储数据的仓库,主要有关系型数据库和非关系型数据库,这是一种逻辑上的概念。数据仓库(DW)从逻辑上来理解,和数据库的概念一致,都是存储数据的仓库,只是数据仓库的数据量更大。数据仓库的特点数据仓库是面向主题的那么什么...

2019-07-26 15:20:23 1998

原创 浅谈hive和hbase的区别

hive和hbase是大数据领域常见的两个组件,常常会被放在一起比较,于是略微总结了一下两者的区别,通过不同的维度对二者进行一下分析,以供参考。概念Apache hive是构建在Hadoop基础之上的数据仓库,支持使用hive SQL(又称hql,这是一种类sql语言)语句对hdfs上的数据进行查询,这种语句最终回被转换成map-reduce任务进行执行。但是不支持交互式查询,因为查询的都是...

2019-07-26 14:45:06 423

原创 hive优化--从二十个小时到五分钟的跨度

背景上个月,做了一个业务背景比较复杂,涉及表众多的etl处理,在整个过程中遇到了很多坑,其中最大的一个坑是,在整个s q l的处理过程中,有一段sql的执行花费时间较长,执行了二十多个小时未结束。严重影响了etl的进度,对此进行了一些列的优化,但效果甚微。解决具体的sql如下:(涉及业务隐私,表名和列名就简化了)select * from (select * from a1 where ...

2019-07-10 16:45:27 325

原创 HDFS上的文件压缩-巧妙利用shell的管道文件

背景最近遇到这样的一个需要,需要将生产HDFS环境的集群上10个系统的数据,近10个月月末的数据复制一份到测试环境的HDFS集群上。看起来很简单的需求,我是这么想的,将需要的文件列表作为配置文件,通过shell脚本,依次读取该配置文件,并get到堡垒机上,全部下载完成后,将该目录打包压缩,上传到SFTP上,在测试环境上登陆SFTP,下载后,上传到HDFS。半个小时后,脚本测试通过,提交后,遭...

2019-04-28 10:57:25 1642

原创 深度剖析Kafka可靠性保证

Kafka的ARKafka的内部维护了一个AR列表,其中,AR由ISR和OSR两部分组成。ISRISR中的副本都要同步leader中的数据,副本同步队列,只有都同步完成了数据才认为是成功提交了,成功提交之后的消息才能被访问和消费。在这个同步的过程中,即使消息已经写入也不能被外界访问,这个过程是通过LEO-HW机制来实现的。OSROSR中的follower会尽力的去同步leader,可能数...

2019-04-24 17:21:34 488

原创 大数据学习-Kafka原理详解

Kafka简介Kafka是由LinkedIn开发的一个分布式的消息系统,最初是用作LinkedIn的活动流(Activity Stream)和运营数据处理的基础。Kafka使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。综上,Kafka是一种分布式的,基于发布/订阅的消息...

2019-04-24 16:22:09 544

原创 Hadoop的租约机制

租约的概念客户端在每次读写HDFS文件的时候获取租约对文件进行读写,文件操作完成后,释放此租约。 租约内部结构如图所示: 每个客户端用户持有一个租约每个租约内部包含1个租约持有者的信息,还有此租约对应的文件id列表,表示当前租约持有者正在写这些文件id对应的文件每个租约包含有一个最新的更新时间,最新更新时间将会决定此租约是否过期,过期的租约会导致租约持有者无法继续执行写数据到文件中,...

2019-04-19 15:43:12 915

原创 大数据学习——2PC算法

分布式下数据一致性问题对于一个将数据副本分布在不同得分布式下的系统来说,如果对一个节点的数据进行更新,但是其他节点的数据却没有进行相应的更新,于是在读取其他节点的数据时,便不是最新的数据,即脏数据,这就是典型的数据不一直问题。为解决这个问题,涌出了大批的算法和协议,其中较为经典的就是二次提交,三次提交,以及Paxos算法。2PC概念2PC是Two-Phaso-Commit的缩写,即二阶段提...

2019-04-18 17:29:45 2450

原创 枚举实现Java自定义状态码(优雅的设计自定义异常二)

背景Java提供了一些通用异常,但是通常不能满足我们的需求,因此自定义异常在软件开发中成为不可或缺的一部分,此处提供了一个简单的通过枚举实现的自定义状态码。代码详解设计一个接口,接口定义了状态码,消息信息以及获取方式public interface MExceptionEnum{ /** * 获取状态码 * @return 状态码 * / publi...

2019-03-21 14:39:27 9612 4

原创 Java自定义异常的最佳实践(优雅的设计自定义异常一)

Java的异常机制异常是一个事件,是指在程序运行过程中,发生的一些中断程序正常运行的事件。Java提供了完善的异常处理机制。Java的异常层次结构图如下:(盗的图)Throwable是所有异常的父类,主要有两个重要的实现:Error和Exception:Error:Error及其子类通常是用来描述Java运行系统的内部错误或是资源耗尽的错误,是程序无法处理的错误,这类错误比较严重,通常是...

2019-03-21 10:37:38 2661 2

原创 Shell编程之AWK的使用

背景 AWK是一个优良的文本工具,是Linux环境下现有的功能最强大的数据处理引擎之一。AWK 提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。他的创建者创建者已将它正式定义为“样式扫描和处理语言”。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 语法格式 不管语法怎么复杂,其语法始终为:a...

2019-03-20 15:22:24 479 1

原创 hive内部表和外部表之间的相互转换

背景在对hive进行进一步了解的同时,发现了hive的内部表和外部表可以通过更改属性进行转换,并且不会因为数据量大小影响转换的性能实现内部表转外部表alter table xm_testA set TBLPROPERTIES ('EXTERNAL = true')外部表转换内部表alter table xm_testB set TBLPROPTIES ('EXTERNAL = fals...

2019-03-12 14:56:22 6881 5

原创 Hive内部表和外部表的区别

区别创建内部表:内部表直接创建,不需要加关键字create table if not exits xm_testA( KEHUMC VARCHAR(50) COMMENT '客户名称', KEHUZH VARCHAR(50) COMMENT '客户号')COMMENT '客户信息表'外部表:外部表的创建需要加上external关键字修饰,可以通过location指定...

2019-03-12 14:36:26 5810 2

原创 Hadoop的missing block

偶然遇到一个有意思的错误,在HDFS写文件的时候描绘出现MissingBlockException,经过翻阅资料以及问题的复现,在排除代码逻辑问题后,大概总结了两个原因:Datanode节点breakDatanode和Namenode之间通信有问题是否由其他原因引起,暂时未知,欢迎补充指正。...

2019-03-04 11:19:52 889

原创 开发中hive常见的问题

最近做了一些etl处理,写了些hql语句,在此过程中,遇到一些小问题,趁着还能记得的时候,记录下来。concatconcat是hive中的连接函数,返回输入字符串连接后的结果,支持任意个输入字符串concat(String1,String2,String3....)在我的hql语句中,通过concat将日期字段和时间字段进行拼接后排序,但是排序后的结果出现了乱序的情况,并没有按照理想的...

2019-03-04 09:43:15 1133

原创 通过shell解析xml文件

背景最近工作中遇到了这样的一个需求,某个系统a开发时用到的结构化数据存放在HDFS上的指定目录,因此需要将a系统的文件对该系统的用户授权。但是由于存放文件的目录是所有系统的结构化文件,不能将整个目录对a系统用户授权。因此只能将a系统的文件进行授权。此涉及到两个问题:不知道文件什么时候能上传到HDFS目录下系统使用到的文件是.dat格式,且不止一个,但是有xml就绪文件,该文件中记录了...

2018-12-29 17:10:22 5637

原创 hive的拉链表

最近再工作中,经常发现有用到拉链表的场景,经过一系列的学习,大概总结了一下自己对拉链表的了解,可能不是特别到位,后续再做进一步的补充,仅供参考。名词解释开链:向表中插入数据的过程关链:修改结束日期的过程存量:一段时间内系统保存的数据增量:一段时间内系统中发生变化的数据全量:系统中保存的所有的数。关链时间:拉链表中的数据有效期,一般都会设计的比较大,如:3000.12.31使用场景...

2018-11-30 12:42:42 790

原创 shell脚本判断某一天是否是当月的最后一个周四

shell脚本判断某一天是否是当月的最后一个周四需求最近遇到了这样的一个需求,要求在每个月的最后一个周四加三天来执行一个固定的脚本,于是就因为判断最后一个周四用了很久,在此记录一下。实现的思路整体的思路如下:将当前的日期减去三天后,得到三天前的日期,判断得到的三天前的日期是否是该日期所在月的最后一个周四。具体的实现先创建一写变量以供后续的使用//表示三天前的日期所在的年:201...

2018-11-27 15:13:11 820

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除