- 博客(175)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 博客声明--博文导览
成功,唯有积累,没有奇迹!!!!!!博客中的文章分类:一、大数据1、Hadoop及周边产品详解《HDFS详解》、《MapReduce详解》、《Pig详解》、《hive详解》《Sqoop详解》、《Flume详解》、《HBase详解》、《oozie详解》《Solr详解》、《yarn详解》、《HBase -ROOT-和.META.表结构【转】》《HBase Rowkey设...
2014-06-17 18:56:40
155
原创 原创:数据仓库架构和建设方法
1.数据仓库概要1.1.数据仓库起因 在建设数据仓库之前,数据散落在企业各部门应用的数据存储中,它们之间有着复杂的业务连接关系,从整体上看就如一张巨大的蜘蛛网:结构上错综复杂,却又四通八达。在企业级数据应用上单一业务使用方便,且灵活多变;但涉及到跨业务、多部门联合应用就会存在:①数据来源多样化,管理决策数据过于分散;②数据缺乏标准,难以整合;③数据口径不统一,可信度低;④缺乏数...
2017-06-23 11:27:10
4305
原创 数据仓库建设:维度处理
1.代理关键字代理关键字一般是指维度表中使用顺序(序列)分配的整数值作为主键,也称为“代理建”代理关键字用于维度表和事实表的连接。在kimball的维度建模领域里,强烈推荐使用代理关键字的。在维度表和事实表的每一个连接中都应该使用代理关键字,而不应该使用自然关键字或者智能关键字(Smart Keys) 备注:数据仓库中的主键不应该是智能的,也就是说要避免通过主键的值就可以了...
2017-06-15 19:17:06
654
1
原创 hive文件类型与压缩
1.概述 数据仓库在建设使用的过程中,主要消耗的资源包含:CPU、MEMORY、DISK三部分。数据仓库在计算过程中主要消耗CPU和Memory资源,当然也会消耗一些DISK资源用来存储计算过程中的临时结果。但是主要优化的方向,还是降低CPU和MEMORY的消耗,这方面主要依赖于模型设计的合理性,所以在模型设计阶段增加模型设计review的步骤,保证模型设计的合理性。数据仓...
2017-05-23 23:16:20
507
原创 hive小文件合并
hive仓库表数据最终是存储在HDFS上,由于Hadoop的特性,对大文件的处理非常高效。而且大文件可以减少文件元数据信息,减轻NameNode的存储压力。但是在数据仓库中,越是上层的表汇总程度就越高,数据量也就越小,而且这些表通常会有日期分区,随着时间的推移,HDFS的文件数目就会逐步增加。一、小文件带来的问题HDFS的文件包好数据块和元信息,其中元信息包括位置、大小、分块...
2017-05-21 22:15:28
1037
原创 JVM项目实践
一、启动分配内存 关于GC有一个常见的疑问是,在启动时,我们内存如何分配?用-Xmn,-Xmx,-Xms,-Xss,-XX:NewSize,-XX:MaxNewSize,-XX:MaxPermSize,-XX:PermSize,-XX:SurvivorRatio,-XX:PretenureSizeThreShold,-XX:MaxTenuringThreshold就基本可以配置内存启...
2016-12-05 11:11:48
276
原创 JVM监视与调优
学习Java GC机制的目的是为了在JVM出现问题时分析原因并解决。JVM监控与调优主要着眼于如何配置、如何监控、如何优化3点。一、参数配置 在Java虚拟机的参数中,有3种表示方法,用“ps -ef | grep java”命令,可以得到当前Java进程的所有启动参数和配置参数:标准参数(-),所有的jvm实现都必须实现这些参数的功能,并且向后兼容;非标准参数...
2016-12-04 15:39:11
135
原创 JVM监控与故障处理
现实企业级java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError内存不足内存泄露线程死锁锁争用(lock Contention)Java进程消耗CPU过高... ... 等等 这些问题在日常开发中可能被很多人忽视(比如遇到上面这些问题就重启服务器或者跳大内存,而不会深究问题根源),但能够解决这些问题是Java程序员的必备需...
2016-11-21 15:00:03
189
原创 hbase rowkey 查询
一、hbase查询方式 hbase的查询实现只提供两种方式:按指定rowkey获取唯一一条记录:get方法。按指定条件获取一批记录:scan方法。 实现条件查询功能使用的就是scan方式,scan在使用时有以下几点值的注意:scan可以通过setCaching与setBatch方法提高速度(以空间换时间)scan可以通过setStartRow与setE...
2016-07-07 15:46:08
6822
原创 HBase Rowkey设计
一、HBase的Schema和cf列族1、Schema的创建修改 Hbase模式建立或更新可以通过Hbase shell工具或者Hbase java API中的Admin类。当列族发生变动时hbase表必须处于disabled状态。例如:Configuration config = HBaseConfiguration.create();Admin admin = new...
2016-07-07 15:00:23
238
原创 hbase热点问题(数据倾斜)解决方案---rowkey散列和预分区设计
Hbase的表会被划分为1....n个Region,被托管在RegionServer中。Region二个重要的属性:Startkey与EndKey表示这个Region维护的rowkey的范围,当我们要读写数据时,如果rowkey落在某个start-end key范围内,那么就会定位到目标region并且读写到相关的数据。 默认情况下,当我们通过hbaseAdmin指定Tab...
2016-07-05 14:39:42
1865
原创 java高并发编程:11--ReentrantReadWriteLock深入分析
一、ReentrantReadWriteLock与ReentrantLock 说到ReentrantReadWriteLock,首先要做的是与ReentrantLock划清界限。它和后者都是单独的实现,彼此之间没有继承或实现的关系。 ReentrantLock 实现了标准的互斥操作,也就是一次只能有一个线程持有锁,也即所谓独占锁的概念。前面的章节中一直在强调这个特点。显...
2016-06-27 15:43:49
141
原创 java高并发编程:10--ReentrantLock深入分析
一、什么是reentrantlock java.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock 的多种实现留下了空间,各种实现可能有不同的调度算法、性能特性或者锁定语义。 ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性...
2016-06-27 15:29:56
273
原创 java高并发编程:9--Atomic原子变量与原子类
一、何谓Atomic? Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位。计算机中的Atomic是指不能分割成若干部分的意思。如果一段代码被认为是Atomic,则表示这段代码在执行过程中,是不能被中断的。通常来说,原子指令由硬件提供,供软件来实现原子方法(某个线程进入该方法后,就不会被中断,直到其执行完成) 在x86 平台上,CPU提供了在指令执行期间对总线...
2016-06-24 16:10:33
184
原创 java高并发编程:8--Copy-On-Write容器
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArr...
2016-06-24 11:25:34
122
原创 java高并发编程:7--原子操作的实现原理
一、引言 原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Intel处理器和Java里是如何实现原子操作的。二、术语定义三、处理器如何实现原子操作 32位IA-32处理器使用基于对缓存加锁或总线加锁的方式来实现多...
2016-06-24 11:07:56
174
原创 java高并发编程:5--ConcurrentLinkedQueue的实现原理分析
1. 引言 在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安全队列Con...
2016-06-23 11:23:18
160
原创 java高并发编程:6--深入分析ConcurrentHashMap
1.术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所...
2016-06-23 10:52:37
181
原创 Java高并发编程:3----Synchronized
1 引言在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。2 术语定义术语英文说明CASComp...
2016-06-21 11:51:10
116
原创 java高并发编程:4--Java中的阻塞队列
1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。阻塞队列提供了四种处理方法:...
2016-06-21 11:15:33
207
原创 java高并发编程:2--volatile可见性同步
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是synchronized 的一部分 。 锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允...
2016-06-12 11:40:33
147
原创 java高并发编程:1--内存模型
我们在学习Java高并发编程前,先了解一下《java内存管理(1) 》、《Java垃圾回收(2)》、《java线程池使用》。一、计算机硬件的效率与一致性 由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存作为内存与处理器之间的缓冲:将运算需要使用的数据复制到缓存中,让运算能快速进行,当运算结束后再...
2016-06-08 10:49:26
235
原创 HBase -ROOT-和.META.表结构【转】
在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer。什么叫相应的RegionServer?就是管理你要操作的那个Region的RegionServer。Client本身并不知道哪个RegionServer管理哪个Region,那么它是如何找到相应的RegionServer的?本文就是在...
2016-06-07 15:21:54
111
原创 hive查询使用详解
常见的hive查询操作有:count、group by、order by、join、distribute by、sort by、clusrer by、union all一、常见的聚合函数1、count计数count(*) 所有值不全为NULL时,加1操作;count(1) 不管有没有值,只要有这条记录,值就加1count(col) col列里面的值为null,值不会加1,...
2016-05-02 22:57:29
476
原创 转:Hive小文件合并
Hive的后端存储是HDFS,它对大文件的处理是非常高效的,如果合理配置文件系统的块大小,NameNode可以支持很大的数据量。但是在数据仓库中,越是上层的表其汇总程度就越高,数据量也就越小。而且这些表通常会按日期进行分区,随着时间的推移,HDFS的文件数目就会逐渐增加。小文件带来的问题 关于这个问题的阐述可以读一读Cloudera的这篇文章。简单来说,HDFS的文件元信...
2016-04-21 15:29:12
148
原创 hive数据存储组织
一般数据存储模式分为行存储、列存储以及混合存储。 行存储模式就是把一整行存在一起,包含所有的列,这是最常见的模式。这种结构能很好的适应动态的查询。但行存储模式有以下两点不足:当一行中有很多列,而我们只需要其中很少的几列时,我们也不得不把一行中所有的列读进来,然后从中抽取一些列。这样大大降低了查询执行的效率。基于多个列做压缩时,由于不同的列数据类型和取值范围不同,压缩...
2016-04-21 15:16:12
145
原创 hive中数据倾斜汇总
数据倾斜是指:map/reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点大很多,从而导致某几个节点迟迟运行不完。 在做Shuffle阶段的优化过程中,遇到了数据倾斜的...
2016-04-14 19:44:53
165
原创 数据仓库建设--概念
数据仓库:Data Warehouse(DW),一种信息系统的数据存储理论,此理论强调利用某些特殊数据存储方式,让所包含的数据,特别有利于分析处理,以产生有价值的信息并依此作决策。利用数据仓库方式所存放的数据,具有一但存入,便不随时间而更动的特性,同时存入的数据必定包含时间属性,通常一个数据仓库皆会含有大量的历史性数据,并利用特定分析方式,自其中发掘出特定信息。主要功能乃是将组织通过信息系统之在...
2016-03-31 11:42:15
191
原创 数据仓库建设--OLAP和数据立方体技术
OLAP工具通常使用数据立方体和多维数据模型,对汇总数据提供灵活的访问。例如:数据立方体能够存放多个数据维上的预计算的度量。用户可以提出数据上的OLAP查询,也可以以多维方式,通过诸如下钻或上卷这样的OLAP操作类探查数据。一、数据立方体计算:基本概念 为了提升OLAP查询效率,我们采用了完全立方体物化(预计算)与部分立方体物化。下面比较了这些策略。1、立方体物化:完...
2016-03-25 15:47:39
1785
原创 数据仓库建设--OLAP和数据立方体概念
一、OALP概述 数据立方体,他是一种用于OLAP以及OLAP操作(如上卷、下钻、切片和切块)的多维数据模型。数据立方体存储多为聚集信息。每个单元存放一个聚集值,对应于多维空间的一个数据点。每个属性都可能存在概念分层,允许在多个抽象层进行数据分析。 在最低抽象层创建的立方体称为基本方体。基本方体应当对应于感兴趣的个体实体,如sales或customer。换言之,最低层应当是对于分析...
2016-03-14 16:06:31
2546
原创 数据仓库建设--数据仓库设计与使用
一、数据仓库设计的商务分析框架 “拥有数据仓库,商务分析者能够得到什么?”首先,拥有数据仓库可以通过提供相关信息,据此估计性能并作出重要调整,以帮助战胜其他竞争对手,可以提供竞争优势。第二,数据仓库可以提高企业生产力,因为它能够快速、有效的搜集准确描述组织机构的信息。第三,数据仓库有利于客户联系管理,因为它跨越所有商务、所有部门和所有市场,提供了顾客和商品的一致视图。最后,通过一致和...
2015-12-25 11:50:48
813
原创 Java垃圾回收(2)
一、Java垃圾回收概况 在Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不稳得执行着出栈和入栈操作。每个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,并且在方法结束或线程结束时,内存自然就跟着回收了,所以这几个区域内不需要过多考虑回收问题。而Java堆和方法区则不一样,一个接口中的多个实...
2015-09-18 15:21:07
149
原创 java内存管理(1)
一、java运行时数据区域①程序计数器线程独有,记录线程运行到的字节码位置;②java虚拟机栈和本地方法栈线程独有,用来记录方法被执行时存储的局部变量、对象引用等;③Java堆线程共享,用来存储实例对象;④方法区线程共享,用来存储虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据;⑤直接内存,不占用Java虚拟机内存,但是Java虚拟机可以使用的内存。 程序计数器:...
2015-09-16 10:52:49
102
原创 数据仓库建设—维度建模
维度建模是DW/BI系统的核心,他是ETL系统的目标、数据库的结构、支持用户查询和制作报表的模型。建模要实现3个主要设计目标,分别是:能尽可能简洁的向用户展示需要的信息;能尽快返回查询结果给用户;能提供相关信息,以便精确的跟踪潜在的业务过程。 维度建模能使任何事情尽可能简单,但绝不是简化。在数据仓库和商业智能中,维度模型是给用户显示信息的首选结构,其比典型的原系统规范...
2015-07-29 17:36:26
1030
1
原创 数据仓库建设---建模案例【转】
前面介绍了一些抽象建模方法和理论,可能理解起来比较困难。所以,这里举一个例子说明数据仓库建模的大概规程。一、背景介绍 熟悉社保行业的人员知道,目前我们国家的社保主要分为养老、失业、工伤、生育、医疗保险和劳动力市场这6大块主要业务领域。在这6大业务领域中,目前的状况养老和事业的系统已经基本完善,已经有一部分数据开始互联网监测。而对于工伤、生育、医疗和劳动力市场这一块业务,...
2015-06-26 11:26:49
1680
原创 数据仓库建设---数据建模
首先我们先查看三个问题:①什么是数据模型;②为什么需要数据模型;③如何创建数据模型;一、什么是数据模型 数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世界中事务的相互关系的一种映射。在这里,数据模型表现的抽象的实体和实体之间的关系,通过对实体和实体之间关系的定义和描述,来表达实际的业务中具体的业务关系。 数据仓库模型是数...
2015-05-28 11:45:25
2005
原创 数据仓库简介---数据集市
一、数据集市定义 数据集市就是满足特定的部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。独立型数据集市:数据来自于操作型数据库,是为了满足特殊用户而建立的一种分析型环境。这种数据集市开发周期一般较短,具有灵活性,但是因为脱离了数据仓库,独立建立的数据集市可能会导致信息孤岛的存在,不能以全局的视角去分析数据...
2015-05-19 12:15:01
635
原创 数据仓库简介---设计模型
数据模型是指实体、属性、实体之间的关系对业务概念和逻辑规则进行统一的定义,命名和编码,主要描述企业的信息需求和业务规则,是业务人员和开发人员沟通的语言,是数据仓库设计工作的第一步。数据模型可以划分为概念模型、逻辑模型、物理模型。一、概念模型 从定义上来说,概念模型是最高层次的数据模型,反映了数据仓库的主要主题和重要业务之间的关系。一般来说,在进行数据仓库系统设计和开发之...
2015-05-19 12:13:50
196
原创 数据仓库简介---组成
数据仓库的组成部分有:针对数据源的分析、数据的迁移、数据的存储结构、元数据管理等。数据源分析:业务系统的源数据通常来自企业的内部信息和外部信息。内部信息指来自企业的生产数据和历史归档数据;而企业的生产数据有可能来自于不同的业务系统,如何将这些业务数据进行标准化,转换成数据仓库可以存储的数据,从而保证数据仓库中数据的一致性,这是数据源分析最重要的一步。(归档历史数据一般是指将大量的、不...
2015-05-19 12:12:57
2898
原创 数据仓库简介---概况
1、数据仓库的定义 数据仓库是一个面向主题的、集成的、稳定的、反映历史变化的、随着时间的流逝发生变化的数据集合。它主要支持管理人员的决策分析。 数据仓库收集了企业相关内部和外部各个业务系统数据源、归档文件等一系列历史数据,最后转化成企业需要的战略决策信息。面向主题:根据业务的不同而进行的内容划分;集成特性:因为不同的业务源数据具有不同的数据特点,当业务源数...
2015-05-19 12:11:49
338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人