这里写下我在过去半年中对云计算的认识,与大家分享!

基础

谈云计算的商业模式、系统架构时,用SaaS、PaaS、IaaS这些概念;
谈云计算的落地、技术实现时,用hadoop生态系统的开源组件。

在Hadoop的生态系统中,DFS和MapReduce无疑是最为基础的,了解它们的原理与机制成为了进入云计算编程领域的敲门砖。DPaaS也仅仅对DFS和MapReduce部分原理和机制的探索,当然还有HBase和ZooKeeper。随着深入的学习,以及在工作讨论中所遇到的问题,有时候会觉得,Hadoop、HBase这些东西越来越像Struts、String、Hibernate等框架,Hadoop使得数据具有分布式的处理能力。就像当年Google推广了Ajax技术,对于Ajax学习而言,掌握JavaScript基础后对于学习Ajax是件很自然的事,Ajax使得页面可异步、多线程化,同样也把JavaScript技术推向了高峰。由此可见,在技术领域中,不管是高门槛,还是新瓶旧酒,计算机相关的基础原理永远都值得去巩固。只有基础扎实了,才不会患得患失,才能大胆创新。

这些基础包括:
  • 操作系统:Linux
  • 计算机网络:TCP/IP
  • 数据库:oracle、mysql
  • 数据结构与算法
  • 分析与设计的能力
  • 分布式
  • 虚拟化
  • (大家补充)

写在Hadoop 2.0 GA发布之前

目前Hadoop 2.x只有alpha版,令人期待的是,2.x解决了在1.x的Namenode HA和内存瓶颈问题,而这两个问题在实时性要求高的生产环境中是必须解决的。除了等待2.xGA版的发布(大约半年后),当然也要关注生态系统上的其他重要组件是否对新版本的支持,以下是目前的支持情况:
  • HBase:当前版本0.94.5,不支持hadoop2,未来0.96.0版本会支持hadoop2,参考https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Aversions-panel
  • Hive:当前版本0.10.0,支持hadoop2,参考http://hive.apache.org/releases.html
另外,Cloudera在其Hadoop的发型版本CHD4中已支持Hadoop1和Hadoop2。


HBase客户端连接工具

传统关系型数据库有很多客户端管理工具,例如PL/SQL Developer、Toad、DbVisualizer等等,这些工具大大方便了日常的开发和管理工作。惯性思维,我从接触HBase起,就开始寻找HBase Manager之类的桌面客户端管理工具。结果很失望,这方面的信息很少,许多开发者也不关注这个。经过几轮的搜索,还是有些工具值得关注,虽然不太令人满意:
  • h-rider:https://github.com/NiceSystems/hrider
  • HBase Manager:http://sourceforge.net/projects/hbasemanagergui/files/?source=navbar
  • DBeaver:http://dbeaver.jkiss.org/(已支持 Apache Cassandra,未来将会支持HBase)
其实我们是完全有能力开发HBase的管理工具,无论是Web版,还是桌面版,然后将这些管理工具合并到管理平台上,既深入掌握了HBase, 又强化了产品功能。


社区与开发者

EasyHadoop社区在中国举办了7次活动,算是最有影响力的社区了,有很多开发者在活动中分享了宝贵的实战经验,干货还是很多的。但最近发现EasyHadoop开始大力发展培训业务,商业模式很明显,上次跟几个同事到华师参加EasyHadoop在广州分场的活动,结果很失望,后来在线观看了北京主会场的内容才有点收获。因此,不是任何的社区活动都值得你去参与,报名参加之前要权衡一下。

身边活跃的开发者就更少了,还不如到Stack Overflow上泡一下,不过,上网还是能够找到不少的搞云计算的博主,阅读他们的文章,并向他们提出问题,在目前来说,其实是一个很好的交流形式。如果博主没有及时回复你的问题,建议直接发邮件。


如何学习——面向问题

刚接触云计算时,确实不知道如何入手,项目组也没有明确的目标,茫茫大海中不知所措。当然后来明确了首先要解决云存储问题,不过直到这之前,咱们已经晕了好几回。事实就是这样,在一路的探索中,还是了解许多概念,以及隐藏在背后的知识,这样我才明白了要学什么。我觉得带着问题去研究新技术是一个很不错的方法,例如我们列出了以下需要攻克的问题,这些问题不仅仅让我们认识到学习的迫切性,也明确了目标。

表:问题清单



如何交流

上面提过线上的交流途径,在实际工作中,同事之间各自忙碌,技术交流的机会变得很少了。幸好有项目领导提倡小组讨论,即要求主动看书学习,也要求每逢周五下午进行技术主题研究成果分享。通过办公室里的一块打白板,让讨论交流中既动口也“动手”,看起来都觉得很过瘾。


个人研究成果汇总
  1. HadoopHBaseZooKeeper配置整理
  2. REST在PaaS平台的应用以及REST开源项目选型(doc1doc2
  3. 网页版网盘演示系统开发(模仿360云盘)
  4. MapReduce运行机制与部署流程
  5. DPaaS管理平台开发,主要涉及主机管理、分布式组件自动部署、节点管理与监控、MapReduce安装运行
  6. Hadoop小文件管理问题
  7. Apach Thrift研究(编写部分开发规范,已中止)
  8. Hadoop监控方法:JMX、Metrics、Ganglia和Nagios(了解,未实施)
  9. Cloudera产品分析
  10. EasyHadoop产品分析(已中止)
  11. 《DPaaS需求说明书》
  12. 《ExDPaaS研发计划》
备注:以上链接将会打开公司的Project网站,外网不能访问。


学习资源汇总
  1. 书籍:Hadoop书籍和网络资源介绍 (电子书网上都能够找到)
  2. 视频:
  3. 博客:
    • yangjl38的专栏:http://blog.csdn.net/yangjl38
    • 邓侃_新浪博客:http://blog.sina.com.cn/kdeng
    • 董的博客:http://dongxicheng.org/(强烈推荐)
    • 趋势云科技:http://www.spnguru.com/
    • NoSQLFan:http://blog.nosqlfan.com/
    • 搜索技术博客-淘宝:http://www.searchtb.com/
    • 阿里集团数据平台官方博客:http://www.alidata.org/archives
    • 阿里技术嘉年华:http://adc.taobao.com/carnival/#idata_hash
    • 百度技术沙龙:http://www.infoq.com/cn/zones/baidu-salon/index.html

    • Cloudera:http://blog.cloudera.com/blog/(强烈推荐)
    • Yahoo! Hadoop Blog:http://developer.yahoo.com/blogs/hadoop/
  4. 社区:
    • EasyHadoop 开源技术社区:http://bbs.easyhadoop.com/forum.php
    • Hadoop技术论坛:http://www.hadoopor.com/
    • 中国云计算论坛:http://bbs.chinacloud.cn/
  5. 云服务:
    • Sina App Engine:http://sae.sina.com.cn/
    • 百度开发者中心:http://developer.baidu.com/
    • 阿里云:http://www.aliyun.com/
    • 盛大云计算:http://www.grandcloud.cn/
    • Google App Engine
    • Amazon Web Services


Logo

开源、云原生的融合云平台

更多推荐