2010年12月

工作变动

近期,工作发生了两个很大的变动,可能会对以后产生很大的影响

如果干的好,会继续去干,如果干砸了,后果会很严重...

1. 组建运维组

     在qyb的规划下,Sohu的媒体技术中心和邮件一起组建运维组,由我带着几个兄弟去开展工作

     马上就要搬离Email部门了,还真是有些不舍得,自从加入Sohu,就一直在邮件中心工作

     突然脱离这个大家庭,还真有点不太适应,好在今后和Email还会有很多工作联系的

     加入运维组,基本上就说明今后不再参与开发的工作了,更多的是和服务器,系统打交道

     新的运维组的工作包括passport,pvinsight,服务器维护,监控,Hadoop计算平台等

2. 空降到福州出差

    由于福州那边负责技术的人最近离职了,造成那边的技术现在比较散,于是被qyb给派到那边去出差

     一去就要去3个月,郁闷啊,我的老婆孩子老妈都还在北京呢

     不过好在领导还有一些同情心,给我3次机会回北京.....

     前几天,赶紧到京东上订了2个摄像头,以备和儿子视频,以前还真从没有视频聊过天,呵呵

     今天晚上和那边的张总聊了聊,好有压力啊

     初步定在元月11日飞到福州

这2个事情,都是很棘手的事情,希望自己在今后这段时间内努力把这2个事情都做好....

     

HBase的性能优化和相关测试

HBase的写效率还是很高的,但其随机读取效率并不高

可以采取一些优化措施来提高其性能,如:

1. 启用lzo压缩,见这里

2. 增大hbase.regionserver.handler.count数为100

3. 增大hfile.block.cache.size为0.4,提高cache大小

4. 增大hbase.hstore.blockingStoreFiles为15

5. 启用BloomFilter,在HBase0,89中可以设置

6.Put时可以设置setAutoFlush为false,到一定数目后再flushCommits

 

在14个Region Server的集群上,新建立一个lzo压缩表

测试的Put和Get的性能如下:

1. Put数据:

单线程灌入1.4亿数据,共花费50分钟,每秒能达到4万个,这个性能确实很好了,不过插入的value比较小,只有不到几十个字节

多线程put,没有测试,因为单线程的效率已经相当高了

2. Get数据:

在没有任何Block Cache,而且是Random Read的情况:

单线程平均每秒只能到250个左右

6个线程平均每秒能达到1100个左右

16个线程平均每秒能达到2500个左右

有BlockCache(曾经get过对应的row,而且还在cache中)的情况:

单线程平均每秒能到3600个左右

6个线程平均每秒能达到1.2万个左右

16个线程平均每秒能达到2.5万个左右

Hadoop集群中增加新节点

向一个正在运行的Hadoop集群中增加几个新的Nodes

1. 新节点上部署java/hadoop程序,配置相应的环境变量

2. 新节点上增加用户,从master上拷贝id_rsa.pub并配置authorized_keys

3. 新节点上设置host,需要有集群中各节点的host对应

4. 新节点上建立相关的目录,并修改属主

5. master的slaves文件中增加上相的节点,master上增加相应的host

6. 在新节点上启动datanode和tasktracker

/opt/sohuhadoop/hadoop/bin/hadoop-daemon.sh start datanode
/opt/sohuhadoop/hadoop/bin/hadoop-daemon.sh start tasktracker

7. 进行block块的均衡

在hdfs-site.xml中增加设置balance的带宽,默认只有1M:

<property>
    <name>dfs.balance.bandwidthPerSec</name>
    <value>10485760</value>
    <description>
        Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second.
    </description>
</property>

运行以下命令:

/opt/sohuhadoop/hadoop/bin/start-balancer.sh -threshold 3

均衡10个节点,移动400G数据,大概花费了3个小时

The cluster is balanced. Exiting...
Balancing took 2.9950980555555557 hours

利用Decommission从Hadoop集群中Remove节点

我们现有的Hadoop集群已经运行了一段时间了

由于集群中的服务器分布在2个不同的机房,受跨机房带宽的限制

集群中在2个机房之间的数据传输很慢

所以想把另一个机房的3台服务器从Hadoop集群中去掉

Hadoop提供了Decommission的特性,可以按照以下步骤来操作:

