<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_专注于中国的商业智能</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/36087/rss</id><updated>2012-01-17T09:07:13Z</updated><author><name>李梦蛟</name><uri>http://www.cnblogs.com/lijun4017/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lijun4017/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/36087/rss"/><entry><id>http://www.cnblogs.com/lijun4017/archive/2012/01/17/2324875.html</id><title type="text">hadoop1.0.0正式版发布了</title><summary type="text">27 December, 2011: release 1.0.0 availableAfter six years of gestation, Hadoop reaches 1.0.0! This release is from the 0.20-security code line, and includes support for:securityHBase (append/hsynch/hflush, and security)webhdfs (with full support for security)performance enhanced access to local file</summary><published>2012-01-17T09:07:00Z</published><updated>2012-01-17T09:07:00Z</updated><author><name>李梦蛟</name><uri>http://www.cnblogs.com/lijun4017/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lijun4017/archive/2012/01/17/2324875.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lijun4017/archive/2012/01/17/2324875.html"/><content type="html">&lt;h3  style="widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 18px 0px 0.5em; font: bold 17px arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; padding: 0px;"&gt;27 December, 2011: release 1.0.0 available&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left; widows: 2; text-transform: none; background-color: #ffffff; margin-top: 0.5em; text-indent: 0px; font: 13px/15px Verdana, Helvetica, sans-serif; white-space: normal; orphans: 2; margin-bottom: 1em; letter-spacing: normal; color: #000000; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;After six years of gestation, Hadoop reaches 1.0.0! This release is from the 0.20-security code line, and includes support for:&lt;/p&gt;&#xD;
&lt;ul style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 25px; padding-right: 25px; font: 13px Verdana, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&#xD;
&lt;li style="padding-bottom: 0px; margin-top: 0.5em; padding-left: 5px; padding-right: 5px; margin-bottom: 0.5em; padding-top: 0px;"&gt;security&lt;/li&gt;&#xD;
&lt;li style="padding-bottom: 0px; margin-top: 0.5em; padding-left: 5px; padding-right: 5px; margin-bottom: 0.5em; padding-top: 0px;"&gt;HBase (append/hsynch/hflush, and security)&lt;/li&gt;&#xD;
&lt;li style="padding-bottom: 0px; margin-top: 0.5em; padding-left: 5px; padding-right: 5px; margin-bottom: 0.5em; padding-top: 0px;"&gt;webhdfs (with full support for security)&lt;/li&gt;&#xD;
&lt;li style="padding-bottom: 0px; margin-top: 0.5em; padding-left: 5px; padding-right: 5px; margin-bottom: 0.5em; padding-top: 0px;"&gt;performance enhanced access to local files for HBase&lt;/li&gt;&#xD;
&lt;li style="padding-bottom: 0px; margin-top: 0.5em; padding-left: 5px; padding-right: 5px; margin-bottom: 0.5em; padding-top: 0px;"&gt;other performance enhancements, bug fixes, and features&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p style="text-align: left; widows: 2; text-transform: none; background-color: #ffffff; margin-top: 0.5em; text-indent: 0px; font: 13px/15px Verdana, Helvetica, sans-serif; white-space: normal; orphans: 2; margin-bottom: 1em; letter-spacing: normal; color: #000000; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left; widows: 2; text-transform: none; background-color: #ffffff; margin-top: 0.5em; text-indent: 0px; font: 13px/15px Verdana, Helvetica, sans-serif; white-space: normal; orphans: 2; margin-bottom: 1em; letter-spacing: normal; color: #000000; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;Please see the complete&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;a style="color: #009999;" href="http://hadoop.apache.org/common/docs/r1.0.0/releasenotes.html"&gt;Hadoop 1.0.0 Release Notes&lt;/a&gt;&lt;span &gt;&amp;nbsp;&lt;/span&gt;for details.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lijun4017/aggbug/2324875.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lijun4017/archive/2012/01/17/2324875.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lijun4017/archive/2011/10/26/2225108.html</id><title type="text">支持adppend的hadoop官方版本终于发布了</title><summary type="text">hadoop0.20.2以及以前的版本都没有append 和 sync的特性，根据字面意思理解，应该是写入数据不能追加，对我的影响是hbase一直不能使用hadoop的官方发布版，因为它不支持append特性，使用的话可能导致数据丢失。因此之前如果hbase想要使用的话，要么就去使用cloudera的hadoop版本或者是自行编译hadoop的一个支持append的分支版本，但是这个麻烦呀，另外也不知道这些分支版本会不会有bug，官方的支持怎样。现在这个担心终于结束了，刚于10月17号apache的官网发布了hadoop的0.20.205.0版本，查看了它的NEW FEATURES，2.HDF</summary><published>2011-10-26T05:24:00Z</published><updated>2011-10-26T05:24:00Z</updated><author><name>李梦蛟</name><uri>http://www.cnblogs.com/lijun4017/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lijun4017/archive/2011/10/26/2225108.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lijun4017/archive/2011/10/26/2225108.html"/><content type="html">&lt;p&gt;hadoop0.20.2以及以前的版本都没有&amp;nbsp;append 和 sync的特性，根据字面意思理解，应该是写入数据不能追加，对我的影响是hbase一直不能使用hadoop的官方发布版，因为它不支持append特性，使用的话可能导致数据丢失。因此之前如果hbase想要使用的话，要么就去使用cloudera的hadoop版本或者是自行编译hadoop的一个支持append的分支版本，但是这个麻烦呀，另外也不知道这些分支版本会不会有bug，官方的支持怎样。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;现在这个担心终于结束了，刚于10月17号apache的官网发布了hadoop的0.20.205.0版本，查看了它的&lt;a href="http://hadoop.apache.org/common/docs/r0.20.205.0/changes.html"&gt;NEW FEATURES&amp;nbsp;&lt;/a&gt;&amp;nbsp;，&lt;/p&gt;&#xD;
&lt;p&gt;2.HDFS-200. Support append and sync for hadoop 0.20 branch.&lt;br /&gt;(dhruba)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;hbase终于可以与官方的hadoop集成了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lijun4017/aggbug/2225108.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lijun4017/archive/2011/10/26/2225108.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lijun4017/archive/2011/10/24/2222925.html</id><title type="text">把BI团队从按用户需求开发的怪圈中解放出来</title><summary type="text">根据最近几年对BI的了解，以及同行的一些感叹，发现其实目前中国的BI推广还处在初级阶段，绝大部分公司还是按照传统的软件开发方式来实施的BI项目。即收集用户需求，按用户需求开发报表，那样的话BI项目就成了一个不折不扣的报表系统了。 最近一直在考虑这个问题，如何跳出这个怪圈，也查阅了一些书籍，结合自己的一些想法，于是便有了此文。 事实上问用户收集需求的时候，如果用户的水平不够高（事实上确实是这样），那么做报表是非常盲目的，甚至业务架构的很多是不合理的，即使是合理的，也是不利于BI的整体信息架构的。要想解决这个问题，还是得从用户身上着手，要想办法让用户最大程度的参与进来，让他们和BI团队绑成...</summary><published>2011-10-24T09:54:00Z</published><updated>2011-10-24T09:54:00Z</updated><author><name>李梦蛟</name><uri>http://www.cnblogs.com/lijun4017/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lijun4017/archive/2011/10/24/2222925.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lijun4017/archive/2011/10/24/2222925.html"/><content type="html">&lt;p&gt;根据最近几年对BI的了解，以及同行的一些感叹，发现其实目前中国的BI推广还处在初级阶段，绝大部分公司还是按照传统的软件开发方式来实施的BI项目。即收集用户需求，按用户需求开发报表，那样的话BI项目就成了一个不折不扣的报表系统了。&lt;/p&gt;&#xD;
&lt;p&gt;最近一直在考虑这个问题，如何跳出这个怪圈，也查阅了一些书籍，结合自己的一些想法，于是便有了此文。&lt;/p&gt;&#xD;
&lt;p&gt;事实上问用户收集需求的时候，如果用户的水平不够高（事实上确实是这样），那么做报表是非常盲目的，甚至业务架构的很多是不合理的，即使是合理的，也是不利于BI的整体信息架构的。要想解决这个问题，还是得从用户身上着手，要想办法让用户最大程度的参与进来，让他们和BI团队绑成一块。&lt;/p&gt;&#xD;
&lt;p&gt;下面我就把企业中的BI使用者的角色分成如下几类：&lt;/p&gt;&#xD;
&lt;p style="padding-left: 30px;"&gt;系统管理员：没有数据权限；没有功能权限；负责配置其他人的权限；&lt;br /&gt;BI专家：拥有所有数据权限；拥有多维分析，报表查看，报表开发，模型开发权限；负责开发和维护BI系统；&lt;br /&gt;商务分析师：拥有所有数据权限；拥有多维分析，报表查看，报表开发权限；负责在公司和运营的层面进行数据分析，给公司高层提供数据报告；&lt;br /&gt;各个部门专家：拥有本部门数据权限；拥有多维分析，报表查看，报表开发权限；负责本部门的数据分析，和简单的报表的开发；&lt;br /&gt;各个部门管理者：拥有本部门数据权限；报表查看权限；查看数据报表；&lt;br /&gt;各个部门普通用户：拥有本部专家指定的数据访问权；报表查看权限；查看数据报表；&lt;/p&gt;&#xD;
&lt;p style="padding-left: 30px;"&gt;注：以上分类是基于cognos8解决方案的，思想可以推广到其他BI解决方案。&lt;/p&gt;&#xD;
&lt;p&gt;在有以上思路之前，曾经一度分角色混乱，到了管理很困难的地步（人家问我拿一份能够清楚表示各个角色的权限的清单的时候，已经相当困难），由此以上分类有如下一些优点：&lt;br /&gt;1.理顺权限分类，方便管理；&lt;br /&gt;2.让用户最大限度参与到BI项目中，简单的报表部门专家自己能自行开发（当然没有数据的前提下，需要BI专家先进行数据模型的开发），比原来提交开发需求，等待开发的时间短很多，因此部门领导也乐意参与进来；&lt;br /&gt;3.这样一来，分担了BI团队的繁重的具体报表的开发量，抽身出来可以把时间投入到数据模型方面，提炼出可重要性更好的分析模型；&lt;br /&gt;4.最重要的是，让各个部门都熟悉了自己能够访问到的数据资源。在这之前的情况是对BI感兴趣的部门对BI使用还可以，但是不感兴趣的部门，BI里面有什么东西根本不知道，需要数据的时候，就来找你要；&lt;/p&gt;&#xD;
&lt;p&gt;当然配合这个角色权限体系，少不了的还是对用户的培训，要花较长的时间去把各个业务部门的用户给培养出来。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lijun4017/aggbug/2222925.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lijun4017/archive/2011/10/24/2222925.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lijun4017/archive/2011/08/17/2143226.html</id><title type="text">使用hbase的Bulk Load</title><summary type="text">1.首先配置$HADOOP_HOME下的conf/hadoop-env.sh文件，修改其中的HADOOP_CLASSPATH为如下export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/hadoop/hbase-0.90.3.jar:/hadoop/hbase/hbase-0.90.3-tests.jar:/hadoop/hbase/conf:/hadoop/hbase/lib/guava-r06.jar:/hadoop/hbase/lib/zookeeper-3.3.2.jar2.配置$HBASE_HOME下的conf/hbase-env.sh文件，修改其中的H</summary><published>2011-08-17T07:57:00Z</published><updated>2011-08-17T07:57:00Z</updated><author><name>李梦蛟</name><uri>http://www.cnblogs.com/lijun4017/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lijun4017/archive/2011/08/17/2143226.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lijun4017/archive/2011/08/17/2143226.html"/><content type="html">&lt;p&gt;1.首先配置$HADOOP_HOME下的conf/hadoop-env.sh文件，修改其中的HADOOP_CLASSPATH为如下&lt;/p&gt;&#xD;
&lt;p&gt;export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/hadoop/hbase-0.90.3.jar:/hadoop/hbase/hbase-0.90.3-&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;tests.jar:/hadoop/hbase/conf:/hadoop/hbase/lib/guava-r06.jar:/hadoop/hbase/lib/zookeeper-3.3.2.jar&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2.配置$HBASE_HOME下的conf/hbase-env.sh文件，修改其中的HBASE_CLASSPATH为如下&lt;/p&gt;&#xD;
&lt;p&gt;export HBASE_CLASSPATH=$HBASE_CLASSPATH:/hadoop/hadoop-config&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.配置$HADOOP_HOME下的conf/core-site.xml,加入如下信息&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;property&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;name&amp;gt;hbase.zookeeper.quorum&amp;lt;/name&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;value&amp;gt;hadoop-namenode,hadoop-datanode1,hadoop-datanode2&amp;lt;/value&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;description&amp;gt;&amp;lt;/description&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;/property&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;4.重启hbase和hadoop&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;5.给hdfs上传待导入hbase的数据文件，示例文件为/user/limj/hbaseload/hbase_test2&lt;/p&gt;&#xD;
&lt;p&gt;1&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;2&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;row1&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;test&lt;/p&gt;&#xD;
&lt;p&gt;2&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;4&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;row2&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;test&lt;/p&gt;&#xD;
&lt;p&gt;3&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;6&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;row3&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;test&lt;/p&gt;&#xD;
&lt;p&gt;4&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;8&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;row4&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;test&lt;/p&gt;&#xD;
&lt;p&gt;5&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;10&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;row5&lt;span  style="white-space: pre;"&gt;	&lt;/span&gt;test&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;6.在hbase中创建表t8&lt;/p&gt;&#xD;
&lt;p&gt;create 't8','f1'&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;7. 在$HADOOP_HOME下执行bin/hadoop jar /hadoop/hbase/hbase-0.90.3.jar &amp;nbsp;importtsv &amp;nbsp; -&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Dimporttsv.columns=HBASE_ROW_KEY,f1:a,f1:b,f1:c t8 /user/limj/hbaseload&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lijun4017/aggbug/2143226.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lijun4017/archive/2011/08/17/2143226.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lijun4017/archive/2011/08/11/2135064.html</id><title type="text">关于kettle使用crontab+kitchen部署的一点波折</title><summary type="text">刚使用kettle不久，由于我们在kettle程序中使用了hive的驱动，因此在kitchen.sh中增加了hive驱动的一行classpath。写的脚本使用kitchen执行我们的job没有任何问题。但是用crontab做计划任务部署上去的时候，发现执行不了了，报错信息是找不到hive驱动。经过排查，基本确定问题出在classpath上，但是无论是在脚本里面 把classpath补全还是在crontab中把classpath都没有解决问题。不经意查看kitchen.sh的时候，发现如下两行BASEDIR=`dirname $0`CLASSPATH=$BASEDIR才知道原来kitchen的c</summary><published>2011-08-11T07:29:00Z</published><updated>2011-08-11T07:29:00Z</updated><author><name>李梦蛟</name><uri>http://www.cnblogs.com/lijun4017/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lijun4017/archive/2011/08/11/2135064.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lijun4017/archive/2011/08/11/2135064.html"/><content type="html">&lt;p&gt;刚使用kettle不久，由于我们在kettle程序中使用了hive的驱动，因此在kitchen.sh中增加了hive驱动的一行classpath。写的脚本使用kitchen执行我们的job没有任何问题。但是用crontab做计划任务部署上去的时候，发现执行不了了，报错信息是找不到hive驱动。&lt;/p&gt;&#xD;
&lt;p&gt;经过排查，基本确定问题出在classpath上，但是无论是在脚本里面 把classpath补全还是在crontab中把classpath都没有解决问题。不经意查看kitchen.sh的时候，发现如下两行&lt;/p&gt;&#xD;
&lt;p&gt;BASEDIR=`dirname $0`&lt;/p&gt;&#xD;
&lt;p&gt;CLASSPATH=$BASEDIR&lt;/p&gt;&#xD;
&lt;p&gt;才知道原来kitchen的classpath是读取的当前路径，于是在调用kitchen.sh的脚本中增加了一行&lt;/p&gt;&#xD;
&lt;p&gt;cd /pentaho/pentaho/data-integration 切换到kettle的根目录，问题得到解决。&lt;/p&gt;&#xD;
&lt;p&gt;完整的脚本代码为&lt;/p&gt;&#xD;
&lt;p&gt;export JAVA_HOME=/usr/local/java/&lt;/p&gt;&#xD;
&lt;p&gt;cd /pentaho/pentaho/data-integration&lt;/p&gt;&#xD;
&lt;p&gt;./kitchen.sh /rep 192.168.0.13.PDI_Repository /user root /pass *** /dir /Plan_Job /job Job_Load_All /logfile /pentaho/Plan/kitchen_run.log&lt;/p&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lijun4017/aggbug/2135064.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lijun4017/archive/2011/08/11/2135064.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lijun4017/archive/2011/08/11/2135031.html</id><title type="text">使用Ganglia对hadoop进行监控</title><summary type="text">Ganglia是一个监控服务器，集群的开源软件，能够用曲线图表现最近一个小时，最近一天，最近一周，最近一月，最近一年的服务器或者集群的cpu负载,内存,网络,硬盘等指标。Ganglia的强大在于：ganglia服务端能够通过一台客户端收集到同一个网段的所有客户端的数据，ganglia集群服务端能够通过一台服务端收集到它下属的所有客户端数据。这个体系设计表示一台服务器能够通过不同的分层能够管理上万台机器。这个功能是其他mrtg,nagios,cacti所不能比拟。因为hadoop的支持问题，我们推荐安装ganglia3.0.3。操作系统环境：CentOS5.2集群环境:namenode 192.</summary><published>2011-08-11T07:15:00Z</published><updated>2011-08-11T07:15:00Z</updated><author><name>李梦蛟</name><uri>http://www.cnblogs.com/lijun4017/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lijun4017/archive/2011/08/11/2135031.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lijun4017/archive/2011/08/11/2135031.html"/><content type="html">&lt;p&gt;Ganglia是一个监控服务器，集群的开源软件，能够用曲线图表现最近一个小时，最近一天，最近一周，最近一月，最近一年的服务器或者集群的cpu负载,内存,网络,硬盘等指标。&lt;/p&gt;&#xD;
&lt;p&gt;Ganglia的强大在于：ganglia服务端能够通过一台客户端收集到同一个网段的所有客户端的数据，ganglia集群服务端能够通过一台服务端收集到它下属的所有客户端数据。这个体系设计表示一台服务器能够通过不同的分层能够管理上万台机器。这个功能是其他mrtg,nagios,cacti所不能比拟。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;因为hadoop的支持问题，我们推荐安装ganglia3.0.3。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;操作系统环境：CentOS5.2&lt;/p&gt;&#xD;
&lt;p&gt;集群环境:&lt;/p&gt;&#xD;
&lt;p&gt;namenode 192.168.75.144&lt;/p&gt;&#xD;
&lt;p&gt;datanode1 192.168.75.145&lt;/p&gt;&#xD;
&lt;p&gt;datanode2 192.168.75.146&lt;/p&gt;&#xD;
&lt;p&gt;ganglia的服务端安装在namenode上&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下载安装包，清单如下：&lt;/p&gt;&#xD;
&lt;p&gt;rrdtool-1.0.50-3.el5.rf.x86_64.rpm&lt;/p&gt;&#xD;
&lt;p&gt;ganglia-web-3.0.3-1.noarch.rpm&lt;/p&gt;&#xD;
&lt;p&gt;ganglia-gmetad-3.0.3-1.rhel4.x86_64.rpm&lt;/p&gt;&#xD;
&lt;p&gt;ganglia-gmond-3.0.3-1.rhel4.x86_64.rpm&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一、安装客户端&lt;/p&gt;&#xD;
&lt;p&gt;#rpm -Uvh ganglia-gmond-3.0.3-1.rhel4.x86_64.rpm&lt;/p&gt;&#xD;
&lt;p&gt;安装完毕以后gmond默认就启动了，稍后可以使用service gmond start|stop|restart等控制启动，停止，重启等功能；&lt;/p&gt;&#xD;
&lt;p&gt;在/etc/下会产生一个gmond.conf的配置文件。&lt;/p&gt;&#xD;
&lt;p&gt;在这个配置文件中先找到setuid = yes,改成setuid =no;然后找到在cluster中的name，改成name ="hadoop-test";&lt;/p&gt;&#xD;
&lt;p&gt;其他都不用改了，保存以后重启gmond服务；&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;二、安装服务器端&lt;/p&gt;&#xD;
&lt;p&gt;1.首先安装rrdtool&lt;/p&gt;&#xD;
&lt;p&gt;#rpm -Uvh rrdtool-1.0.50-3.el5.rf.x86_64.rpm&lt;/p&gt;&#xD;
&lt;p&gt;安装以后执行rrdtool，能够显示版本号等信息说明rrdtool安装完毕&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;创建rrd数据存储的文件夹, 修改属性拥有者为: "nobody"：&lt;/p&gt;&#xD;
&lt;p&gt;#mkdir /var/lib/ganglia/rrds&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;#chown nobody:nobody &amp;nbsp;/var/lib/ganglia/rrds&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2.安装gmetad&lt;/p&gt;&#xD;
&lt;p&gt;#rpm -Uvh ganglia-gmetad-3.0.3-1.rhel4.x86_64.rpm&lt;/p&gt;&#xD;
&lt;p&gt;安装过程中可能会提示依赖ruby 等包，一路使用yum install ruby安装其他需要的包&lt;/p&gt;&#xD;
&lt;p&gt;安装完成后gmetad服务默认就启动了，稍后可以使用service gmetad start|stop|restart等控制启动，停止，重启等功能；&lt;/p&gt;&#xD;
&lt;p&gt;在/etc/下会产生一个gmetad.conf的配置文件。&lt;/p&gt;&#xD;
&lt;p&gt;在这个配置文件中主要是增加一些datasource，即被监控的机器的列表。&lt;/p&gt;&#xD;
&lt;p&gt;在我的例子中是&lt;/p&gt;&#xD;
&lt;p&gt;data_source "hadoop-test" hadoop-namenode:8649 hadoop-datanode1:8649 hadoop-datanode2:8649&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;其中"hadoop-test"是集群名称，呆会要和客户端的gmond中配置的name要一致，后面多个机器名的话用空格隔开就可以了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;配置过配置文件以后，需要重启gmetad来应用配置。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.安装web&lt;/p&gt;&#xD;
&lt;p&gt;#rpm -Uvh ganglia-web-3.0.3-1.noarch.rpm&lt;/p&gt;&#xD;
&lt;p&gt;安装以后会在/var/www/html下面生成一个ganglia 的文件夹。&lt;/p&gt;&#xD;
&lt;p&gt;现在启动apache&lt;/p&gt;&#xD;
&lt;p&gt;#service httpd start&lt;/p&gt;&#xD;
&lt;p&gt;启动成功后，通过访问http://hadoop-namenode/ganglia就可以看到ganglia的首页了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;另外要通过yum install php-gd安装一个插件，如果没有这个插件，首页左下角会有一个饼图无法显示，也并不太影响使用。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;三、配置hadoop文件&lt;/p&gt;&#xD;
&lt;p&gt;找到hadoop根目录下的conf文件夹下的hadoop-metrics.properties文件&lt;/p&gt;&#xD;
&lt;p&gt;改成如下内容&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;# Configuration of the "dfs" context for ganglia&lt;/p&gt;&#xD;
&lt;p&gt;dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext&lt;/p&gt;&#xD;
&lt;p&gt;dfs.period=10&lt;/p&gt;&#xD;
&lt;p&gt;dfs.servers=239.2.11.71:8649&lt;/p&gt;&#xD;
&lt;p&gt;# Configuration of the "mapred" context for ganglia&lt;/p&gt;&#xD;
&lt;p&gt;mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext&lt;/p&gt;&#xD;
&lt;p&gt;mapred.period=10&lt;/p&gt;&#xD;
&lt;p&gt;mapred.servers=239.2.11.71:8649&lt;/p&gt;&#xD;
&lt;p&gt;# Configuration of the "jvm" context for ganglia&lt;/p&gt;&#xD;
&lt;p&gt;jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext&lt;/p&gt;&#xD;
&lt;p&gt;jvm.period=10&lt;/p&gt;&#xD;
&lt;p&gt;jvm.servers=239.2.11.71:8649&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注：239.2.11.71这个是ganglia用的多播的地址，不需要改成gmetad的服务器地址&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果需要监控hbase的话，也一样找到hbase目录下的这个文件，改法一样就不重复了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;改完以后重启hadoop服务&lt;/p&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lijun4017/aggbug/2135031.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lijun4017/archive/2011/08/11/2135031.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lijun4017/archive/2011/06/21/2086252.html</id><title type="text">关于拥有海量数据的电子商务网站的CRM系统建设底层存储实现的一点随想</title><summary type="text">最近在一直在研究hadoop的使用，主要是集中在数据仓库的应用这块。今天突然和一个业内的朋友聊起大型电子商务网站CRM系统建设的技术问题。CRM系统最基本的功能就是查询某个用户在我们网站进行的所有的操作，光这个需求，对于有千万级别用户的网站来说，设计起来就相当繁琐。比如查A用户在我们网站的所有交易订单记录，那么如果你是架构师，你会怎么设计?通常的想法还是按照用户建分库，分表，把不同的用户段的订单存放在不同的库中，从而可以拆分库的目的，这样从一定程度上来说确实可以解决问题，但是治标不治本，随着网站的继续交易，总有一天分库也会达到查询能力的极限，到时候只有继续拆分库，这是一个痛苦的轮回。今天我提出</summary><published>2011-06-21T09:35:00Z</published><updated>2011-06-21T09:35:00Z</updated><author><name>李梦蛟</name><uri>http://www.cnblogs.com/lijun4017/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lijun4017/archive/2011/06/21/2086252.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lijun4017/archive/2011/06/21/2086252.html"/><content type="html">&lt;p&gt;最近在一直在研究hadoop的使用，主要是集中在数据仓库的应用这块。今天突然和一个业内的朋友聊起大型电子商务网站CRM系统建设的技术问题。CRM系统最基本的功能就是查询某个用户在我们网站进行的所有的操作，光这个需求，对于有千万级别用户的网站来说，设计起来就相当繁琐。比如查A用户在我们网站的所有交易订单记录，那么如果你是架构师，你会怎么设计?&lt;/p&gt;&#xD;
&lt;p&gt;通常的想法还是按照用户建分库，分表，把不同的用户段的订单存放在不同的库中，从而可以拆分库的目的，这样从一定程度上来说确实可以解决问题，但是治标不治本，随着网站的继续交易，总有一天分库也会达到查询能力的极限，到时候只有继续拆分库，这是一个痛苦的轮回。&lt;/p&gt;&#xD;
&lt;p&gt;今天我提出的是一个基于hbase的新思维，关于hbase的介绍请参考淘宝的博客&lt;a href="http://www.tbdata.org/archives/1509"&gt;http://www.tbdata.org/archives/1509&lt;/a&gt;。&lt;/p&gt;&#xD;
&lt;p&gt;我们可以在hbase中建一个用户表，rowkey为用户id，userinfo列簇，orderinfo列簇&amp;hellip;&amp;hellip;其他列簇；&lt;/p&gt;&#xD;
&lt;p&gt;其中userinfo中存放用户的基本信息；&lt;/p&gt;&#xD;
&lt;p&gt;关键在于orderinfo列簇，在hbase的列簇中可以随意自定义列，我们可以把订单号作为列名，从而达到在一个列簇中存放用户的所有的订单信息；&lt;/p&gt;&#xD;
&lt;p&gt;示例数据如下：&lt;/p&gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;rowkey &lt;/td&gt;&#xD;
&lt;td&gt;userinfo&lt;/td&gt;&#xD;
&lt;td&gt;orderinfo&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;201010100001 &lt;/td&gt;&#xD;
&lt;td&gt; "id:201010100001" "name:张三" "sex:male" "age:19"&lt;/td&gt;&#xD;
&lt;td&gt;;"orderid0001:张三 2010年1月1日15：31 htc desire z 交易成功"&amp;nbsp;"orderid0002:张三 2010年1月2日15：31 ipad2 交易成功"&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;这样就可以快速使用程序从hbase中查询某一个用户的详细历史信息，orderinfo中每一笔订单中的信息可以采用一些分隔符来分割订单的具体的字段信息，展示的时候利用程序解析还原成结构化的订单信息。&lt;/p&gt;&#xD;
&lt;p&gt;这还只是我很初步的一个思路，并没有经过实际验证是否可行，欢迎各位博友拍砖。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lijun4017/aggbug/2086252.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lijun4017/archive/2011/06/21/2086252.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lijun4017/archive/2011/04/02/2003691.html</id><title type="text">hive 0.7.0 发布了</title><summary type="text">今天去关注了一下hadoop的官网，发现hive0.7.0发布了；其中有两个新特性非常有用，一个是可以创建索引了，另外一个是可以实现用户安全认证了。</summary><published>2011-04-02T08:18:00Z</published><updated>2011-04-02T08:18:00Z</updated><author><name>李梦蛟</name><uri>http://www.cnblogs.com/lijun4017/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lijun4017/archive/2011/04/02/2003691.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lijun4017/archive/2011/04/02/2003691.html"/><content type="html">&lt;p&gt;今天去关注了一下hadoop的官网，发现hive0.7.0发布了；&lt;/p&gt;&#xD;
&lt;p&gt;其中有两个新特性非常有用，一个是可以创建索引了，另外一个是可以实现用户安全认证了。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lijun4017/aggbug/2003691.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lijun4017/archive/2011/04/02/2003691.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lijun4017/archive/2010/09/08/1821546.html</id><title type="text">超级维度表处理（亿行数据级别）</title><summary type="text">最近在优化公司的数据仓库项目中ETL部分，发现有一处明显可以改进的地方，发出来和大家分享一下。在数据仓库中一个一个超级大维度表（1亿左右的记录），更新这个维度表的时候，采取的策略是最简单的1类渐变维度，即存在则更新，不存在则插入。原先的方式是在ETL过程中先查找这个大表本身，如果存在就打上update标记，不存在就打上insert标记，最后通过分支来分别插入和更新数据记录。每次执行这个job的时候...</summary><published>2010-09-08T08:04:00Z</published><updated>2010-09-08T08:04:00Z</updated><author><name>李梦蛟</name><uri>http://www.cnblogs.com/lijun4017/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lijun4017/archive/2010/09/08/1821546.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lijun4017/archive/2010/09/08/1821546.html"/><content type="html">&lt;p&gt;最近在优化公司的数据仓库项目中ETL部分，发现有一处明显可以改进的地方，发出来和大家分享一下。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在数据仓库中一个一个超级大维度表（1亿左右的记录），更新这个维度表的时候，采取的策略是最简单的1类渐变维度，即存在则更新，不存在则插入。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;原先的方式是在ETL过程中先查找这个大表本身，如果存在就打上update标记，不存在就打上insert标记，最后通过分支来分别插入和更新数据记录。每次执行这个job的时候，都要耗去相当多的时间，以前也没有想过去优化。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;研究了一下，这个维度表中含有创建时间和最近更新时间这两个字段，发现我只要通过判断这两个时间是否在同一天就可以判断是该插入还是该更新（这里说明一下，我们的数据仓库数据一天更新一次，增量更新的是前一天数据），这样就省去了大量的查找表操作，要知道到这么大一个表里面去频繁做lookup是非常低效的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;action，修改了程序，发现该job执行效率提升了60%，oh yeah。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这里前提是维度表中有创建时间和最近更新时间这两个字段，其实如果没有最近更新时间也是可以做到的，那么就需要另外存放一个值，每天跑这个job的时候，把这个值更新为数据所属的日期，那么这个日期就可以当成上面的最近更新时间来用。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lijun4017/aggbug/1821546.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lijun4017/archive/2010/09/08/1821546.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lijun4017/archive/2010/09/03/1817020.html</id><title type="text">推荐一个开源的web 分析工具</title><summary type="text">给大家推荐一款不错的开源web分析工具piwik。它的官网地址是http://www.piwik.org它的在线演示地址是http://demo.piwik.org/最近由于工作需要评估了一些web分析工具，其中当然缺少不了大名鼎鼎的Google Analytics，还有其他的百度统计和量子统计，另外还有几款开源的软件Open Web Analytics，piwik等。从功能面和易用性方面，当然G...</summary><published>2010-09-03T06:50:00Z</published><updated>2010-09-03T06:50:00Z</updated><author><name>李梦蛟</name><uri>http://www.cnblogs.com/lijun4017/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lijun4017/archive/2010/09/03/1817020.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lijun4017/archive/2010/09/03/1817020.html"/><content type="html">&lt;p&gt;给大家推荐一款不错的开源web分析工具piwik。&lt;br /&gt;它的官网地址是&lt;a href="http://www.piwik.org/"&gt;http://www.piwik.org&lt;/a&gt;&lt;br /&gt;它的在线演示地址是&lt;a href="http://demo.piwik.org/"&gt;http://demo.piwik.org/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最近由于工作需要评估了一些web分析工具，其中当然缺少不了大名鼎鼎的Google Analytics，还有其他的百度统计和量子统计，另外还有几款开源的软件Open Web Analytics，piwik等。从功能面和易用性方面，当然Google Analytics是当之无愧的NO1。但是公司考虑到数据依赖于第三方的安全性等因素，还是希望能够使用自己架设的开源软件的方式，毕竟自己对数据拥有所有权比较有安全感。&lt;/p&gt;&#xD;
&lt;p&gt;几款开源软件评估下来，感觉还是piwik的功能比较全面，易用性比较好，piwik的目标是做开源的Google Analytics，它是在phpmyvisit的基础上做的改进，基于插件的架构让你可以非常容易的开发自己的功能集成进去。&lt;/p&gt;&#xD;
&lt;p&gt;除此之外，piwik还为获取数据提供了非常方便的API方式，可以让外部程序方便的集成piwik的数据。&lt;/p&gt;&#xD;
&lt;p&gt;下面我们来show一下piwik的大概的功能。&lt;/p&gt;&#xD;
&lt;p&gt;首先是控制台，这个页面用户可以自定义查看哪些模块数据。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img width="600" src="http://pic002.cnblogs.com/img/lijun4017/201009/2010090314435913.jpg" height="400" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;然后是访问者的相关数据，这块功能有个亮点就是访问者记录，这块是Google Analytics没有的功能，百度统计和量子统计都有。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img width="600" src="http://pic002.cnblogs.com/img/lijun4017/201009/2010090314441896.jpg" height="400" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;接下来是点击密度图，这个插件piwik的官方版本是不自带的，我是从网上找来的，可见基于插件的设计还是很cool的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img width="600" src="http://pic002.cnblogs.com/img/lijun4017/201009/2010090314442790.jpg" height="400" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;下面是用户进入网站访问的一些网站内容的情况。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img width="600" src="http://pic002.cnblogs.com/img/lijun4017/201009/2010090314444083.jpg" height="400" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;下面是一些外部推荐网站和搜索引擎的相关数据。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img width="600" src="http://pic002.cnblogs.com/img/lijun4017/201009/2010090314444830.jpg" height="400" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;下面是目标的监控，也可以象Google Analytics那样去新增一个自己的目标去监控，但是不能像Google Analytics那样去为一个目标设置好多step。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img width="600" src="http://pic002.cnblogs.com/img/lijun4017/201009/2010090314445612.jpg" height="400" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;下面是管理员界面。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img width="600" src="http://pic002.cnblogs.com/img/lijun4017/201009/2010090314450565.jpg" height="400" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;总体而言，基本的功能都已经涵盖了，和Google Analytics相比，主要的缺陷在于没有比较强大的交叉分析功能，这个好像百度统计和量子统计都有这个问题。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lijun4017/aggbug/1817020.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lijun4017/archive/2010/09/03/1817020.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
