前些日子拖着病躯参加了一个北京的Hadoop User Group聚会,可以用“不虚此行来”形容。见到两位大大:负责Facebook总部backend工作的Shao Zheng和Yahoo北京研发中心首席架构师Zheng Hao。他们分别对各自在hadoop上面的工作做了介绍,让我们了解到Facebook, Yahoo使用hadoop的情况。
Hadoop是一个apache基金的项目,表面上来看是实现一个开源的GoogleFS BigTable,实际现在已经发展得有自己的特色并且希望能解决更多的应用问题。
Hadoop目前多用于后端数据统计分析等工作。此类工作的特点是数据量大,计算量大;数据写入后不变化;读取数据时多用顺序读取,很少使用随机读取;需要快速计算得到所需要的结果。
目前硬件环境的瓶颈主要在于磁盘I/O,所以利用分布式计算来进行并行计算,提高计算效率。为此,数据存储下来是不移动的,每台机器负责自己拥有的部分数据计算,这样在这上面就要实现MapReduce。
何为MapReduce? 如果你熟悉Linux下的指令的话,也许你曾经为了统计已经用过下面的命令:
“cat 日志文件.log | grep 检索条件 | sort |uniq -c > 输出”
这就是MapReduce的本质,只是将上面的步骤分拆到不同的机器同时运算而已。
Hadoop有几个子项目,分别处理不同的细节问题。Shao Zheng负责的是Hive,它是Facebook提交并维护的一个基于Hadoop的简易查询语句转换器。实际上可以理解为SQL on top of Hadoop。Zheng Hao介绍的Pig是Yahoo编写的查询语言,也是用于Hadoop中的数据查询。两个子项目都是为了将用户的查询需求变成MapReduce然后再进入Hadoop进行实际的运算。只是前者将通用的SQL来进行转换,后者使用自己定义的一套查询语法来查询。各有千秋。
我非常喜欢老外的思路,Hadoop项目组认为,效率不是问题,先要将思路走通。假设整体架构是可行的,如果那个地方有效率问题,采用不同的技术、硬件或者算法可以改善,那么整体系统都会得以提升。所以我也认同不要有事儿没事儿就批判Hadoop效率不行。起码这个项目一直在进步,有很多人参与进来贡献自己的力量,比起一个深思熟虑解决好效率问题几个苦力完成的私有解决方案要强大得多,三个臭皮匠还能顶一个诸葛亮呢。莫要忽视开源社区的力量,现在Hadoop的问题大家都能看到,每个人都在想办法解决,因此它会越来越好的。
Hadoop不是万能,我建议大家刚接触这个项目的话就将它应用于统计分析或类似的应用,如果你对Hadoop不是很熟悉的话,暂时不要尝试想Hadoop还能做什么这个问题,因为我认为在整体架构和社区任务计划不了解的情况下,很难做出这样的判断。很容易得出Hadoop不好,Hadoop不好用的结论。这些事情还是交给Hadoop解决方案专家或者顾问来做比较好。
废话了这么多,算是我自己的发泄,贴张聚会的照片,看看我在那个位置?












