坚信科学,分享技术

Category Archives: java

这里有原创java教程,都是来自工作中的积累,有时候有些些弱。

利用sqoop将mysql数据同步到hive手记

1.下载 http://archive.cloudera.com/cdh/3/sqoop-1.2.0-CDH3B4.tar.gz 2.下载 http://archive.cloudera.com/cdh/3/hadoop-0.20.2-CDH3B4.tar.gz 3.解压 2 4.复制3里hadoop-core-0.20.2-CDH3B4.jar到sqoop的lib下 5.在某处复制mysql-connector-java-5.1.10.jar到sqoop的lib下 6.修改configure-sqoop 注释掉hbase zookeeper检查: #if [ ! -d "${HBASE_HOME}" ]; then # echo "Error: $HBASE_HOME does not exist!" # echo 'Please set $HBASE_HOME to the root of your HBase installation.' # exit 1 …

Continue reading

Posted in java | Tagged , , | 1 Comment

用hadoop hive协同scribe log用户行为分析方案

scribe 是facebook 开源的分布式日志系统,在其示例配置中,并发量可达到max_msg_per_second=2000000。54chen使用手记见:http://www.54chen.com/java-ee/log-server-scribe-helper.html hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为 MapReduce任务进行运行。54chen使用手记见:http://www.54chen.com/_linux_/hive-hadoop-how-to-install.html 下面来讲述二者合成的使用办法: 创建和scribe格式相符的hive table bin/hive > create table log(active string,uuid string,ip string,dt string) row format delimited fields terminated by ',' collection items terminated by "\n" stored as textfile; 加载数据 >LOAD DATA LOCAL INPATH '/opt/soft/hadoop-0.20.2/hive-0.7.0/data/log-2011-04-13*' OVERWRITE INTO …

Continue reading

Posted in java, 架构研究 | Tagged , , | 3 Comments

QCon2011讲师经验总结及QCon2011的ppt下载

第一次作为讲师参加这样大规模的会议,经验不足,特总结一下: 1.虚心接受批评建议,诚心提高演讲技巧。 2.会前准备过份考虑切合当天大会主旋律。 3.铺垫过多,观众需要速食。 4.要讲的东西一定要放到ppt上,会场很大,由于音响回声,前半场需要讲师,后半场只需要幻灯播放员。 5.三段式的ppt最能快速切入主题:1)解决什么问题 2)用什么关键代码解决 3)在哪里下载 6.不谈构架,潜心解决实际问题。 7.10月份杭州QCon如果时间允许,再去分享更好的主题:米聊团队背后的技术,届时一定不忘记上面的6点。 如果您当天听了我的讲座有任何建议,欢迎以评论方式提出。 下面是ppt: Qcon2011-54chen-互联网分步式构架分享 View more presentations from zhen chen. QCon 2011 beijing官方下载地址 http://www.qconbeijing.com

Continue reading

Posted in java, 架构研究 | Tagged , , | 9 Comments

hadoop hive安装手记

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为 MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 [网络环境设置] vim /etc/hosts 192.168.100.52 hadoop1 192.168.99.34 hadoop2 192.168.103.135 hadoop3 分别到对应机器执行: hostname hadoop1 hostname hadoop2 hostname hadoop3 [打通机器] hadoop1# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa hadoop1# scp ~/.ssh/id_dsa.pub hadoop2:/root/ hadoop1# scp ~/.ssh/id_dsa.pub hadoop3:/root/ hadoop2# cat id_dsa.pub >> …

Continue reading

Posted in java, linux | Tagged , | 4 Comments

maven项目代码质量检测工具sonar使用手记

Sonar是一个开源代码质量控制工具。把它加到现在的持续集成工具中就能够让你的java开发项目集中处于质量控制之下。下面是安装和使用记录 : 修改.m2/settings.xml 增加下边的内容到profiles段落中: <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- EXAMPLE FOR MYSQL --> <sonar.jdbc.url> jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8 </sonar.jdbc.url> <sonar.jdbc.driverClassName>com.mysql.jdbc.Driver</sonar.jdbc.driverClassName> <sonar.jdbc.username>sonar</sonar.jdbc.username> <sonar.jdbc.password>sonar</sonar.jdbc.password> <!-- SERVER ON A REMOTE HOST --> <sonar.host.url

Continue reading

Posted in java | Tagged , | 2 Comments

关于maven,做错的十件事

maven管理的java项目越来越多,令人遗憾的是在使用maven的时候,多多少少都会遇到这样那样的问题,于是会有各种各样的解决办法,下面是一个列表,列出了使用maven的误区和解决办法。 1.频繁在所有项目使用mvn install并且随时在更新 这是我见过的最常见的问题,解决了这个问题有许多的好处。在maven的文档中找不到一句对这种情况的描述,不过我坚信一句话:每个artifact在maven仓库中都有一个家。 在你的公司里,应该有一个仓库管理工具。每一个你开发的模块都应该发布到这个仓库上去。你可能会问,应该什么时候发布?答案是,每次在你的构建服务器构建之后,都需要发到仓库。我们通常都使用Hudson来做这件事情,另外还有Continuum和TeamCity也还不错。 现在,当你所有的项目都在仓库里有的时候,你的项目就不再需要不断地mvn install了。如果你修改一个模块,你只需要重建这个模块,其余依赖的模块会由maven自动从仓库中下载。 2.你和你的团队成员依靠复制.m2文件夹来解决项目里的依赖找不到的问题 这看起来很疯狂,不过这件事情经常发生。解决的办法,设置一名仓库管理员。一旦管理好了仓库,就不会再出现大家找u盘复制.m2文件夹的事情了。因为可以加速,你不应该把本地的仓库整个地删除掉,毕竟在本地读取仓库是最快的。 3. 你为了解决依赖找不到一个老版本构件的问题,把最新的pom文件修改了版本弄到了老文件里后安装 考虑到这种情况,有人把一个模块的版本从1.3-SNAPSHOT修改成了1.4-SNAPSHOT。你马上要去度假,所以呢你就不想再更新和安装1.3的版

