- 浏览: 437190 次
- 性别:
- 来自: 北京
最新评论
-
世界尽头没有你:
Java并发编程与高并发解决方案网盘地址:https://pa ...
java高并发编程:2--volatile可见性同步 -
世界尽头没有你:
Java并发编程与高并发解决方案网盘地址:https://pa ...
Java高并发编程:3----Synchronized -
叮咚可乐名:
Java并发编程与高并发解决方案网盘地址1:https://p ...
Java高并发编程:3----Synchronized -
叮咚可乐名:
Java并发编程和高并发解决方案视频课程网盘地址:https: ...
Java高并发编程:3----Synchronized -
德赫0625:
简单易懂,非常给力
定时任务管理之java篇quartz使用
文章列表
成功,唯有积累,没有奇迹!!!!!!
博客中的文章分类:
一、大数据
1、Hadoop及周边产品详解
《HDFS详解》、《MapReduce详解》、《Pig详解》、《hive详解》
《Sqoop详解》、《Flume详解》、《HBase详解》、《oozie详解》
《Solr详解》、《yarn详解》、《HBase -ROOT-和.META.表结构【转】》
《
1.数据仓库概要
1.1.数据仓库起因
在建设数据仓库之前,数据散落在企业各部门应用的数据存储中,它们之间有着复杂的业务连接关系,从整体上看就如一张巨大的蜘蛛网:结构上错综复杂,却又四通八达。在企业级数 ...
1.代理关键字
代理关键字一般是指维度表中使用顺序(序列)分配的整数值作为主键,也称为“代理建”
代理关键字用于维度表和事实表的连接。在kimball的维度建模领域里,强烈推荐使用代理关键字的。在维度表和事实表的 ...
1.概述
数据仓库在建设使用的过程中,主要消耗的资源包含:CPU、MEMORY、DISK三部分。
数据仓库在计算过程中主要消耗CPU和Memory资源,当然也会消耗一些DISK资源用来存储计算过程中的临时结果。但是主要优化的方向,还 ...
hive仓库表数据最终是存储在HDFS上,由于Hadoop的特性,对大文件的处理非常高效。而且大文件可以减少文件元数据信息,减轻NameNode的存储压力。但是在数据仓库中,越是上层的表汇总程度就越高,数据量也就越小,而且这些表通常会有日期分区,随着时间的推移,HDFS的文件数目就会逐步增加。
一、小文件带来的问题
HDFS的文件包好数据块和元信息,其中元信息包括位置、大小、分块等信息,都保存在NameNode的内存中。每个对象大约占用150个字节,因此一千万文件及分块就会占用约3G的内存空间,一旦接近这个量级,NameNode的性能就会开始下降。
HDFS读写小文件时也会更 ...
一、启动分配内存
关于GC有一个常见的疑问是,在启动时,我们内存如何分配?用-Xmn,-Xmx,-Xms,-Xss,-XX:NewSize,-XX:MaxNewSize,-XX:MaxPermSize,-XX:PermSize,-XX:SurvivorRatio,-XX:PretenureSizeThreShold,-XX:MaxTenuringThreshold就基本可以配置内存启动时的分配情况。但是,具体配置多少?设置小了,频繁GC(甚至内存溢出),设置大了,内存浪费。结合前面对于内存区域和其他作用的学习,尽量考虑如下建议:
-XX:PermSize尽量比-XX:MaxPe ...
学习Java GC机制的目的是为了在JVM出现问题时分析原因并解决。JVM监控与调优主要着眼于如何配置、如何监控、如何优化3点。
一、参数配置
在Java虚拟机的参数中,有3种表示方法,用“ps -ef | grep java”命令,可以得到当前Java进程的所有启动参数和配置参数:
标准参数(-),所有的jvm实现都必须实现这些参数的功能,并且向后兼容;
非标准参数(-X),默认JVM实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;
非Stable参数(-XX),此类参数各个JVM实现都有所不同,将来可能会随时取消,需要慎重使用(但是,这 ...
现实企业级java开发中,有时候我们会碰到下面这些问题:
OutOfMemoryError内存不足
内存泄露
线程死锁
锁争用(lock Contention)
Java进程消耗CPU过高
... ... 等等
这些问题在日常开发中可能被很多人忽视(比如遇到上面这些问题就重启服务器或者跳大内存,而不会深究问题根源),但能够解决这些问题是Java程序员的必备需求。JDK本身提供了很多JVM性能调优监控工具,除了集成式的VisualVM和JConsole外,还有jps、jstack、jmap、jstat、hprof等小工具。
一、jps(java virtu ...
一、hbase查询方式
hbase的查询实现只提供两种方式:
按指定rowkey获取唯一一条记录:get方法。
按指定条件获取一批记录:scan方法。
实现条件查询功能使用的就是scan方式,scan在使用时有以下几点值的注意:
scan可以通过setCaching与setBatch方法提高速度(以空间换时间)
scan可以通过setStartRow与setEndRow来限定范围。范围越小,性能越高。
scan可以通过setFilter方法添加过滤器,这也是分页、多条件查询的基础。
二、RowFilter使用
operator
descript ...
一、HBase的Schema和cf列族
1、Schema的创建修改
Hbase模式建立或更新可以通过Hbase shell工具或者Hbase java API中的Admin类。当列族发生变动时hbase表必须处于disabled状态。例如:
Configuration config = HBaseConfiguration.create();
Admin admin = new Admin(conf);
String table = "myTable";
admin.disableTable(table);
HColumnDescriptor ...
Hbase的表会被划分为1....n个Region,被托管在RegionServer中。Region二个重要的属性:Startkey与EndKey表示这个Region维护的rowkey的范围,当我们要读写数据时,如果rowkey落在某个start-end key范围内,那么就会定位到目标region并且读写到 ...
一、ReentrantReadWriteLock与ReentrantLock
说到ReentrantReadWriteLock,首先要做的是与ReentrantLock划清界限。它和后者都是单独的实现,彼此之间没有继承或实现的关系。
ReentrantLock 实现了标准的互斥操作,也就是一次只能有一个线程持有锁,也即所谓独占锁的概念。前面的章节中一直在强调这个特点。显然这个特点在一定程度上面减低了吞吐量,实际上独占锁是一种保守的锁策略,在这种情况下任何“读/读”,“写/读”,“写/写”操作都不能同时发生。但是同样需要强调的一个概念是,锁是有一定的开销的,当并发比较大 ...
一、什么是reentrantlock
java.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock 的多种实现留下了空间,各种实现可能有不同的调度算法、性能特性或者锁定语义。 ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似锁投票、定时锁等候和可中断锁等候的一些特性。此外,它还提供了在激烈争用情况下更佳的性能。(换句话说,当许多线程都想访问共享资源时,JVM 可以花更少的时候来调度线程,把更多时间 ...
一、何谓Atomic?
Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位。计算机中的Atomic是指不能分割成若干部分的意思。如果一段代码被认为是Atomic,则表示这段代码在执行过程中,是不能被中断的。通常来说, ...
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。CopyOnWrite容器非常有用,可以在非常多的并发场景中使用到。
一、什么是CopyOnWrite容器
CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容 ...