很高兴最后一个日常能接触跟hadoop应用相关的一些知识,当然最重要的是想给大家一个分享:
说起来吓死人,跟云梯相关,扯的是淘宝全网的数据,其实是一个很简单的东西,希望通过我的分享,大家也能掌握如此技能,或者更深一步地往下走。
Hadoop是什么?一只玩具象的名字,作者的儿子的玩具象。叫什么不重要,重要的是这玩意儿到底能给咱提供点啥,做点啥。
很可惜,咱们只是应用层的,没有环境搭建和配置等等好玩的东西可以去玩玩,有兴趣的话可以自己在自己的机器上弄一个伪分布式环境爽一把,最好是linux哦~亲!
Hadoop可以做的事情蛮多,我们常听的就是map/reduce这两项操作了,其实再说得直白一点就是:编号/汇总。啥分布式/集群不是什么了不起高深的东西,就是找个东西把N台服务器组织起来更好地提供服务。而hadoop就是这么样一个东西,当买来N太优良服务器的时候,我们需要给每台服务器装一个linux/unix操作系统并连上网,然后在里面装上JDK再弄上ssh服务,最后装上hadoop,然后弄好配置,然后一个完整的hadoop集群环境就能为你服务了。
为啥要编号/汇总?为什么人民币只有1/2/5/10这么几种面值?怎么没有11块的人民币?有,肯定是假币。这是为了方便使用。当数据繁杂的时候,我们不光要考虑数据存储的问题,因为数据存储是能用钱解决的问题,不就是买服务器么,咱不缺钱。如果存着的东西没有价值不如不存,存的目的是以备不时之需,等需要的时候取出来。既然1/2/5/10这么几种面值就能拼出其他所有面值,干嘛还非得弄个十一块呢?其他的数据都是没有价值的。然后马上就有人来问,为啥不是只有一块,请问咱们买电脑的时候用过几千张一块么?人要懂得权衡利弊,取最合适的。你为人民币设计者省事还得为自己省事,还得为钱的存储空间发愁啊。
Hadoop最经典的例子是word count,话说这样的程序很多人都写过,用一个map很容易就能实现,word当key,count当value遇到存在的word就++;这就是hadoop里面的map原型。而reduce就是根据你的需求来的了,word count嘛有个value值统计出来就好了,于是你就在reduce里面把key /value都对应地保存起来就好了。
而本次我实现的应用是进行卖家分类,按照信用等级来的。于是,信用等级为key卖家ID为value,map的时候,N个在同一区间的ID映射到同一个key,然后在reduce的时候把同一个key值的ID放到同一个文件夹,OK任务完成。
另外几个值得注意的地方可以让大家少走些弯路:
1. 认真观察你要使用的数据的数据结构,先做好人工的数据分析,数据提取,就是手动扒几行来看看
2. 在扒数据的过程中会看到诸如数据存储格式等等的各种问题,看到一点记录一点,后面的配置过程中用得着
3. 做完之后最好能有个分享,因为能把一个东西用好不是一天两天的事情,大家同在一个部门,共同进步才好
额,应用层其实满肤浅,但是也必不可少,没有需求就没有人类的发展,世界的进步,欲望无止境,所以人类会不停地进步。
看上去是一个很简单的东西,但是hadoop帮我们完成了很多很多,比如数据分布在一个大的集群中的时候,每台机器怎么协同合作,结果汇总?怎么提高利用效率,怎么进行并行计算?等等等等,根本就不是我辈小程序员可以弄得出来的。如果想做技术男,请深入了解,这是对hadoop这款产品最好的尊重方式。
具体怎么搞:http://hadoop.apache.org/common/docs/r0.19.2/cn/这里全有,至于我的源代码什么的,由于涉及到淘宝的云梯数据,所以不能一并流出…