1. 在hadoop的conf目录下生成一个excludes的文件,写上需要remove的节点ip

    一个节点一行,注意要写ip,不能写Hostname,如:

10.15.10.41
10.15.10.42
10.15.10.43

2. 在hdfs-site.xml中增加配置:

<property>   
    <name>dfs.hosts.exclude</name>   
    <value>/opt/sohuhadoop/conf/excludes</value>   
    <final>true</final>
</property>

3. 复制以上2个文件到集群各节点上

4. 执行hadoop dfsadmin -refreshNodes命令,它会在后台进行Block块的移动

    从移出的Nodes上移动到其它的Nodes上面

5. 通过以下2种方式查看Decommission的状态:

    hadoop dfsadmin -report

    http://10.10.71.220:50070/dfsnodelist.jsp

    正在执行Decommission,会显示:

    Decommission Status : Decommission in progress

    执行完毕后,会显示:

    Decommission Status : Decommissioned

Velocity会议的一点小结

前2天,去参加了Velocity Web性能和运维大会,听了不少的讲座

有一些讲座还是不错的,感觉能收获不少东西,像FaceBookYahooTaobao...

也有不少,听了后基本没啥收获,有些是一些理论性的东西,框架性的东西,和实际应用完全不搭边,听了后也没啥感觉

总体感觉:这个会还是不错的,去参加还是挺值得的

下面是我总结的几点,可能对我们有用的东西:

1.  Lvs + KeepAlived做负载均衡,实现F5的功能。DBA那边现在据说是在尝试使用KeepAlived做数据库的故障自动切换

2.  Cache,不光是服务器端的缓存(有效利用新机器的大内存),Client端也可以多Cache一些东西,提高响应速度。Taobao说他们的一些后端Cache命中率能达到98%

3.  多使用YSlowPageSpeed工具做前端性能调优,利用webpagetest.org去测试自己的页面

4.  BigPipe,可以尝试下FaceBook的这个技术,将大页面划分为一个一个的pagelet,然后并行输出和render

5.  合并一些http请求,尽量减少请求数量,mail中需要做很多改进,像udisk,mobile,passport,vote...

6.  前端js的打包,拆分策略,并不是包越少越好,需要根据各js的用途,还有log信息去分析,如何合并js,使用户尽快进到欢迎页面...

7.  尽量使用无阻塞的js,让页面元素去并行的加载(可以结合页面的WaterFall图去改进),尽快将部分页面呈现给用户

8.  严格控制cookie数量,减小cookie的大小,可以尝试服务器端的session去代替一些cookie。也许可以借鉴下FaceBook经验,写一个小程序自动清除不认识的cookie...

9.  Prefetch预加载策略,并不是所有人,在任何时间段都需要预加载,要根据用户的活跃情况,服务器的负载,用户的终端(比如通过3G上网卡上网)等来确定是否预加载。在mail中,是否所有用户都需要预加载第二页的列表呢?也许只有第一页中有未显示完的未读邮件,才需要去preload第二页...

10.前端优化是一个长期的工作,需要坚持,并不断的改进提高...

最后还有很重要的一点,就是Innovation(创新)

像FaceBook提出的Quickling, BigPipe等一些理论

听了人家的讲解后,发现也挺简单的

但最关键的问题是它们有效的组合了现有的技术

创造性的提出想法,并实施,最终提高Web的性能,这就是创新...

最新文章

最近回复

  • feifei435:这两个URI实际是不一样的
  • zsy: git push origin 分支 -f 给力!
  • 冼敏兵:简单易懂,good fit
  • Jack:无需改配置文件,看着累! # gluster volume se...
  • Mr.j:按照你的方法凑效了,折腾死了。。。。
  • zheyemaster:补充一句:我的网站路径:D:\wamp\www ~~菜鸟站长, ...
  • zheyemaster:wamp2.5(apache2.4.9)下局域网访问403错误的...
  • Git中pull对比fetch和merge | 炼似春秋:[…] 首先,我搜索了git pull和git fe...
  • higkoo:总结一下吧, 性能调优示例: gluster volume s...
  • knowaeap:请问一下博主,你维护的openyoudao支持opensuse吗

分类

归档

其它