Hadoop学习之内容概览

Background:第一次接触hadoop,之前总听说,也早早的列了学习计划,中途间间断断的看了官网文档,买了本书,太厚了,只看了封皮。终于今天有时间和兴趣,初窥门径,赶紧记下来。

Hadoop是什么?就是Apache Hadoop,一个大数据技术框架,Big Data一般指就是它了。

解决什么问题?这个也许是我最关系的问题了,其实官方文档里面没有讲太多,都是技术细节,这个就要搜索了。大概比较满意的答案是说,非结构化的数据,比如网页搜索引擎的检索结果,数据量很大的时候,用传统的数据库存储和处理就不太合适了,需要换个思路,就是Hadoop的思路,解决这类问题的。所以有时被贴上NoSQL的标签,其实和SQL没什么对立。参考:https://www.oreilly.com/ideas/what-is-hadoop

工作原理是啥?这个就是要研读官方文档了,也是最需要花时间的地方,这边就简单归纳一下吧。

大概分两块,基础软件包和开发接口。基础软件包是讲运行环境的搭建、安装、部署,是一个分布式文件系统,即HDFS,工作原理比较复杂,但技术核心也在这里。开发接口是讲怎么用的,Hadoop其实是面向技术人员的,是一个技术框架,所以落地是怎么用,就是MapReduce,这个接口需要运行在HDFS之上的,必须配套使用。

HDFS工作原理

HDFS Architecture

看上去比较复杂,的确复杂,不过和SAP NW思路有类似的地方,Datanodes可以理解为真正存数据的地方,类似于NW的servernode,Namenode可以理解为控制怎么存数的地方,类似于NW的message server和enqueue server。里面的Datanode里面绿色的block应该是划分的物理空间大小,比如128MB一个块。Client就是用户了,写操作是写多个地方的,读操作是读一个地方的。HDFS有冗余机制判断写多个地方成功几个算成功,好处就是不怕单点故障,这就是分布式的好处。并且HDFS有数据复制机制,增加数据存储的可靠性。

MapReduce工作原理

其实MapReduce即使一个Hadoop Job工作的2个阶段,第一个阶段是定义问题,就是Map,把Text中要关心的数据的Key定义出来。第二个阶段就归纳问题,就是Reduce,Job跑完Map接口后会跑Reduce,会基于Map阶段定义的Key Value,对相同的Key进行合并,所以合并完,结果集里面Key基本唯一了,复杂的场景可能要跑多轮,比如多个Reducer同时Reduce,第一轮每一个Reducer拿到的Map都是不全的,Reduce一遍之后,再集中Reduce一遍,得到最终的结果集,这是后Key就唯一了,任务就完成了,数据就可以被使用或消费了。

结尾,底层很多复杂的细节不再深究了。比如为了管理这套东西,提供的专门的一套命令行工具,就是Common。还有YARN,实现了资源和应用的全局管理。

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据