Continue reading

Posted in java | Tagged , | 4 Comments

amoeba系统性能报告

关于amoeba,请见http://www.54chen.com/java-ee/amoeba-rose-open-source-big-website-arch.html,他是一个不错的mysql proxy替代工具。 读操作 100个并发,mysql: load:7-8 Rate: 225 req/s Rate: 240 req/s Rate: 216 req/s Rate: 193 req/s Rate: 212 req/s Rate: 210 req/s Rate: 208 req/s Rate: 229 req/s Rate: 215 req/s Rate: 231 req/s Rate: 241 req/s Rate: 210 …

Continue reading

Posted in java | Tagged | 1 Comment

Amoeba+rose:开源项目搭建大型网站可扩展构架实记

java是一把双刃剑,可以很重地伤人,亦可很重地自伤。曾在一处见到,淘宝在长期使用java构建web项目后,得出一个结论:积重难返。 实际工作经验得到的结论,积重难返的原因,往往不是java本身的缘故,而是团队成员基础积累参差不齐,许多次的“一不小心”积累成了最终的结果。到了悔之晚矣的时候自然就积重难返了。如何避免java使用自伤,最关键在于,统一团队成员的code入口,框下可能发生的事情,避开不能发生的事情,言归正传,下面开始介绍两个非常不错的java开源项目,搭配两个项目,可以搞定所有的mysql+java项目的任何方向的扩展和自由的开发而不担心积重难返。 项目简介 1) rose框架: 来自人人网王志亮大侠的大作,其优异的性能撑下了SNS网站复杂多变的业务(人人网大量使用),同时开发非常方便,有大量的文档可供参考。 项目地址: http://code.google.com/p/paoding-rose/ 2) Amoeba: Amoeba(变形虫)项目,专注分布式数据库 proxy 开发。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。使用这个项目可以将DB层透明,简单做到分库分表,甚至无限partition。作者陈思儒大侠。 下面有一篇两年前Fenng对作者的采访: http://www.infoq.com/cn/articles/interview-chensiru-amoeba 项目地址: http://amoeba.meidusa.com/ 构架图 相关配置 1) 配置rose中的

Continue reading

Posted in java | Tagged , | 3 Comments

分布式日志系统scribe使用手记

scribe 是facebook 开源的分布式日志系统 。其使用了thrift传输log,由于使用thrift,所以不论是什么语言的项目都可以实现日志收集,可达到远程或者是本地同步远程的分布式日志收集效果,在其示例配置中,并发量可达到max_msg_per_second=2000000,对普通的应用来说,每秒上百万的访问量可能性很小,因此基本上即使最简单的配置,远程收集所有项目的log也是可靠的,如果压力大的话,可以采取主从的配置,将日志打到本地后由scribe的主从配置来自动同步。下面讲述如何安装和使用scribe。 下载boost、thrift、scribe boost_1_45_0.tar.gz thrift-0.5.0.tar.gz facebook-scribe-2ee14d3.zip 通过yum安装需要的依赖 yum install libevent libevent-devel python-devel yum install gcc-c++ yum install automake yum install byacc flex 安装boost tar -zxvf boost_1_45_0.tar.gz cd boost_1_45_0 ./bootstrap.sh ./bjam install --prefix=/opt/soft/bootstrap 安装thrift-0.5.0 tar zxvf thrift-0.5.0.tar.gz ./configure --with-php-config=/opt/soft/php/bin/php-config &hel

Continue reading

Posted in java, 架构研究 | Tagged , | 7 Comments

闲话maven m2eclipse不再支持nested module的原因

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 如果你已经有十次输入同样的Ant targets来编译你的代码、jar或者war、生成javadocs,你一定会自问,是否有一个重复性更少却能同样完成该工作的方法。Maven便提供了这样一种选择,将你的注意力从作业层转移到项目管理层。Maven项目已经能够知道如何构建和捆绑代码,运行测试,生成文档并宿主项目网页. 我严重支持大范围使用maven,但对于内嵌module的支持,我表示怀疑。在使用eclipse进行java开发的时候,要使用maven,m2eclipse插件是必不可少的。之所以在新版本的m2eclipse不再支持nested module的功能了,也许是m2eclipse的人员和我一样有相同的担忧。 1)项目内嵌导致工程脆弱 maven的目标是松耦合项目与项目之间的联系,任何一个项目不用关心所依赖项目的变化和生命周期,关联的项目不用管是不是在你的eclipse workspace中,还是本地的仓库中还是远程的仓库里。但是一旦有了项目的内嵌,这就变成了紧耦合的项目关系,你必须关心子文件夹里的东西,整个项目变得更加脆弱。 2)浪费时间 如果你的项目有无数的内嵌子项目,一旦你修改了其中一个子项目的代码,你不得不全部重新检出、测试、打包,这样的生命周期都必须要花时间来做,不必须的时间浪费在这里了。 3)鼓励独立的项目反对代码重用 通常情况下,maven鼓励大家把具有独立功能的模块独立成单独的项目。如果你的项目有一部分代码需要被别的项目重用,你应该做的事情是把这

Continue reading

Posted in java | Tagged , , | 4 Comments
Page 3 of 712345...Last »