`
文章列表
一、什么是Zookeeper   ZooKeeper 顾名思义 动物园管理员,他是拿来管大象(Hadoop) 、 蜜蜂(Hive) 、 小猪(Pig)  的管理员, Apache Hbase和 Apache Solr 以及LinkedIn sensei  等项目中都采用到了 Zookeeper。ZooKeeper是一个分布式的,开放源码的分 ...
先说AOP 说到注入,大家就会想起来IoC和AOP,确实如些,这一讲中,我们通过unity来实现对thrift插件的动态注入,事实上,这个功能在以后的项目中经常要用到,比如,你将一些功能分发到指定服务器,而这些服务器的功能是可以动态调整的,每台服务器的插件功能都不相同,这时,如果你有新的插件开发好后,如果不使用AOP的思想,那简直就是灾难!试想,有100个客户端的程序,你将会把新的程序和插件一个个的重新安装到100个客户端电脑上,这是无可厚非的,但如果有了AOP思想,那么,客户端的程序可以实现根据配置文件动态去加载BIN下的DLL的功能,这是吸引人的,呵呵。 再说Thrift容器 Thr ...
第一,下载并安装git 目前windows版本的git有几种实现,但我们选择msysgit发行版,这是目前做得兼容性最好的。 下载地址:http://code.google.com/p/msysgit/downloads/list 使用默认配置安装Git。这个不用多说,一路Next就可以,如果对各种选项不熟悉,建议使用默认配置,没问题的。   第二,创建github账号 什么是Git和GitHub   Git —The stupid content tracker, 傻瓜内容跟踪器,是一个由Linux内核开发者Linus为了更好地管理Linux内核开发而创立的分布式版本控制软 ...

slf4j 使用介绍

    博客分类:
  • Java
很偶然的机会,发现了slf4j。同事在引入的其他包与现存的log4j产生冲突,只要加入这些包,原来的log4j就会失去作用,原来能够打印的日志,现在都不输出了。一时不知道该怎么办。 后来在仔细查看日志,发现打印出来的信息有slf4j加载失败的信息。所以到网上搜索。可是,如果就加入某个包,是如何影响我的log输出的呢?   SLF4J,即简单日志门面(Simple Logging Facade for Java)。从设计模式的角度考虑,它是用来在log和代码层之间起到门面的作用。对用来来说只要使用slf4j提供的接口,即可隐藏日志的具体实现。这 与jdbc和相似。使用jdbc也就避免了不同 ...
  Client的开发顺序为:   1、定义Tsocket   2、将Socket包装到Transport(记得Transport要open() )   3、将Transport包装进Protocol   4、将Protocol包装到Client   5、调用Client的函数   6、最后关闭Transport   总之,Client就是“一步一步包进去“的过程:   [java] view plaincopy <span style="white-space:pre">    </span> ...
  在新的项目中公司在平台内部系统间使用Thrift通讯,都没有听说过。然后听同事说,是跨语言Socket通讯的开源组件。   功能及特点   1.跨平台和语言的Socket通讯组件。   2.根据伪代码的结构语言定义对象和服务结构,然后生成各语言的代码和接口   3.各语言根据组件提供的库,编写客户端和服务器端程序。服务器端实现接口并编写业务逻辑。   4.服务器端支持多种序列化方式(Binary,Compact,JSON等)和多种服务器实现       太晚了,以后在完善,先贴代码了       本测试使用WINDOW环境和JAVA语言     ...
Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can containstrings, hashes, 
转载:http://www.tbdata.org/archives/2109 几个比较特殊的点都提到了,大家可以作为参考。   在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据均匀的分配到各个reduce中,就是解决数据倾斜的根本所在。规避错误来更 ...
总体来说两者的设计思路差不多,主要就是通过划区间去分布数据,后台进程进行数据分裂 两者的区别主要在于:  1、HBase依赖于HDFS;MongoDB直接存储在本地磁盘中 2、HBase按照列族将数据存储在不同的文件中;MongoDB不分列,整个文档都存储在一个(或者说一组)文件中,通过一个有一个通用的.ns文件保存名称空间(Column-based和Document-Based之间的区别应该是指这个地方吧)3、HBase一个region只有一个HRegionServer对外提供服务(没有负载均衡的概念);MongoDB的shards(类似于region)支持负载均衡(主从结构,通过日 ...
Bloom Filter是1970年由Bloom提出的,最初广泛用于拼写检查和数据库系统中。近年来,随着计算机和互联网技术的发展,数据集的不断扩张使得 Bloom filter获得了新生,各种新的应用和变种不断涌现。Bloom filter是一个空间效率很高的 ...
数值表达式 1. 奇偶判断 不要使用 i % 2 == 1 来判断是否是奇数,因为i为负奇数时不成立,请使用 i % 2 != 0 来判断是否是奇数,或使用 高效式 (i & 1) != 0来判断。 2. 小数精确计算  System.out.println(2.00 -1.10);//0.8999999999999999 上面的计算出的结果不是 0.9,而是一连串的小数。问题在于1.1这个数字不能被精确表示为一个double,因此它被表 示为最接近它的double值,该程序从2中减去的就是这个值,但这个计算的结果并不是最接近0.9的double值。 一般地说,问题在于并不是所 ...
一、避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。 例子: import java.util.vector; class cel { void method (vector vector) { for (int i = 0; i < vector.size (); i++) // violation ; // ... } } 更正: class cel_fixed { void method ...

hive sql 优化

    博客分类:
  • Hive
Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具。 使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别, 所以需要去掉原有关系型数据库下开发的一些固有思维。   基本原则: 1:尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段 select ... from A join B on A.key = B.key where A.userid>10      and B.userid<10         and A.dt='20120417'
  1. 配置文件列表如下: [tianyc@Route conf]$ pwd/home/tianyc/hadoop-1.0.4/conf[tianyc@Route conf]$ ll总用量 76-rw-rw-r--. 1 tianyc NEU 7457 3月 6 10:38 capacity-scheduler.xml-rw-rw-r--. 1 tianyc NEU 535 3月 6 10:38 configuration.xsl-rw-rw-r--. 1 tianyc NEU 371 3月 6 14:26 core-site.xml-rw-rw-r--. 1 tianyc NE ...
  1. 内存 hadoop为各个守护进程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)统一分配的内存在hadoop-env.sh中设置,参数为HADOOP_HEAPSIZE,默认为1000M。 大部分情况下,这个统一设置的值可能并不适合。例如对于namenode节点, ...
Global site tag (gtag.js) - Google Analytics