活动简介
熟悉Hadoop的人都知道Hadoop的两个重要特性HDFS跟Mapreduce,HDFS是分布式文件管理跟传统的共享文件方式有所区别,它主动备份容错存储均衡;Mapreduce是用户根据自己的实际场景对指定文件内容进行逐行操作,当然这里涉及一些代码写法的优化。
整体介绍完之后,谈谈Hadoop内部实现原理吧当然不会细化到具体某一行代码。先举个例子,如果现在有个文件10G大小,需要统计一下包含字母“OK”的行数,首先想到的方法就是读取文件然后逐行处理并且是在单机上,这样你的机器内存可能撑不下去,这个时候可能你会想如果不一次性把10G文件全部加载到内存中,而是分开加载呢,这就遇到了得对文件进行分割,手动复制分割?还是通过代码分割呢?最好是通过代码,不然你10G的文件在本地打开就得“半天”,提到代码必然想到java中的RandomAccessFile通过偏移量对文件进行分割生成多个文件,至此虽然生成了多个小文件但是还是在一台机器上执行,如果得用多个机器怎么办呢?而且我只想通过一台机器上点个按钮,所有机器都执行然后最后汇总内容。多个机器执行第一步,你得把刚刚分好的文件拷贝到多个机器上,然后对每台机器状态得有个“机器头头”负责监督吧,不然有机器偷懒或者有机器累死会影响最后的汇总结果。接着每个机器在收到它们的头头发送的指令之后开始逐个执行,最后将结果写成一个个的临时小文件,最后文件合并生成最后的结果。
看了上面的介绍,相信你已经对Hadoop的Mapreduce的过程有大致的了解了,这里抛砖引玉,如果各位有任何疑问都可以直接在本活动中提出,本次邀请的Hadoop技术专家美国队长(精通传统数据库Oracle,MySQL,分布式数据库greenplum跟vertica,大数据处理技术hadoop,hbase,hive,流式计算storm。)将在4月11日~4月25日期间对您提出的问题做持续的解答。
礼品
本次活动活动将评选出五个典型问题,问题的提出者将获得社区赠送的精美礼品一份。此外,对于在本场活动中点赞的会员,点赞十个以上将获得50社区金币,金币可用来下载资料,或是兑换社区商店的礼品。